【问题标题】:Solve Captcha with Python用 Python 解决验证码
【发布时间】:2019-06-07 21:24:16
【问题描述】:

我正在使用 Anti-Captcha 服务尝试绕过来自 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 密钥。

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

已经谢谢了,最好的问候!

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-3.x api selenium recaptcha


    【解决方案1】:

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

    我建议您将 ANTICAPTCHA_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
    )
    

    然后按下提交按钮,您将看到成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多