Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

方法一:通过样式来判断版本

 

第一种:通过样式来判断版本

可以通过样式来判断版本,但无法判断是否是企业版

ReCaptcha V2

如果出现以下这种需要勾选的,可以判断为reCaptcha v2

但是不是普通版还是企业版需要进一步判断

View file
nameInvalid file id - d3c2774e-e9f7-42bc-9bc2-d8aca568dac0

...

但是V2普通版和企业版外形上看起来是一样的,这个方法看不出区别

reCaptcha v2 普通版 示例:https://www.google.com/recaptcha/api2/demo

ReCaptcha V2 invisible

invisible版本会将勾选框隐藏,您可能需要提交表单时候才可能触发需要您选择图片的那个页面

还有一种reCaptcha v2 invisible 隐形版示例:https://www.google.com/recaptcha/api2/demo?invisible=true

这种版本不显示图标勾选,但是可以当成reCaptcha v2 普通版来对待

 

如果在右下角有一个小图标,鼠标移上去之后还会弹出以下图片,可以判断为ReCaptcha V3

reCaptcha v3

注意:reCaptcha v2 普通版也是相同的图标与样式,请注意区分。

但是不是普通版还是企业版需要进一步判断

View file
nameInvalid file id - bf90cb92-29f6-43cd-beb8-f955ebae344e

reCaptcha v3 是一种无感验形式,不需要用户点击验证,会自动进行验证的形式

谷歌根据用户的各种行为因素,对用户进行打分,分数从0.1~0.9不等,分数越大越接近人类

网站会根据用户的分数来判断是否给予通过

点击这里查看你的分数(点击中间的交通图标):https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php

Code Block
{
  "success": true,
  "hostname": "recaptcha-demo.appspot.com",
  "challenge_ts": "2021-10-15T13:56:10Z",
  "apk_package_name": null,
  "score": 0.9,
  "action": "examples/v3scores",
  "error-codes": []
}

 

第二种:通过浏览器控制台Network发送的请求进行判断

打开网页,按F12->Network,

1、判断普通版,搜索关键词api.js

reCaptcha v2 普通版:请求链接不含render参数,或者render参数为explicit,例如: 是一种无感验形式,不需要用户点击验证,会自动进行验证。这种类型也没有任何样式显示,很容易与reCaptcha V2 invisible弄混,而且普通版还是企业版用这种方法也无法直观判断。

对于v3版本,谷歌根据各种环境因素,对用户进行打分,分数从0.1~0.9不等,分数越大越接近人类,网站可以根据用户的分数来判断是否给予通过

方法二:通过浏览器控制台查看Network进行判断

打开网页,按F12->Network,

ReCaptcha V2

搜索api.js,如果请求链接不含render参数,或者render参数为explicit,例如:

Code Block
https://www.google.com/recaptcha/api.js
https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit

也可以搜索anchor,例如:

https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LcbPQsTAAAAAB7gt1_a0tDBPojRuzgfe_Z_wW_f&co=aHR0cHM6Ly93d3cuc2VycHJvYm90LmNvbTo0NDM.&hl=zh-CN&v=3kTz7WGoZLQTivI-amNftGZO&size=normal&cb=d2rs6bua44wr

只要url前缀是https://www.google.com/recaptcha,说明为普通版,而不是企业版。对于v2 普通版而言,Url中的size参数为normal

ReCaptcha V2 invisible

与V2 普通版一样,请求链接不含render参数,或者render参数为explicit

Code Block
https://www.google.com/recaptcha/api.js
https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit

reCaptcha v2 isInvisible版本 :符合上述条件,并且anchor的url中有符合上述条件,并且搜索anchor的url中有size=invisible参数,则可能为isvisible版本参数,则可能为invisible版本,例如

https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LdDCdYcAAAAANPaWKlIKYBRPNQirZFckBZKgZzj&co=aHR0cHM6Ly91bnVzdWFsd2hhbGVzLmNvbTo0NDM.&hl=en-US&type=image&v=5qcenVbrhOy8zihcc2aHOWD4&theme=light&size=invisible&badge=bottomright&cb=sym595bmbzux

注意:v2的invisable版本有时候需要使用v3接口来过,有时候用v2就可以过,可以都尝试一下。

 

reCaptcha v3 普通版:请求链接含有render参数,并且render参数不等于explicit,例如:

...

ReCaptcha V2 Enterprise

与上述的条件一样,唯一不同的是https://www.google.com/recaptcha/api.js

...

View file
nameInvalid file id - a9f0b204-809b-446c-bc0b-c77b43a4a2ea

2、判断企业版,搜索关键词enterprise.js

reCaptcha v2 企业版:请求链接不含render参数,或者render参数为explicit,例如:

...

url变为https://recaptcha.net/recaptcha/enterprise.js

...

reCaptcha v3 企业版:请求链接含有render参数,并且render参数不等于explicit,例如:

...

其余url例如https://www.google.com/recaptcha

...

View file
nameInvalid file id - 845d469b-4a95-4e18-9f73-e3e8767eac15

 

第三种:通过插件自动识别

首先阅读插件教程,安装好插件:/api2/anchor变为https://yescaptchawww.atlassiangoogle.netcom/wikirecaptcha/spaces/YESCAPTCHA/pages/9011201

通过浏览器按F12键->console界面,观察createTask发送的请求参数

View file
nameInvalid file id - 3a3cb593-04c6-4b90-a43b-f85278e71e52

识别参数直接就包含了全部需要获取的参数以及版本

全部版本点这里:https://yescaptcha.atlassian.net/wiki/spaces/YESCAPTCHA/pages/164286

...

enterprise/anchor

 ReCaptcha V3

请求链接含有render参数,并且render参数不等于explicit,例如:

Code Block
https://www.google.com/",
		"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
		"type": "NoCaptchaTaskProxyless" // 这里是版本
	}
}

 

第四种:通过自动识别函数获取信息

按F12,进入console, 输入自动定义函数findRecaptchaClients()

Code Block
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 [];
}
findRecaptchaClients()

然后在consolse执行这个函数findRecaptchaClients() 即可找到出对应的信息

其中,version字段为版本

Code Block
[
    {
        "id": "0",
        "version": "V2",
        "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
        "function": "onSuccess",
        "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
        "pageurl": "recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696

anchor 接口url中,size参数只会为size=invisible

ReCaptcha V3 Enterprise

与reCaptcha v3条件一样,区别在于https://www.google.com/recaptcha/

...

如下图

...

api.js url变为https://recaptcha.net/recaptcha/enterprise.js

 

注意,如果浏览器网络请求中没有发现api.jsenterprise.js ,请清空浏览器缓存再次刷新