python-网络安全编程第十天(web目录扫描&&fake_useragent模块&&optionParser模块)
前言


昨天的内容没有完成今天花了点时间继续完成了 感觉自己的学习效率太低了!想办法提高学习效率吧 嗯 ,再制定下今天的目标 开始健身。
python fake_useragent模块
1.UserAgent
userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。
2. fake_useragent
fake_useragent是一个集成了市面上大部分的user-agent,可以指定浏览器,也可随机生成任意一个
在工作中进行爬虫时,经常会需要提供User-Agent,如果不提供User-Agent,会导致爬虫在请求网页时,请求失败,所以需要大量User-Agent。如何生成合法的User-Agent?
使用fake-useragent库就可以解决该问题。
3.fake_useragent简单使用
示例代码1:
简单打印出几个user-agent
from fake_useragent import UserAgent
ua=UserAgent() #实例化 print(ua.ie) #随机打印一个ie浏览器的User-Agent
print(ua.random)#随机打印一个User-Agent
输出结果:

示例代码2:
将useragent带入到header请求头里面进行http请求
from fake_useragent import UserAgent
import requests
ua=UserAgent() #实例化 url="http://baidu.com"
ua=str(ua.random)
headers={'User-Agent':ua} r=requests.get(url=url,headers=headers)
print(r.url)
print(r.headers)
请求结果:

Python-optionParser模块
代码:
from optparse import OptionParser
parser=OptionParser() #dest是存储变量的 default是缺省值 help是帮助提示
#使用add_option()加入选项
parser.add_option("-u","--url",dest="url",help='target url for scan')
parser.add_option("-f","--file",dest="ext",help="target url ext")
parser.add_option("-t","--thread",dest="count",default=10,help="scan thread_count")
#最后通过parse_args()函数的解析
(options,args)=parser.parse_args() #当option.url 和option.ext里面的值都为真是则继续执行里面的函数
if options.url and options.ext:
print(options.url)
print(options.ext)
print(options.count)
else:
parser.print_help()
正常使用我们在cmd命令界面调用一一输入我们的值即可正常运行

如果没有输入值则会打印出我们定义的help里面的信息

输入-help参数也会打印help信息

参考学习:https://blog.csdn.net/lwnylslwnyls/article/details/8199454
web目录扫描器
代码:
import requests
import queue
import sys
import threading
#from agent_proxy import USER_AGENT_LIST
from fake_useragent import UserAgent
queue=queue.Queue()
from optparse import OptionParser
import sys class DirScan(threading.Thread):
def __init__(self,queue):
threading.Thread.__init__(self)
self._queue=queue def run(self):
while not self._queue.empty():
url=self._queue.get() try: ua=UserAgent()
ua1=str(ua.random) headers={'User-Agent':ua1}
r=requests.get(url=url,headers=headers,timeout=8) if r.status_code==200:
print(r.url)
#sys.stdout.write('\r'+'[*]%s\t\t'%(url))
f=open('result.html','a+')
f.write('<a href="'+url+'" target="_blank">'+url+'</a>')
f.write('\r\n<br>')
f.close except Exception as e:
pass def start(url,ext,count): f=open('result.html','w')
f.close() f=open('./dics/%s.txt'%ext,'r') for i in f:
queue.put(url+i.rstrip('\n')) #
threads=[]
thread_count=int(count)
#
for i in range(thread_count):
threads.append(DirScan(queue))
for t in threads:
t.start()
for t in threads:
t.join()
##
#
#start("http://www.dokocom.com",'asp','10'); if __name__=='__main__':
print("=====================================\n榆林学院信息安全协会开发V1.0\n超级高速web目录敏感扫描器\n=====================================\n") parser=OptionParser()
# parser=OptionParser()
parser.add_option("-u","--url",dest="url",help='target url for scan')
parser.add_option("-f","--file",dest="ext",help="target url ext")
parser.add_option("-t","--thread",dest="count",default=10,help="scan thread_count")
(options,args)=parser.parse_args() if options.url and options.ext:
start(options.url,options.ext,options.count);
sys.exit(1)
else:
parser.print_help()
sys.exit(1)
#
使用方法:
使用方法:python Scan.py http:xxx.com -f asp -t 20
-f: 脚本类型
-t :线程数

