python-3.x - 使用 Python 解决验证码问题

标签 python-3.x api selenium recaptcha

我正在使用反验证码服务来尝试绕过 Google 的 ReCAPTCHA。

这段代码的结果是:

{'errorId': 0, 'status': 'ready', 'solution': {'gRecaptchaResponse': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}, 'cost': '0.00...', 'ip': '127.0.0.1', 'createTime': 9999999999, 'endTime': 9999999999, 'solveCount': 0, 'taskId': 11111111}

使用 gRecaptchaResponse 键,我可以以某种方式绕过验证码,这就是我从 API 文档中了解到的。

我尝试了 https://www.google.com/recaptcha/api2/demo 上的网络分析但我没有得到带有 gRecaptchaResponse 属性的 GET-Request-Method 。所以我不知道如何让它工作,因为我不知道在哪里或如何准确地使用从 Captcha ByPass Service 获得的 gRecaptchaResponse key 。

但有些题外话:这怎么可能行得通?我的意思是,每次(F5)您尝试验证码时,谷歌通常都会给出一个新的验证码 token 来识别您的身份。因此,对我来说,将一个 token 引用到一个 gRecaptchaResponse 键是合乎逻辑的。因此,如果其他人为您找到了解决方案,他可以给您他的 gRecaptchaResponse 结果 key ,但是这个 key 怎么可能适用于每个 token 呢?

谢谢并致以最诚挚的问候!

def solveCaptcha():
    ANTICAPTCHA_KEY = "11133331111333777"
    result = NoCaptchaTaskProxyless.NoCaptchaTaskProxyless(
        anticaptcha_key=ANTICAPTCHA_KEY
    ).captcha_handler(
        websiteURL="https://www.google.com/recaptcha/api2/demo",
        websiteKey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    )
    print(result)
solveCaptcha()

最佳答案

我想您正在使用带有 Python(Selenium 或类似)的网络驱动。 您应该从您的 Anti-Captcha 帐户获取 ANTICAPTCHA_KEY。它为您的反验证码信用提供 API 访问权限。

我建议您将 ANTCAPTCHA_KEY 添加到您的环境中。在 shell 中执行以下命令或将行添加到 bash 文件(.bashrc 或类似文件)

export ANTICAPTCHA_KEY="your_key"

你的代码可能是这样的:

import os 
from python3_anticaptcha import NoCaptchaTaskProxyless
from selenium import webdriver

ANTICAPTCHA_KEY = os.environ["ANTICAPTCHA_KEY"]

def solveCaptcha():
    result = NoCaptchaTaskProxyless.NoCaptchaTaskProxyless(
        anticaptcha_key=ANTICAPTCHA_KEY
    ).captcha_handler(
        websiteURL="https://www.google.com/recaptcha/api2/demo",
        websiteKey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    )
    return result.get("solution").get("gRecaptchaResponse")

首先,设置 webdriver,获取页面并执行函数将响应分配给变量。

driver = webdriver.Firefox()
driver.get("https://www.google.com/recaptcha/api2/demo")
captcha_response = solveCaptcha()

您可以使用以下脚本使 grecaptcha 响应框可见,以便您可以查看它是否正常工作。

driver.execute_script(
    "arguments[0].style.display='inline'",
    driver.find_element_by_xpath(
        '//*[@id="g-recaptcha-response"]'
    ),
)

然后执行脚本将响应插入到文本框中:

driver.execute_script(
'document.getElementById("g-recaptcha-response").innerHTML = "%s"'
            % captcha_response
)

之后按提交按钮,您就会看到成功。

关于python-3.x - 使用 Python 解决验证码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56501358/

相关文章:

python - Pandas 中没有 "from_csv"方法

用于 Skype 的安卓 API?

javascript - 如何修改从 WordPress API 获取的日期格式?

java - 我创建了一个页面对象模型,但我的登录页面为空。我该如何解决这个问题?

python - 更改 Geckodriver for Python Selenium 的日志级别

python - 在for语句中,我能够得到预期的结果。但是为什么我用while语句却得不到预期的结果呢?

python 3 : Looking for alternatives to gevent and pylibmc/python-memcached

python - 在磁盘上存储一个大表,快速检索指定的子集到 np.ndarray

api - 如何使用 OpenStreetMap 进行地理编码和路由?

java - 构造“try/catch”不会捕获异常“NoSuchElementException”