在硒中执行验证码脚本

问题描述 投票:2回答:1

我正在练习2captcha文档

import requests
import time
from selenium import webdriver
API_KEY = 'mykey'
SITE_KEY = "6LdC3UgUAAAAAJIcyA3Ym4j_nCP-ainSgf1NoFku"
url="https://www.gumtree.com"
driver= webdriver.Chrome('chromedriver')
driver.get('https://www.gumtree.com/login')
s = requests.Session()
captcha_id = s.post(f"http://2captcha.com/in.php?key={API_KEY}&method=userrecaptcha&googlekey={SITE_KEY}&pageurl={url}").text.split('|')[1]
recaptcha_answer = s.get(
        f"http://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}").text

while 'CAPCHA_NOT_READY' in recaptcha_answer:
    time.sleep(5)
    recaptcha_answer = s.get(
            "http://2captcha.com/res.php?key={}&action=get&id={}".format(API_KEY, captcha_id)).text
recaptcha_answer = recaptcha_answer.split('|')[1]
elem = driver.find_element_by_name("g-recaptcha-response")
elem = driver.execute_script("arguments[0].style.display = 'block'; return arguments[0];", elem)
elem.send_keys(recaptcha_answer)

根据我发现的docs和页面来源

            <script type="text/javascript">
                var distilRecaptchaOnloadCallback = function() {
                    grecaptcha.render("dCF_input", {
                        sitekey: "6LdC3UgUAAAAAJIcyA3Ym4j_nCP-ainSgf1NoFku",
                        callback: distilCallbackGuard('distilCaptchaDoneCallback')
                    })
                }
            </script>

我尝试了以下操作来提交验证码答案,但没有任何反应(甚至没有错误)

    driver.execute_script("distilCallbackGuard('distilCaptchaDoneCallback')")
    #driver.execute_script("distilCallbackGuard(\'" + recaptcha_answer + "\')")
    #driver.execute_script(f"distilCallbackGuard('{recaptcha_answer}')")
    #driver.execute_script("""distilCallbackGuard(arguments[0])""", recaptcha_answer)

如何提交验证码解决方案?

python selenium recaptcha
1个回答
0
投票
很遗憾,我没有API密钥,因此无法自己对其进行测试。但似乎您需要以下Javascript块
© www.soinside.com 2019 - 2024. All rights reserved.