在 python3 中将 GeeTestTask(python3_anticaptcha) 与 selenium 集成
Integrate GeeTestTask(python3_anticaptcha) with selenium in python3
我有一个关于 python3_anticaptcha 的问题(api 由 anti-captcha.com 提供),在网上搜索,找到支持并尝试了一个多月但没有成功。
我在一个网站上做一个自动登录,复制api反验证码的文档:
def runGee(self, challenge):
print("start gee")
try:
# Enter the key to the AntiCaptcha service from your account. Anticaptcha service key.
ANTICAPTCHA_KEY = "mycode"
# обязательные параметры
websiteURL = "https:\/\/www.nike.com.hk"
gt = "2328764cdf162e8e60cc0b04383fef81"
print("sloving1")
print("challenge:" ,challenge)
# пример работы с GeeTestTask без прокси
result = GeeTestTaskProxyless.GeeTestTaskProxyless(anticaptcha_key=ANTICAPTCHA_KEY,
websiteURL=websiteURL,
gt=gt).captcha_handler(challenge=challenge)
print("sloving2")
print(result)
print("--end gee--")
except Exception as err:
print(err)
print("--end with error--")
然而,geetask 启动超过 3 分钟(或更长时间),并且每次都出错。通常错误代码如:
{'errorId': 34, 'errorCode': 'ERROR_TOKEN_EXPIRED', 'errorDescription': 'Captcha provider
reported that additional variable token has expired.', 'taskId': 1204556667}
或
{'errorId': 12, 'errorCode': 'ERROR_CAPTCHA_UNSOLVABLE', 'errorDescription': ' Captcha
could not be solved by 5 different workers.', 'taskId': 1204060350}
..等等
取决于我传递的参数。
我可以知道我是否将正确的值传递给了 geetask?还是代码有问题?
此外,如果 geetest return 是正确的值,我需要做任何其他事情来传递验证码(或将代码传递给 geetest 服务器)或 GeeTestTaskProxyless 已经完成(什么都不做)?
这对我来说太难了,有没有人成功地使用过这个api?谢谢
在我看来,这些错误是由于代理(如果您使用任何代理)或 IP 错误造成的。
就个人而言,我使用另一个验证码服务,但我没有遇到这样的问题。
我建议你尝试一下,它实际上更容易:https://2captcha.com/2captcha-api#solving_geetest
您应该发送这样的请求:
你需要完成的是从中得到正确的答案,就像这个:
{
"challenge":"1a2b3456cd67890e12345fab678901c2de",
"validate":"09fe8d7c6ba54f32e1dcb0a9fedc8765",
"seccode":"12fe3d4c56789ba01f2e345d6789c012|jordan" }
然后您只需要在网站上实施该答案即可。刚看完我给你的第一个link
干杯。
问题不在反验证码中,而是在 geetest 提供程序中。
令牌挑战者只能使用一次,当您的浏览器加载 geetest 验证码时,它会使令牌过期。
要解决这个问题,你只需要在你的浏览器中屏蔽消耗token的请求即可。
转到 devtools 并在浏览器中添加 geestest 验证码 API 的块,如下所示:
您可以使用以下命令将其自动集成到 selenium 中:
driver.execute_cdp_cmd('Network.setBlockedURLs', {"urls": ["api.geetest.com/get.php"]})
driver.execute_cdp_cmd('Network.enable', {})
我有一个关于 python3_anticaptcha 的问题(api 由 anti-captcha.com 提供),在网上搜索,找到支持并尝试了一个多月但没有成功。
我在一个网站上做一个自动登录,复制api反验证码的文档:
def runGee(self, challenge):
print("start gee")
try:
# Enter the key to the AntiCaptcha service from your account. Anticaptcha service key.
ANTICAPTCHA_KEY = "mycode"
# обязательные параметры
websiteURL = "https:\/\/www.nike.com.hk"
gt = "2328764cdf162e8e60cc0b04383fef81"
print("sloving1")
print("challenge:" ,challenge)
# пример работы с GeeTestTask без прокси
result = GeeTestTaskProxyless.GeeTestTaskProxyless(anticaptcha_key=ANTICAPTCHA_KEY,
websiteURL=websiteURL,
gt=gt).captcha_handler(challenge=challenge)
print("sloving2")
print(result)
print("--end gee--")
except Exception as err:
print(err)
print("--end with error--")
然而,geetask 启动超过 3 分钟(或更长时间),并且每次都出错。通常错误代码如:
{'errorId': 34, 'errorCode': 'ERROR_TOKEN_EXPIRED', 'errorDescription': 'Captcha provider
reported that additional variable token has expired.', 'taskId': 1204556667}
或
{'errorId': 12, 'errorCode': 'ERROR_CAPTCHA_UNSOLVABLE', 'errorDescription': ' Captcha
could not be solved by 5 different workers.', 'taskId': 1204060350}
..等等
取决于我传递的参数。
我可以知道我是否将正确的值传递给了 geetask?还是代码有问题? 此外,如果 geetest return 是正确的值,我需要做任何其他事情来传递验证码(或将代码传递给 geetest 服务器)或 GeeTestTaskProxyless 已经完成(什么都不做)?
这对我来说太难了,有没有人成功地使用过这个api?谢谢
在我看来,这些错误是由于代理(如果您使用任何代理)或 IP 错误造成的。 就个人而言,我使用另一个验证码服务,但我没有遇到这样的问题。 我建议你尝试一下,它实际上更容易:https://2captcha.com/2captcha-api#solving_geetest
您应该发送这样的请求:
你需要完成的是从中得到正确的答案,就像这个:
{ "challenge":"1a2b3456cd67890e12345fab678901c2de", "validate":"09fe8d7c6ba54f32e1dcb0a9fedc8765", "seccode":"12fe3d4c56789ba01f2e345d6789c012|jordan" }
然后您只需要在网站上实施该答案即可。刚看完我给你的第一个link
干杯。
问题不在反验证码中,而是在 geetest 提供程序中。 令牌挑战者只能使用一次,当您的浏览器加载 geetest 验证码时,它会使令牌过期。 要解决这个问题,你只需要在你的浏览器中屏蔽消耗token的请求即可。 转到 devtools 并在浏览器中添加 geestest 验证码 API 的块,如下所示:
您可以使用以下命令将其自动集成到 selenium 中:
driver.execute_cdp_cmd('Network.setBlockedURLs', {"urls": ["api.geetest.com/get.php"]})
driver.execute_cdp_cmd('Network.enable', {})