python - 如何使此代码仅检查 200 标头响应并快速工作?
问题描述
我找到了这个用于检查网站漏洞的python代码。它工作正常,但我需要一些修改。该脚本抓取所有 HTTP 响应(可能是 200、301、302 等,但不是 404)。但现在我只想获取 200 OK 响应,而不是 301 或其他响应。我怎样才能做到这一点。此脚本运行速度也很慢。有什么办法可以加快这个脚本在 python 中的线程?
# -*- coding: utf-8 -*-
#Follow Me For More If You Like It Give It A Star
import requests
def FindAll():
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
f=open('list.txt', 'r').read().split('\n')
o=open('fixed.txt', 'r').read().split('\n')
with open('result.txt', 'w') as result:
for line in f:
if line == "":
continue;
newline=line.split('/')
parent_url=newline[2]
for line in o:
if line == "":
continue;
final_url='http://' + parent_url + '/' + line
try:
r = requests.get(final_url,headers=headers,timeout=3)
r.raise_for_status()
except requests.exceptions.HTTPError:
continue;
except requests.exceptions.ConnectionError:
continue;
except requests.exceptions.Timeout:
continue;
else:
print('\033[92m' + 'Found->' + final_url)
result.write(final_url+"\n")
print('\033[94m'+'Just Started The Panel_FInder. Please Wait')
FindAll()
print("Program Finished, See The result.txt File For Ur Result")
在此先感谢您的帮助。
解决方案
打印状态代码后将显示响应代码。您可以通过使用 if 语句过滤掉其他状态代码来过滤掉它们。
关于速度,你应该多线程的功能。在您的函数的参数中有一个名为 num 的变量或其他东西并将其设置为零。每次请求完成时,将零加一。然后对函数进行多线程处理。如果你运行 5 个线程,它的运行速度将提高 5 倍。当您拥有 num 变量时,它将防止任何 url 跳过等。
推荐阅读
- angularjs - AngularJS:如何使用存储在 cookie 中的计时器倒计时使页面在一段时间内处于非活动状态?
- node.js - nuxtjs中的不匹配vue包错误
- magnolia - 执行操作时发生错误
- c# - 如何在 Task.WhenAll 中分配变量
- docker - 如何基于每个 pod 从 Kubernetes 向 GELF UDP 端点发送日志
- jquery - 简单回调函数未按预期工作
- .htaccess - 301重定向到错误的url
- android - 使用 Clang 作为编译器构建 Android 项目时从静态库中隐藏符号
- php - 如果某个数组中的值等于另一个数组中的值,则更改该数组中的值
- java - OracleDriver 不接受 jdbcUrl jdbc:oracle:thin@localhost:1521/orcl