每个网站都不一样,如果以下方式都不能解决问题,烦请您自己多研究研究,您可以的。
打开包含验证码的网页,按 F12
→ Network
获取 websiteKey:
k
值为 6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9
https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9&co=aHR0cHM6Ly9yZWNhcHRjaGEtZGVtby5hcHBzcG90LmNvbTo0NDM.&hl=en&v=qljbK_DTcvY1PzbR7IG69z1r&size=normal&cb=3gteobhlohbk
获取 websiteURL:
referer
值:一般就是目标网站的域名referer: https://recaptcha-demo.appspot.com/
reCAPTCHA v3 需要 action 值,而且必须正确,通过网页源代码中搜索关键词 grecaptcha
pageAction 值:其中 action: xxxxx
就是我们要的值,例如:
grecaptcha.ready(function() {
grecaptcha.execute('6LdpS-gUAAAAAL3Qr2yP7rkrQjkKBVvEY_48JS5l',
{action: 'login'}).then(function(token) {
});
});
如果网页中搜索不到,则可能是 js 被混淆、加密了,需要尝试其他方式:
请参照这个单独的教程:[如何找 reCAPTCHA V3 的 action 值]
打开出现验证码的网页,按 F12
键,进入 Console
,输入自定义函数 findRecaptchaClients()
执行
function findRecaptchaClients() {
// eslint-disable-next-line camelcase
if (typeof (___grecaptcha_cfg) !== 'undefined') {
// eslint-disable-next-line camelcase, no-undef
return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
const objects = Object.entries(client).filter(([_, value]) => value && typeof value === 'object');
objects.forEach(([toplevelKey, toplevel]) => {
const found = Object.entries(toplevel).find(([_, value]) => (
value && typeof value === 'object' && 'sitekey' in value && 'size' in value
));
if (typeof toplevel === 'object' && toplevel instanceof HTMLElement && toplevel['tagName'] === 'DIV'){
data.pageurl = toplevel.baseURI;
}
if (found) {
const [sublevelKey, sublevel] = found;
data.sitekey = sublevel.sitekey;
const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
const callback = sublevel[callbackKey];
if (!callback) {
data.callback = null;
data.function = null;
} else {
data.function = callback;
const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
data.callback = `___grecaptcha_cfg.clients${keys}`;
}
}
});
return data;
});
}
return [];
}
在 Console 执行这个函数 findRecaptchaClients()
即可找到对应的信息
[
{
"id": "0",
"version": "V2",
"sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"function": "onSuccess",
"callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
"pageurl": "https://www.google.com/recaptcha/api2/demo"
}
]
然后在consolse执行这个函数findRecaptchaClients() 即可找到出对应的信息(注意!这里的version不代表这个站就是用的v2,不能以此作为标志判断版本,如果不能确定,以抓包为准)