首页 > 解决方案 > recaptcha v3 验证和分数问题

问题描述

我在我的网站上使用google reCaptcha v3,我截获了用于获取在最后阶段发送到我的后端服务器的验证码值的请求,网络请求如下

  1. GET www.google.com/recaptcha/api2/anchor?ar=1&k=MY_SITE_KEY&co=SOME_CODE_HERE&hl=en&v=SOME_CODE_HERE&size=invisible&cb=fdjhflkdjldfj,发送此请求并且响应包含recaptcha-token
  2. 从上一个响应中收到的 Recaptcha 令牌用于制定对www.google.com/recaptcha/api2/reload?k=MY_SITE_KEY的 POST 请求,该请求将具有Content-Type: application/x-protobuffer,POST 请求将有很多关于身体的信息,它是不可读的。此请求的响应将具有实际的验证码令牌,该令牌将发送到后端服务器,然后由谷歌验证。
POST /recaptcha/api2/reload?k=MY_SITE_KEY HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-protobuffer
Content-Length: 6514
Origin: https://www.google.com
DNT: 1
Connection: close



5jg5fr8dsdfsffffdfddsf5dsf6s03AGdBq25bIYfsddfdsffsdtMhUdgdgdsfswdfsfdfsdfsdfIoxLpxkNf9gh2zpQQfWqy8fDPh2juM8i5o3XwUVu1bj514acUgCT9WrtG2jwMMffZ9O1c-zS2vSEMwK9yb2GGFVl3hd_FO8fmtHkDcJBohWfxtFqwQzv8pkRlfVMpROiIQqMhB7NxJaFSfAwfzrg66fsjff2NrKFOZQ4qfniYNvjxyJw2sesUntfEY_ktufH5Q9o7ndzf3Ws8NOGasTxLMM-dsfdsgCPqoJ6Nz6rwep3sdfsdfdsfds5wEi_5Co_POdBaejwRfBYATssqCulwlsyvwpNhH8U1vwxm6Lz6xEz6Xen8IcJfAoswNZHx-NvTL2Qzfsdfsdftw

在前两个请求中,我执行了以下操作:

New Request :
POST /recaptcha/api2/reload?k=MY_SITE_KEY HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: www.google.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: https://www.google.com
DNT: 1
Connection: close
Content-Length: 2648

v=fdgdfgfdgfdgdfgdfgdfg&reason=q&**c**=03AGdBq24NKRvgQ9EwzfnPId4hR4cILxjFOneX4Sy8351xWji_VQIn_DPkgFnS7LBlAb5hRF3JID6lJnfXonVqcyVn0sssssioCClJAP1s51sxsssv4cKdfgfdgfdggfdgfdgUPZgFwrZP0mSx66uZ5gJgUZ0nqpj96gfdgdfgdfsBBWgdfgfdzoX27dGKFrssmu-IfqFqTyjdfgdfgdf2yCqpENBadrRAUtVSiBYkgdfgdfgdfgrgaX5LOjGoVf-maMV7hqMlpOVGb-BMaYhsssRyOsssEAlssyDOuftfddgdfgdfgdfv6Zr-gaeeOspg9_-VhPOZSgQMT_k2ss0M5gfdggdfgdfgdfgdfgdfgdfgjag1xU_-DiV4pL0ohjxbsssTkBmBrmApOIUWqkAshWxck8XWCzkTP6sssAP5YJygdfgdfgdfuUp5Ru9-sScQs80j2lj&co=gdfgfdgsssfdgwdwdadsadsadasdasdasd&hl=en&size=invisible&chr=%5B89%2C6sss4%2C27%5D&vh=135sss99012192&**bg**=!b2mgaWwKAAQeDjZybQsssEHDwIbeVoCNhLRRCE9qZxCQZx-6SGETEsssseRXgKCPBGhNh3Nj-u-V49g_B1QeEHd-mv4ssGqhGVqsZtSb-tmMlssssssadsdasdsadx-m_nrKwd07N1PV0dadasdassdas_EJCHbNvvCeNC6YJP_kcroXlFGdMqj7huMhj34VpVktyiUW0IuUezBFwEYzvbjLNKSrjE494Gwdasdsadp_C50VZn1hjiasdasdsaQk6SUNgMFQAi8V9rHQQJjEf8dSCQItFCPCfHu89ssRt0RFmXBconTjwPSy4qfGckOHjaGr9o31V34citVaeoXQat1_AdasdasW-O2Pa2Ksadsadsadsalwvdasdas2Ys20KHFBYiZ9Ryh0V9H5PAx4qcATrU_o6hMdsadsa_PfysLJHhPOecAG1k7XTCdsadasLgYwzTFrhv6nm7Oa3dXm9KzhiSMVwA6YMm6xY3WWrJO6wLzGg7HoEMzoZM1zhZW9FaaF9r6tHG3iC5bFRrcmtby1N2HC-8ArrtSG1A7nuPbRVVk6uRRg9tM5N-YGGfGEVJ9c1Gqk7i5G

我的问题:

  1. 在完成之前的更改之后,我能够向谷歌发送两个新请求,并且能够获得一个有效的验证码令牌,我将它添加到我的请求中并在后端得到正确验证,那么如何更改第二个请求的内容类型和正文到新的完全不同的值不会影响功能并且能够检索正确的验证码并将其发送到后端并得到验证?

  2. 我使用了这个站点https://www.google.com/recaptcha/api2/demo并截获了请求,我从请求中获得了名为bg的 POST Body Parameter 的值,并用我的请求替换它使用路径(/recaptcha/api2/reload)编辑 POST 请求 (上面提到)并开始在请求中使用它来生成验证码令牌,并且请求有效,并且在后端检索并检查了有效的验证码,这是如何发生的并且运行良好? 从其他站点验证码流的另一个请求中获取价值,并在与我的站点验证码相关的请求中使用它?

  3. 我在某些工具中使用了前面提到的请求(上面第 1 点和第 2 点中提到的请求)对我的网站发出自动请求,该工具将首先 GET www.google.com/recaptcha/api2/anchor获取recaptcha-token并向www.google.com/recaptcha/api2/reload?k=MY_SITE_KEY 发出另一个 POST 请求(使用 Content-Type: application/x-www-form-urlencoded 而不是 Content-Type: application/x-protobuffer)来获取应该发送到后端的真正验证码令牌,一旦我收到验证码令牌,我会使用此站点https://www.google.com/recaptcha/api/siteverify 对其进行验证?它给出了0.9的分数!自动化脚本如何生成分数为0.9的验证码令牌? 这不是验证码的绕过和流程吗?

  4. 使用上面提到的相同的自动化工具,有时生成的验证码得分为 0.9,而其他时候得分为 0.3,为什么会有这样的变化,即使它是一个自动化工具?

  5. recaptcha v3 的最佳替代方案是什么,并且更可靠和安全?

谢谢 。

标签: recaptchainvisible-recaptcharecaptcha-v3

解决方案


推荐阅读