我在我的网站上使用 google reCaptcha v3,我截获了用于获取最后阶段发送到我的后端服务器的验证码值的请求,网络请求如下>
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
我的问题:
在完成之前的更改后,我能够向谷歌发送两个新请求,并且能够获得一个有效的验证码令牌,我将其添加到我的请求中并在后端正确验证,那么如何更改第二个请求content-type 和新的完全不同的值的正文不会影响功能,并且能够检索正确的验证码令牌并将其发送到后端并进行验证?
我使用了这个网站 https://www.google.com/recaptcha/api2/demo 并拦截了请求,我从带有 Bath bg 的 POST 正文参数的值>/recaptcha/api2/userverify 并将其替换为我的新编辑 POST 请求 (上面提到的) 和路径 (/recaptcha/api2/reload ) 并开始在请求中使用它来生成验证码令牌并且请求有效并且在后端检索并检查了有效的验证码,这怎么可能发生并且运行良好?从其他站点验证码流的另一个请求中获取价值,并在与我站点验证码相关的请求中使用它?
我在一些工具中使用了前面提到的请求(上面第 1 点和第 2 点中提到的请求)对我的网站发出自动请求,该工具将首先转到 GET www.google.com/recaptcha/api2/anchor 获取 recaptcha-token 并向 www.google.com/recaptcha/api2/reload?k=MY_SITE_KEY 发出另一个 POST 请求 (内容类型:application/x-www-form-urlencoded而不是 Content-Type: application/x-protobuffer) 来获取应该发送到后端的真实验证码令牌,一旦我收到验证码令牌,我就会使用此站点对其进行验证 https://www.google.com/recaptcha/api/siteverify? 并给出了 0.9 分!! 自动脚本如何生成分数为 0.9 的验证码令牌?这不是验证码的绕过和流程吗?
使用上述同样的自动化工具,有时生成的验证码令牌得分为 0.9,有时为 0.3,为什么会出现这种变化,即使是自动化工具?
recaptcha v3 的最佳替代方案是什么并且更可靠和安全?
谢谢。