首页 > 解决方案 > 如何使此代码仅检查 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")

在此先感谢您的帮助。

标签: pythonsecurity

解决方案


打印状态代码后将显示响应代码。您可以通过使用 if 语句过滤掉其他状态代码来过滤掉它们。

关于速度,你应该多线程的功能。在您的函数的参数中有一个名为 num 的变量或其他东西并将其设置为零。每次请求完成时,将零加一。然后对函数进行多线程处理。如果你运行 5 个线程,它的运行速度将提高 5 倍。当您拥有 num 变量时,它将防止任何 url 跳过等。


推荐阅读