前言

昨天的内容没有完成今天花了点时间继续完成了 感觉自己的学习效率太低了!想办法提高学习效率吧 嗯 ,再制定下今天的目标 开始健身。

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模块)的更多相关文章

  1. 十大web安全扫描工具

    本文来源:绿盟整理  <十大web安全扫描工具> 十大web安全扫描工具 扫描程序可以在帮助造我们造就安全的Web 站点上助一臂之力,也就是说在黑客"黑"你之前, 先测 ...

  2. Python核心编程第二版(中文).pdf 目录整理

    python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源  :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...

  3. 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

    目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...

  4. python网络编程(六)---web客户端访问

    1.获取web页面 urllib2 支持任何协议的工作---不仅仅是http,还包括FTP,Gopher. import urllib2 req=urllib2.Request('http://www ...

  5. python网络编程(十)

    select版-TCP服务器 1. select 原理 在多路复用的模型中,比较常用的有select模型和epoll模型.这两个都是系统接口,由操作系统提供.当然,Python的select模块进行了 ...

  6. python系统编程(十二)

    异步 同步调用就是你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去 异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了. from m ...

  7. python系统编程(十)

    多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? #coding=utf-8 import threading import ti ...

  8. python网络编程(十二)

    协程 协程,又称微线程,纤程.英文名Coroutine. 协程是啥 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元. 为啥说他是一个执行单元,因为他自带CPU上下文.这样只要在合适的时 ...

  9. python核心编程学习记录之Web编程

    cgi未完待续

随机推荐

  1. CentOS 8 关闭防火墙

    SELINUX=disabled vim /etc/selinux/config systemctl disable firewalld.service

  2. collection v1.3.1升级全记录

    collection v1.3.1升级全记录 项目地址: https://github.com/jianfengye/collection 欢迎star. collection 手册地址: http: ...

  3. shell中将带分隔符的字符串转为数组

    shell中将字符串列表转换成数组,需要将数组用括号来表示,元素用"空格"符号分割开,格式如下: array_name=(value1 ... valuen) 使用内置的分割符IF ...

  4. 使用 Azure静态web应用+Github全自动部署VUE站点

    什么事Azure静态web应用 Azure 静态 Web 应用是一种服务,可从 GitHub 存储库自动构建完整的堆栈 Web 应用,并将其部署到 Azure,目前它还是预览版. Azure 静态 W ...

  5. 利用Gitee转接GitHub下载加速 简简单单 - 快快乐乐

    利用Gitee转接GitHub下载加速 简简单单 - 快快乐乐 JERRY_Z. ~ 2020 / 10 / 26 转载请注明出处!️ 目录 利用Gitee转接GitHub下载加速 简简单单 - 快快 ...

  6. vue项目 封装api

    设计思路 为了加强项目的可维护性,建议将请求接口api进行统一封装, 一个常规项目的基础地址一般为唯一,所以考虑将基础地址设定一个变量 let  baseUrl: "xxxxxx" ...

  7. viewpager欢迎页面底部点的滑动效果

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layo ...

  8. elementui中弹出框不能自动换行的解决方案

    我们的需求是将客户给的这串无头脑的数据放进这个弹出框?! 可以看到element提供的弹出框并不提供换行的功能 所以这时候我们应该咋整呢?? 我试过了在这个弹出框中套个盒子给盒子添加宽?然后他自己就折 ...

  9. Luogu P4546 [THUWC2017]在美妙的数学王国中畅游

    题意 题意奇奇怪怪,这里就不写了. \(\texttt{Data Range:}1\leq n\leq 10^5,1\leq m\leq 2\times 10^5\) 题解 为什么你们都是卡在数学方面 ...

  10. 快来,我悄悄的给你说几个HashCode的破事。

    这是why技术的第 72 篇原创文章 Hash冲突是怎么回事 在这个文章正式开始之前,先几句话把这个问题说清楚了:我们常说的 Hash 冲突到底是怎么回事? 直接上个图片: 你说你看到这个图片的时候想 ...