缺少__RequestVerificationToken以使用外部求解器绕过Google验证码

时间:2019-08-30 21:29:38

标签: python selenium scrapy recaptcha screen-scraping

我正在尝试抓取一些需要解决验证码登录问题的网站,我发现这样做的最好方法是使用外部服务,例如https://anti-captcha.com/,该服务在另一个网站上有一个人解决验证码并发回哈希值以验证结果。

与文档中一样,该过程为:

  1. 我发送了站点网址和站点密钥

enter image description here

  1. 他们将任务分配给某个工作人员,一两分钟后,我取回哈希值进行登录

问题是,我需要发出的实际请求除该值外还需要另外两个值:

* __RequestVerificationToken: This one appears on the login page: 

enter image description here

但是通过登录请求发送的值不同,因此中间缺少一些工作

* RecaptchaToken: There is no trace of this value in the login site, I'm suspecting it may be generated in the back end as an additional verification step, but I have not found any information about it.

我对此过程的最后一个担心是,反验证码服务似乎正在解决一些通用的验证码,与我所看到的不一样,虽然不确定这是否是实际问题。

1 个答案:

答案 0 :(得分:0)

我相信您是在谈论reCAPTCHA v2,它要求用户选择其中包含某些对象的某些图像。

工作方式:

基于documentation 用户解决了Recaptcha图像难题后,他单击“验证”,这会将发帖请求发送到google api,并发送到以下网址:https://www.google.com/recaptcha/api/siteverify 用户对拼图的反应-编码的ofc-会得到一个响应,称为“ g-recaptcha-response”,用​​于识别用户对拼图的响应/解决方案是否正确。

因此主要是标准的Recaptcha v2,只需要1个令牌即可验证用户响应,但这不是您在此处遇到的情况, 您正在面对自定义实现 特别是旨在使不必要的参与者更难抓取或抓取这些网站。

他们开发了 2个额外的令牌,这些令牌是唯一生成的,并被注入到显示验证码难题的页面中,并且通过发送这些额外的令牌,他们可以确保“ g-recaptcha-response”来自用户已经在浏览器中加载的同一页面。

您需要从此api注入g-recaptcha-response,该api在您访问的同一页面中为您解决recaptcha,然后模拟与该页面的完整用户交互。

我建议您使用selenium,它将帮助您自动执行所有用户操作,并将所需的一切注入页面DOM。