如果输入有误提示使用方式:

会在程序当前目录下生成result.html文件 打开就是扫描的结果

python-网络安全编程第十天(web目录扫描&&fake_useragent模块&&optionParser模块)的更多相关文章
- 十大web安全扫描工具
本文来源:绿盟整理 <十大web安全扫描工具> 十大web安全扫描工具 扫描程序可以在帮助造我们造就安全的Web 站点上助一臂之力,也就是说在黑客"黑"你之前, 先测 ...
- Python核心编程第二版(中文).pdf 目录整理
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
- 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录
目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...
- python网络编程(六)---web客户端访问
1.获取web页面 urllib2 支持任何协议的工作---不仅仅是http,还包括FTP,Gopher. import urllib2 req=urllib2.Request('http://www ...
- python网络编程(十)
select版-TCP服务器 1. select 原理 在多路复用的模型中,比较常用的有select模型和epoll模型.这两个都是系统接口,由操作系统提供.当然,Python的select模块进行了 ...
- python系统编程(十二)
异步 同步调用就是你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去 异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了. from m ...
- python系统编程(十)
多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? #coding=utf-8 import threading import ti ...
- python网络编程(十二)
协程 协程,又称微线程,纤程.英文名Coroutine. 协程是啥 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元. 为啥说他是一个执行单元,因为他自带CPU上下文.这样只要在合适的时 ...
- python核心编程学习记录之Web编程
cgi未完待续
随机推荐
- 手把手教你如何制作和使用lib和dll
本文的内容经过本人亲自调试,确保可用,实用,测试环境为win10+vs2015+C++ 目录 静态库 什么是静态库? 怎么创建 如何使用 静态库的第一种使用方法 静态库的第二种使用方法 动态链接库 动 ...
- css和js实现硬件加速渲染自定义滚动条
听别人说用CSS的变换来实现渲染有硬件加速的效果,看到很多大网站都开始陆续使用上了,我也来说说怎么做,我这边实现的滚动条有自然滚动效果,看起来比较自然,说的再多不如直接写,让我们开始吧! 我们需要自己 ...
- 十年老苹果(A1286)强升Catalina及Win10踩坑记(续)
背景 自上次发布十年老苹果(A1286)强升Catalina及Win10踩坑记以来,因为后半部分-----系统安装上的细节描述过于简略,一些朋友在安装过程中总是又遇到坑,由此特意详述这一过程,让园友少 ...
- LinkedHashMap 实现LRU缓存
date: 2020-07-09 13:52:00 updated: 2020-07-21 17:40:00 LinkedHashMap 实现LRU缓存 参考 LinkedHashMap是HashMa ...
- java如何实现一个Future
实现Futrue接口 public class MsgFuture<V> implements java.util.concurrent.Future<V> { ... ... ...
- origin把点图和线图放在一起
首先分别做好点图和线图在两个graph中,然后选中其中一副图(点图或者线图),然后按下图选择: 如果有多个图,可以在弹出窗口中选择多个sheet.
- OAuth2 快速入门
1 OAuth简述 OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是充当)资源拥有者去访问资源拥有者的资源.应用向资源拥有者请求授权,然后取得令牌(token),并用它来访问资源,并且资 ...
- SDOI征途--斜率优化
题目描述 给定长为 n 的数列 a, 要求划分成 m 段,使得方差最小, 输出方差\(*m^2\) 题解 斜率优化好题 准备部分 设第 i 段长为 \(len_i\) 先考虑方差(\(S^2\))的式 ...
- 微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用)
微信小程序--基于ColorUI构建皮皮虾短视频去水印组件(仅供学习使用) 没错,我是皮友,我想学习舞蹈(/doge)和瑜伽 ,要无水印的那种有助于我加深学习. 1.组件效果展示 2.组件引入准备 h ...
- 模块导入from collections import Iterator,Iterable失败
1.引入模块报错 from collections import Iterator,Iterable 报错: DeprecationWarning: Using or importing the AB ...