我在多处理方面遇到了很多麻烦 - 我实际上已经尝试了几个小时并且无法正确处理它。这是我的代码,评论了我能做的最好的事情。
这是我的导入
import urllib
import socket
import multiprocessing as mp
import queue
import requests
标题用于在连接到网站时获得更高成功率
headers={'User-agent' : 'Mozilla/5.0'}
主要功能有四个参数 - 队列,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并得到同样的错误。
我尝试过多线程,但与多处理相比,它非常慢且不稳定。
答案 0 :(得分:0)
更改为以下内容:
p = mp.Process(target=mainFunction, args=(q, Output))
p.start()
for url in URLList:
q.put(url)