Python 使用服务解决验证码时遇到问题
我用一些什么硬编码的方法获取站点密钥,但是由于len总是相同的,所以没关系。 之后,我使用,以便我可以张贴的关键,并获得令牌验证码回来。我面临两大问题: 1) 我总是错误地获取站点密钥,但根据他们的示例,站点密钥是正确的(他们的站点密钥长度为40个字符,我的站点密钥也为40个字符) 2) 我尝试在外部创建一个POST函数,并尝试查看它是否是一个bug,但是使用文档我总是会得到以下错误: 这是验证码密钥抓取Python 使用服务解决验证码时遇到问题,python,selenium,captcha,Python,Selenium,Captcha,我用一些什么硬编码的方法获取站点密钥,但是由于len总是相同的,所以没关系。 之后,我使用,以便我可以张贴的关键,并获得令牌验证码回来。我面临两大问题: 1) 我总是错误地获取站点密钥,但根据他们的示例,站点密钥是正确的(他们的站点密钥长度为40个字符,我的站点密钥也为40个字符) 2) 我尝试在外部创建一个POST函数,并尝试查看它是否是一个bug,但是使用文档我总是会得到以下错误: 这是验证码密钥抓取 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Captcha K
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Captcha Key~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
url=driver.find_element_by_css_selector("iframe[role='presentation']").get_attribute('src')
print(url)
keygoogle = url[53:93]
print('Site Key = ', keygoogle)
这是验证码密钥解析块:
answer = ""
answer_id = 0
api_key = '--------------------------------'
data_post = {'key': api_key, 'method': 'userrecaptcha', 'googlekey': keygoogle, "pageurl": mainurl}
response = requests.post(url = 'https://2captcha.com/in.php', data = data_post )
print(response)
print("Waiting for server response.")
for x in range(15):
time.sleep(1)
if x == 5:
print('Downloading info..')
elif x == 10:
print('Processing info..')
elif x == 14:
print('Solving captcha..')
data_request = {
'key': api_key,
'action': answer,
'id': answer_id,
}
requests.get(url ='https://2captcha.com/res.php', data=data_request)
print(answer)
def captcha():
google_key = keygoogle
url = mainurl
client = TwoCaptchaClient(client_key=api_key)
task = GoogleReCaptchaV2Task(googlekey=google_key, pageurl=mainurl)
job = client.create_task(task)
token = job.get_solution_response()
return token
print(captcha())
我没有包括的是令牌被发布到答案字段的部分,我不知道怎么做,但我会找到一个确定的方法
编辑:
这是我从打印中获得的值:
这是我从print('Site Key=',keygoogle)
Site Key=Lc3HAsUAAAAACsN7CgY9MMVxo2M09n\u e4heJEiZ&该Site Key末端的&肯定不应该在那里。使用正则表达式,而不是在索引中执行的操作。这是我获取正确键的方法:
url=driver.find_element_by_css_selector("iframe[role='presentation']").get_attribute('src')
keygoogle = url[52:92]
这是我的POST功能:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Captcha Solve~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
answer = ""
answer_id = 0
data_post = {'key': api_key, 'method': 'userrecaptcha', 'googlekey': keygoogle, "pageurl": mainurl}
response = requests.post(url = 'https://2captcha.com/in.php', data = data_post )
response = response.text[3:]
print("Waiting for server response.")
for x in range(30):
time.sleep(1)
if x == 8:
print('Downloading info..')
elif x == 15:
print('Processing info..')
data_request = {'key': api_key,'id': int(response),'action': 'get'}
response = requests.get(url='https://2captcha.com/res.php', params=data_request)
token = response.text.split('|')[0]
while response.text == 'CAPCHA_NOT_READY':
print('Waiting for Capcha..')
time.sleep(5)
response = requests.get(url='https://2captcha.com/res.php', params=data_request)
token = response
print(token)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Captcha Solve~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
answer = ""
answer_id = 0
data_post = {'key': api_key, 'method': 'userrecaptcha', 'googlekey': keygoogle, "pageurl": mainurl}
response = requests.post(url = 'https://2captcha.com/in.php', data = data_post )
response = response.text[3:]
print("Waiting for server response.")
for x in range(30):
time.sleep(1)
if x == 8:
print('Downloading info..')
elif x == 15:
print('Processing info..')
data_request = {'key': api_key,'id': int(response),'action': 'get'}
response = requests.get(url='https://2captcha.com/res.php', params=data_request)
token = response.text.split('|')[0]
while response.text == 'CAPCHA_NOT_READY':
print('Waiting for Capcha..')
time.sleep(5)
response = requests.get(url='https://2captcha.com/res.php', params=data_request)
token = response
print(token)