如何使用Python Selenium和2captcha API解决Cloudflare Turnstile验证码问题

4
我正在尝试使用Python Selenium和2captcha API解决位于网站https://visa.vfsglobal.com/ind/en/pol/login上的Cloudflare Turnstile验证码。
我已经使用了2captcha在他们的网站上展示的相同方法,但我想知道为什么在我的情况下无法解决。 2captcha的解决方案示例在他们的网站上https://2captcha.com/demo/cloudflare-turnstile。 我认为在我的情况下,该网站更加安全,所以不容易解决。
请帮忙查看一下,并告诉我这是否可能。谢谢。
我在这里尝试的是以下代码。
bot.maximize_window()

time.sleep(40)

bot.find_element(By.ID, 'mat-input-0').send_keys('Appointment.004slots@gmail.com')
time.sleep(5)
bot.find_element(By.ID, 'mat-input-1').send_keys('Umar@1234')


site_key = "0x4AAAAAAACYaM3U_Dz-4DN1"
result = cloudflare_turnstile.getCode(bot.current_url, site_key)
print("Result : ", result['code'])


bot.execute_script("document.getElementsByName('cf-turnstile-response')[0].value= " + "'" + result['code'] + "'"
)

time.sleep(5)

bot.find_element(By.XPATH, "//button/span[contains(text(),' Sign In')]").click()

2captcha solver code is below


from twocaptcha import TwoCaptcha

solver = TwoCaptcha('api key')

def getCode(url, data_siteKey):
    try:
        result = solver.turnstile(
            sitekey=data_siteKey,
            url=url
        )``your text``
    except Exception as e:
        print(e)
        exit()

    return result```

这些文档只是一个例子,你需要确保你的目标元素正确。我在那个页面上看到了一个v2和一个v3,所以你可能需要解决两个问题。 - pguardiario
那些文档只是一个例子,你需要确保你的目标是正确的元素。我在那个页面上看到了一个v2和一个v3,所以你可能需要解决两个问题。 - undefined
@george_bell 有任何进展吗?我也遇到了同样的问题。 - A S M Saief
@george_bell 有任何更新吗?我也遇到了同样的问题。 - undefined
1个回答

0

2captcha添加了几个必需的参数来解决转门验证码

  • action:传递给turnstile.render调用的action参数的值
  • data:传递给turnstile.render调用的cData参数的值
  • pagedata:传递给turnstile.render调用的chlPageData参数的值
  • useragent:您浏览器的User-Agent

如果您需要绕过Cloudflare Challenge页面上的Turnstile,您还必须提供以下额外的参数:

  1. action
  2. data
  3. pagedata
  4. useragent

请参阅下面的信息以了解如何提取所需的参数。

对于在网站上独立使用Turnstile的情况,这些参数是可选的。

如何提取turnstile.render调用参数 要提取所需的参数,您可以重新定义turnstile.rended方法以拦截调用该方法时传递的参数。例如,您可以将以下JavaScript代码注入到页面中。该代码应在加载Turnstile小部件之前执行。

const i = setInterval(()=>{
    if (window.turnstile) {
        clearInterval(i)
        window.turnstile.render = (a,b) => {
            console.log(b)
            return 'foo'
        } 
    }
},50)

https://2captcha.com/blog/bypass-cloudflare-turnstile-captcha


1
你能否对如何在加载转门小部件之前执行上述Javascript进行评论? - undefined
你能否对如何在加载转门小部件之前执行上述Javascript进行评论? - Mike IT Expert
你知道如何使用2captcha通过转门验证码吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接