使用asyncio和aiohttp执行异步HTTP请求的简单模块
asyhttp的Python项目详细描述
这是asyhttp,一个使用asyncio和aiohttp执行异步HTTP请求的简单模块。在
它提供了一种简单的方法来执行一组异步HTTP请求。在
特点
- 代理支持
- 自定义标题
- 允许重定向
- 使用TLS
如何使用loop()
asyhttp loop()接受一些args
- urls一组字典,每个dict表示一个HTTP请求。在
- proxy(str)proxt URL,str(可选)。在
- process_out一个用户定义的函数,可用于处理每个HTTP请求的响应。 一旦响应到达(可选),将由执行每个HTTP请求的异步函数调用它。在
- redirects(bool)–如果设置为True,则遵循重定向。默认为False(可选)。在
- verify_tls(bool)check TLS cert validation为True,默认情况下为False(可选)。在
入门
fromasyhttpimportlooprequests=[{'url':'http://exam.ple/page.html','method':'GET'},{'url':'http://exam.ple/page.html','method':'POST','body':'blabla'}]loop(urls=requests)
用例
asyhttp循环对于编写针对易受攻击系统的快速暴力非常有用 或者作为dirfister等工具的核心。在
此代码的早期版本来自https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html
文件
处理HTTP响应
默认情况下,asyhttp循环打印stdout HTTP状态代码和接收到的每个响应的原因。 您可以重写它的默认行为,编写自定义代码来处理HTTP请求的响应。 你的代码必须写在一个函数中,并作为一个名为process\u out的kwarg传递给循环。 该函数将由执行每个HTTP请求的异步函数调用, 一旦得到答复。在
在自定义代码中,可以处理: -请求的url:HTTP -返回代码 -原因 -呼吸机构 -用户数据
示例
^{pr2}$fromasyhttpimportlooprequests=[{'url':'http://exam.ple/page.html','method':'GET'}]loop(urls=requests)
示例
fromasyhttpimportloopdefprocess_output(url,return_code,reason,resp_body,user_data):ifreturn_code==200:sys.stdout.write("url")requests=[{'url':'http://exam.ple/page.html','method':'GET'}]loop(urls=requests,process_out=process_output)
asyhttp循环的args
- urls
- process_out
- proxy
- verify_tls
- redirects
支持的HTTP方法
- 得到
- 岗位
- 头部
HTTP请求格式
{'method':'GET','url':'http://exam.ple/page.html'}{'method':'POST','url':'http://exam.ple/page.html','body':'blablabl=balbal'}{'url':'http://exam.ple/page.html','method':'GET','headers':'X-Custom-Header:YEAH'}
代理支持
loop(urls=url_dict_list,proxy="http://127.0.0.1:8080")
自定义标题
要向请求添加HTTP头,请将其作为dict传递
{'url':'http://exam.ple/page.html','method':'GET','headers':{'User-agent':'YEAH'}}
允许重定向
默认为False
loop(urls=requests,process_out=process_response,redirects=True)
验证TLS
默认为False
loop(urls=requests,process_out=process_response,verify_tls=True)
- 项目
标签: