所以我一直在玩Captcha,Multiprocessing和Flask。
到目前为止我做了什么:
基本上我所做的是我已经创建了自己的Mutltiprocessing,我在这个脚本中输入了我想要运行的任务/处理器数量。它会说如果我输入3那么它会给我一个3"线程"哪个工作正常。
每当webbrowser.open('http://Thrillofit.baller.com:5000/solve')
打开时,它也会起作用。还可以获得能够解决的验证码。
基本上意味着验证码确实有效,而且多处理也是如此:
那么问题是什么?
问题是现在坐在我运行程序时它会在解决时卡住,基本上我可以解决我想要的多少验证码但是它不会继续,我无法掌握原因?关于正在发生的事情的GIF图片:https://i.gyazo.com/d5f183471f20be5eda6be939d255a157.mp4
在视频中你可以看到我正在尝试解决验证码,但程序没有发生任何事情,就像它被卡住一样。
我的想法是多处理和Captcha / flask之间可能存在问题,但是我无法看到问题而且我在这一点上完全失明了。也许有人可能会看到这个问题?
目标是每当我解决验证码时,它应该打印出一个令牌(在def passwd():
方法内部,但没有打印出来,只是卡住了......
import requests, time, json, re, sys, os, timeit, random, multiprocessing, traceback, threading, names, logging, webbrowser, _thread
from flask import Flask, render_template, request, redirect
tokens = []
def captureToken(token):
expiry = datetime.now().timestamp() + 115
tokenDict = {
'expiry': expiry,
'token': token
}
tokens.append(tokenDict)
return
def sendToken():
while not tokens:
pass
token = tokens.pop(0)
return token['token']
def manageTokens():
while True:
for item in tokens:
if item['expiry'] < datetime.now().timestamp():
tokens.remove(item)
time.sleep(5)
app = Flask(__name__)
log = logging.getLogger('werkzeug')
log.setLevel(logging.ERROR)
@app.route('/', methods=['GET'])
def base():
return redirect("http://Thrillofit.baller.com:5000/solve", code=302)
@app.route('/solve', methods=['GET'])
def solve():
sitekey = "6LdyFRkUAAAAAF2YmQ9baZ6ytpVnbVSAymVpTXKi"
return render_template('index.html', sitekey=sitekey)
@app.route('/submit', methods=['POST'])
def submit():
token = request.form.get('g-recaptcha-response', '')
captureToken(token)
return redirect("http://Thrillofit.baller.com:5000/solve", code=302)
def info(thread):
global prod
prod = int(thread) + 1
passwd()
def passwd():
lilcapttoken = sendToken()
print(lilcaptoken)
def main():
webbrowser.open('http://Thrillofit.baller.com:5000/solve')
user_input = 0
while True:
try:
user_input = int(input(Fore.WHITE + 'How many tasks do you wanna run? [NUMBERS] \n' + Fore.RESET))
except ValueError:
print(Fore.RED + "Stop being stupid" + Fore.RESET)
continue
else:
HowManyThread = user_input
print()
i = 0
jobs = []
for i in range(HowManyThread):
p = multiprocessing.Process(target=info, args=(str(i),))
jobs.append(p)
time.sleep(.5)
p.start()
for p in jobs:
p.join()
sys.exit()
if __name__ == '__main__':
try:
_thread.start_new_thread(app.run, ())
_thread.start_new_thread(manageTokens, ())
main()
except Exception as e:
print(e)
print(traceback.print_exc())
print(traceback)