Captcha v4

地域选择

如何选择合适的服务地域

什么是地域?

Geelab 在全球多个地区部署了验证服务,您可以根据用户所在地区选择最近的服务节点,以获得最佳性能和合规性。

可用地域

🌏

全球

适用于全球用户或亚太地区

cap-global.geelabapi.com
🇪🇺

欧洲

适用于欧盟用户(GDPR 合规)

cap-eu.geelabapi.com
🇺🇸

北美

适用于北美用户

cap-na.geelabapi.com

如何选择地域?

根据用户位置选择

选择离您的主要用户群体最近的地域:

用户主要位置推荐地域原因
中国、东南亚、日韩全球最低延迟
欧盟国家欧洲GDPR 合规 + 低延迟
美国、加拿大北美低延迟
全球分布全球覆盖最广

根据合规要求选择

GDPR 合规要求: 如果您的用户包含欧盟居民,建议选择欧洲地域,确保数据存储在欧盟境内。

数据本地化: 不同地域的数据存储在对应的区域数据中心,不会跨境传输。

在控制台中选择地域

  1. 登录 Geelab 控制台
  2. 创建新的验证场景
  3. 在"地域选择"下拉菜单中选择合适的地域
  4. 保存后获取 captcha_idcaptcha_key

重要: 地域一旦选择后不可更改。如需更换地域,需要创建新的验证场景。

在代码中使用

前端 SDK

前端 SDK 需要配置 apiServers 参数来指定地域:

// 根据您在控制台选择的地域配置对应的 apiServers
initGeetest4({
  captchaId: 'YOUR_CAPTCHA_ID',
  apiServers: ['cap-global.geelabapi.com']  // 全球地域
  // apiServers: ['cap-eu.geelabapi.com']  // 欧洲地域
  // apiServers: ['cap-na.geelabapi.com']  // 北美地域
}, callback);

重要: apiServers 参数必须与您在控制台创建 ID 时选择的地域一致。

后端验证

后端验证时,必须使用与 captcha_id 对应的地域域名:

// ❌ 错误:使用了错误的地域
// captcha_id 是欧洲地域,但使用了全球域名
const url = 'https://cap-global.geelabapi.com/validate';

// ✅ 正确:使用对应的地域域名
const url = 'https://cap-eu.geelabapi.com/validate';

完整示例

最佳实践: 将地域配置作为环境变量管理

config.js
// 根据您在控制台选择的地域配置
const REGION_URLS = {
  global: 'https://cap-global.geelabapi.com/validate',
  eu: 'https://cap-eu.geelabapi.com/validate',
  na: 'https://cap-na.geelabapi.com/validate'
};

// 从环境变量读取
const REGION = process.env.GEELAB_REGION || 'global';
const VERIFY_URL = REGION_URLS[REGION];

module.exports = { VERIFY_URL };
server.js
const { VERIFY_URL } = require('./config');

// 使用配置的地域 URL
const response = await axios.post(
  `${VERIFY_URL}?captcha_id=${CAPTCHA_ID}`,
  data
);

地域对比

特性全球欧洲北美
覆盖范围全球欧盟北美
GDPR 合规
亚太延迟🟢 低🟡 中🔴 高
欧洲延迟🟡 中🟢 低🟡 中
北美延迟🟡 中🟡 中🟢 低

常见问题

如何知道我的 captcha_id 是哪个地域?

在控制台的验证场景详情页可以查看地域信息。

可以同时使用多个地域吗?

可以。为不同地区的用户创建不同地域的验证场景,在代码中根据用户位置动态选择对应的 captcha_id

// 根据用户位置选择不同的 captcha_id
const captchaId = userInEU
  ? 'EU_CAPTCHA_ID'
  : 'GLOBAL_CAPTCHA_ID';

initGeetest4({ captchaId }, callback);

前后端地域不一致会怎样?

验证会失败。前端使用的 captchaIdapiServers,以及后端验证使用的域名必须属于同一地域。

// ❌ 错误示例
// 前端使用欧洲地域的 captcha_id 和 apiServers
initGeetest4({
  captchaId: 'EU_CAPTCHA_ID',
  apiServers: ['cap-eu.geelabapi.com']
}, callback);

// 后端却使用全球地域的验证 URL
POST https://cap-global.geelabapi.com/validate  // 验证会失败!

// ✅ 正确示例
// 前端使用欧洲地域的 captcha_id 和 apiServers
initGeetest4({
  captchaId: 'EU_CAPTCHA_ID',
  apiServers: ['cap-eu.geelabapi.com']
}, callback);

// 后端也使用欧洲地域的验证 URL
POST https://cap-eu.geelabapi.com/validate  // 验证成功

更换地域会影响现有用户吗?

是的。更换地域需要:

  1. 创建新地域的验证场景
  2. 更新前端代码中的 captcha_idapiServers
  3. 更新后端代码中的验证 URL
  4. 重新部署应用

建议在低峰期进行地域切换,并做好灰度发布。

下一步