我在多处理时遇到了很多麻烦 - 我真的已经尝试了几个小时,但无法正确处理。这是我的代码,评论了我能做的最好的事情。
链接了我的所有代码,因为我不知道究竟是什么原因造成的。
第 74 行它说,在 p.start(( 上
代码中最相关的部分是问题的底部。
这是我的进口
import urllib
import socket
import multiprocessing as mp
import queue
import requests
用于在连接到网站时获得更高成功机会的标头
headers={'User-agent' : 'Mozilla/5.0'}
Main 函数采用四个参数 - 队列、URL 列表、输出文件和易受攻击的 URL 列表。
def mainFunction(q, URLList, Output, vulnURLS):
此列表用于在将字符串查询添加到 url ('( 末尾后检查页面源在列表中是否存在任何错误
queries = ['SQL syntax', 'mysql_fetch', 'mysql_num_rows', 'mySQL Error', 'mySQL_connect()', 'UNION SELECT', 'MySQL server version']
这会在测试注入点之前将 URL 置于正确的格式。
URLReplace = [("['", ""),("']",""), ("n", ""), ("https://","http://"), ("s", "%20"), ("s", "%20")]
URL = ''.join(str(URLList))
for URL in URLList:
if (z < len(URLReplace)):
URL = URL.replace(URLReplace[z])
z = z + 1
URL = (URL + "'")
这是 try 请求,它尝试连接并从网页上抓取 HTML。
try:
req = requests.get(URL, timeout=2)
htmlObject = urllib.request.urlopen(URL)
这将循环访问列表以检查是否存在任何可能的漏洞。还返回 404/400 条消息。
if (y < len(queries)):
if queries[x] in htmlObject:
print ("t [+] " + URL)
vulnURLS.append(URL)
Output.open()
for VURLS in vulnURLS:
Output.write(VURLS + 'n')
Output.close()
y = y + 1
else:
print ("t [-] " + URL)
except urllib.error.HTTPError as e:
if e.code == 404:
print("t [-] Page not found.")
if e.code == 400:
print ("t [+] " + URL)
except urllib.error.URLError as e:
print("t [-] URL Timed Out")
except socket.timeout as e:
print("t [-] URL Timed Out")
except socket.error as e:
print("t [-] Error in URL")
这是重要的部分,我使用队列和多处理器。
if __name__=='__main__': q = mp.Queue() URLList = [i.strip().split() for i in open('sites.txt').readlines()] Output = open('output.txt', 'r') vulnURLS = [] p = mp.Process(target=mainFunction, args=(q, URLList, Output, vulnURLS)) p.start() q.put(mainFunction(URLList)) q.close() q.join_thread() p.join()
请帮我解决这个问题,我已经坚持了几个小时,并且对无法遵循解决方案感到非常沮丧。我看的每个模块我都遵循T并得到同样的错误。
我尝试过多线程,但与多处理相比,它非常慢且不稳定。
更改为以下内容:
p = mp.Process(target=mainFunction, args=(q, Output))
p.start()
for url in URLList:
q.put(url)