如何找到 reCaptcha 任务的各项参数
1. 通过浏览器控制台Network获取参数
打开包含的网页,按F12->Network,
获取websiteKey
搜索关键词 anchor
,可以在URL中找到websiteKey
,例如以下链接中k值就是websiteKey
: 6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=aHR0cHM6Ly9yZWNhcHRjaGEtZGVtby5hcHBzcG90LmNvbTo0NDM.&hl=en&v=qljbK_DTcvY1PzbR7IG69z1r&size=normal&cb=3gteobhlohbk
获取websiteURL
websiteURL
:该URL一般为当前使用了reCaptcha页面的url,有时也会有该url与当前页面url不一致的情况,如果出现这种情况,请检查https://www.google.com/recaptcha/api2/anchor
网络包中的请求头referer对应的域名是否与当前域名一致,如果不一致,则以referer中为准
referer: https://recaptcha-demo.appspot.com/
获取pageAction值
reCaptcha v3
需要pageAction值,如果该值错误,则很大程度影响token的分值,通过网页源代码中搜索关键词 grecaptcha
,其中action: xxxxx 就是我们要的值,例如:
grecaptcha.ready(function() {
grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l',
{action: 'login'}).then(function(token) {
});
});
这种方法一般来说经常会搜索不到pageAction,所以需要其他方法
2. 通过自动识别函数获取参数
打开出现验证码的网页,按F12键,进入console,输入自定义函数findRecaptchaClients()
执行
然后在consolse执行这个函数findRecaptchaClients()
即可找到出对应的信息(注意!这里的version不代表这个站就是用的v2,不能以此作为标志判断版本,如果不能确定,以抓包为准)
3. 通过Charles抓包获取参数(最好的方法)
最好的方法是通过Charles抓包软件获取网站数据包详细数据,但是这种方法具有一定的门槛,需要了解一定的网络抓包知识。如何使用Charles?
获取websiteKey
准备好您的Charles后,打开使用了reCaptcha的网站,可以在www.google.com
或 www.recaptcha.net
域名下抓取到发送给谷歌的数据包,其中anchor请求可以在Content->Query String中找到k值,即websiteKey
,同时也可以看到size值,为normal,所以它不是invisible版本。
获取websiteURL
与上述方法一致
获取pageAction值
我们打开一个reCaptcha v3的演示站,根据页面上的提示触发验证后,浏览器会向谷歌发送一个reload
请求,(在别的网站中,触发的方式各有不同,有的可能是在登录按钮点击后触发,有的可能进入页面就会自动触发)。该请求中包含了大量的加密数据,使用Charles点击该数据包,在Content->Protobuf中可以看到经过Charles Protobuf解码后的数据,其中第八位数据(fields 8)就是pageAction正确的值