如何解决带有线程的python请求为什么request.exceptions.ConnectionError永远不会得到满足?
当前脚本:
#!/usr/bin/env python
import requests
from threading import Thread
from queue import Queue
files_found=[]
q=Queue()
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
def request(url):
try:
return requests.get("http://" + url,timeout=3)
print(get_response)
except requests.exceptions.ConnectionError:
pass
def scan_files(domain):
global q
while True:
file = q.get()
url = f"http://{domain}/{file}"
try:
requests.get(url)
except requests.ConnectionError:
pass
else:
print("[+] Discovered file:",url)
q.task_done()
files_found.append(url)
def main(domain,n_threads,files):
global q
for file in files:
q.put(file)
for t in range(n_threads):
worker = Thread(target=scan_files,args=(domain,))
worker.daemon = True
worker.start()
if __name__ == "__main__":
try:
domain = input("Enter the target url\n>")
wordlist = "lists/dirs.txt"
num_threads = 10
main(domain=domain,n_threads=num_threads,files=open(wordlist).read().splitlines())
q.join()
except KeyboardInterrupt:
print(bcolors.OKGREEN + "\nFound\n" + "="*45 + "\n" + bcolors.ENDC)
for files in files_found:
print(bcolors.OKBLUE + "[+] Found -->> " + "https://" + files + bcolors.ENDC)
由于某种原因,以下条件从未得到满足,从而打印出错误的结果。
except requests.exceptions.ConnectionError:
pass
例如,如果我在example.com
的list / dirs.txt测试中有example.txt,如果连接抛出错误,例如,我将得到[+] Found -->> https://example.com/example.txt
的控制台打印,例如(
在此服务器上找不到请求的URL /example.txt。这就是我们所知道的全部。)
或Ncat: Could not resolve hostname "https://example.com/example.txt": Name or service not known. QUITTING.
据我了解,这应该通过异常并移至list / dirs.txt中的下一行。最初,这是在没有线程的情况下进行的。无论连接错误如何,它都会打印网址。
我在这里想念什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。