麻烦多处理 - p.start()上的“参数不正确”

时间:2017-06-30 18:45:54

标签: python parameters multiprocessing

我在多处理方面遇到了很多麻烦 - 我实际上已经尝试了几个小时并且无法正确处理它。这是我的代码,评论了我能做的最好的事情。

链接了我的所有代码,因为我不知道是什么导致了它。

它说的第74行,在p.start()

代码中最相关的部分是问题的底部。

这是我的导入

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")
  • 这是重要的部分,我使用Queue&amp;多处理器。

    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并得到同样的错误。

我尝试过多线程,但与多处理相比,它非常慢且不稳定。

1 个答案:

答案 0 :(得分:0)

更改为以下内容:

p = mp.Process(target=mainFunction, args=(q, Output))
p.start()

for url in URLList:
     q.put(url)