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未完待续
随机推荐
- C# 将Excel里面的数据填充到DataSet中
/// <summary> /// 将Excel表里的数据填充到DataSet中 /// </summary> /// <param name="filenam ...
- Asp.Net Core如何根据数据库自动生成实体类
通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...
- python第三章:函数
在前面章节中,介绍了一些input(),print(),len()等内建函数,还有random,math等标准库相关函数,这些都是可以直接使用的,但是很多时候,我们也是可以编写自己的函数. 看个例子: ...
- Vue 过滤器入门
Vue 允许自定义过滤器,可被用于一些常见的文本格式化 过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 过滤器应该被添加在JavaScript表达式的尾部,由"管道" ...
- Docker的介绍与安装教程
基于Windows系统下docker的介绍与安装教程以及更换docker镜像源教程 目录 基于Windows系统下docker的介绍与安装教程以及更换docker镜像源教程 Docker的核心概念 D ...
- vue 路由知识点(一级路由与二级路由嵌套)
本人小白一个,如果问题,麻烦大神指点, 一级路由: path:'/' 默认为显示; 二级路由: path: '',默认显示为index组件,因为二级路有没有写index组件,所以使用redirect: ...
- vue 404
问题描述:前端同事使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx.部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所 ...
- 爬虫双色球所有的历史数据并保存到SQLite
前言 上一篇介绍了双色球走势图是怎么实现的,这一篇介绍怎么实现爬虫所有的双色球历史数据,也可以同步分享怎么同步福彩3D数据.采用的C#来实现的. 同步双色球的地址:https://datachart. ...
- 【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
FROM:http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/windows ...
- TCP 队列溢出了
一.TCP 队列 1.syns queue:半连接队列 TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时 ...