有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
注意:
为提高验证码产品性能及稳定性,自2023年07月18日起,启用新验证码 JS 地址:https://turing.captcha.qcloud.com/TCaptcha.js 原有验证码 JS 地址:
https://ssl.captcha.qq.com/TCaptcha.js
https://t.captcha.qq.com/TCaptcha.js
https://t.captcha.qcloud.com/TCaptcha.js
https://captcha.gtimg.com/TCaptcha.js
https://captcha.myqcloud.com/TCaptcha.js
https://captcha.cloudcachetci.com/TCaptcha.js
已于2023年08月21日停止使用,请您务必在2023年08月21日前,切换到新验证码 JS 地址,详情请参见 验证码 JS 地址变更指引

不规范接入问题

未在2023年8月21日前完成新验证码 JS 地址变更会有哪些影响?

1. 2023年8月21日后,原验证码 JS 地址:https://ssl.captcha.qq.com/TCaptcha.js 将下线,仍调用该地址的业务将无法正常加载验证码,影响业务使用。
2. 2023年8月21日后,仍使用原验证码 JS 地址的用户将无法正常使用验证码控制台,也无法使用验证码2023年8月后上线的新功能。
请您务必在2023年8月21日前,切换到新验证码 JS 地址,详情请参见验证码 JS 地址变更指引

未动态加载验证码 JS 会产生那些问题?

1. 接入方式:Web/App 客户端接入验证码时,没有采用动态加载 TCaptcha.js 的方式,而是通过其他手段规避加载。
2. 安全风险:以上接入方式会导致验证码无法正常更新,对抗能力无法保证,甚至引起误拦截及前端报错。
3. 解决方案:动态引入验证码 JS,详情请参见 Web 客户端接入
<!-- 验证码程序依赖(必须)。请勿修改以下程序依赖,如通过其他手段规避加载,会导致验证码无法正常更新,对抗能力无法保证,甚至引起误拦截。 -->
<script src="https://turing.captcha.qcloud.com/TCaptcha.js"></script>

未接入票据校验会产生那些问题?

1. 接入方式:仅客户端接入了验证码,服务端未接入票据校验。
2. 安全风险:未接入票据校验,会导致黑产轻易伪造验证结果,失去验证码人机对抗效果。
3. 解决方案:服务端完成票据校验接入,详情请参见 接入票据校验(Web 及 App)接入票据校验(微信小程序)

Web/App 客户端接入问题

测试过程中,提示“您的操作过于频繁,请稍后再试”,该如何解决?

这是验证码服务拦截疑似恶意用户的表现。可能是用户在同一网络环境下高频集中地访问同一场景的验证码服务,导致的小规模风控拦截。解决方法如下:
等待10 - 20分钟后重新进行测试。
尝试更换 IP 或 设备再体验。
登录 验证码控制台,进入验证“安全配置”,将恶意拦截等级调至“体验优先”。

接入后没有弹出验证码是什么原因?

1. 登录 验证码控制台,查看对应的 CaptchaAppId 是否开启了智能免验证或者无感验证:
若开启了智能免验证:可信用户访问时,默认不弹出验证问题。若需要弹出验证码查看效果,可以同设备频繁触发验证。在多次触发后,由于频繁访问,会被验证码系统识别为风险用户而弹出验证问题。
若开启了无感验证:所有的访问默认不弹出验证问题,仅在票据校验阶段返回验证结果。
2. 可能的原因是验证码的相关样式被覆盖,导致无法展示。例如在前端接入时:
.tcaptcha-transform{display:none}:导致验证码弹窗被隐藏。
.tcaptcha-transform{margin-left:9999px}:导致验证码弹窗被平移到其他位置。

Android 使用 Web 前端 H5 方式进行接入,调试过程中先弹出空白背景,后弹出验证码页面如何调整?

调试过程中,正常情况下会首先调起 webview 加载网页,然后弹出验证码页面。
如果出现先弹出空白背景,后弹出图形验证页面的现象。形成原因如下:
加载验证码 js 的时间导致白屏。
空白层形成原因是页面没有内容时,加载的 webview 就显示出来,需要等待 ready 事件触发后再进行 webview 展示。
因此,Android 需要先加载页面但不进行展示,等待 ready 回调后,再通知 Android 进行展示。ready 配置说明,请参见 Web 客户端接入-创建验证码对象 文档。
options={ready: function(size){
// 与Android通信
}}
new TencentCaptcha(appId, callback, options);

App 客户端接入验证码显示不完整如何调整?

验证码根据容器宽高进行居中显示,验证码显示不完整可能由于容器本身设置较宽,导致展示的验证码被截断,该情况需要对客户端的弹框进行调整。此外随意加载其他 webview 都可能会出现截断的情况。

验证码以嵌入式方式展示如何配置?

初始化验证码对象时,将 options 提供的配置参数 type 设置为 embed
new TencentCaptcha(element, CaptchaAppId, callback, {type: 'embed'});
示例代码
<div id="tc"></div>
<script>
//初始化验证码对象,将验证码绑定到id为‘tc’的容器元素中
new TencentCaptcha(document.getElementById('tc'),CaptchaAppId,callback,{type:'embed'}).show()
</script>
注意
如果使用嵌入式,容器元素在界面里找不到会报错。

微信小程序客户端接入问题

是否支持使用 webview 方式接入微信小程序?

不支持。由于微信小程序对绑定域名有个数限制,验证码当前不支持以内嵌 Web 页面的方式接入,仅支持使用 小程序插件 进行接入

在微信小程序中以内嵌 Web 页面的方式接入验证码服务,提示“不支持引用非业务域名”?

由于微信小程序对绑定域名有个数限制,验证码当前不支持以内嵌 Web 页面的方式接入,仅支持使用 小程序插件 进行接入

是否支持百度小程序、支付宝小程序等其他小程序接入?

目前仅支持微信小程序,暂不支持其他小程序接入。登录 验证码控制台,单击页面右上角快速咨询,快速联系我们,提出您的需求。

是否支持使用 uni-app 框架接入微信小程序?

Web/App 端:使用 Web 前端 H5 方式进行接入,详情请参见 Web客户端接入App客户端接入
微信小程序:使用小程序插件方式进行接入,详情请参见 小程序插件接入

服务端票据校验接入问题

票据校验接口返回报错如何处理?

错误码
返回信息
说明
10001
未开通权限
可能原因:
您未领取/购买验证码套餐包:请在 验证码控制台 领取免费包或购买套餐包,即可开通权限。
领取的免费套餐包过期:请登录控制台 套餐包管理 查看免费包是否过期,如果过期,请及时购买套餐包
7
captcha no match
Randstr 和 Ticket 不匹配。建议重新生成 Randstr、Ticket 进行校验。
8
verify timeout
Ticket票据过期,前端生成Ticket后,有效时长为5分钟。
9
Sequence repeat
Ticket票据被重复校验,建议重新生成 Randstr、Ticket 进行校验。
15
decrypt fail
以下情况均可导致该错误发生:
CaptchaType 不等于9。
Randstr 或 Ticket 所填写的值和前端生成的不一致。
userIP 不合法。
CaptchaAppId、AppSecretKey 填写有误。
16
appid no match
CaptchaAppId错误,前端代码 data-appid 和后端 CaptchaAppId 所填写的值,都必须和 验证码控制台 中验证的 CaptchaAppId 一致。

票据校验接口超时时间为多久?

票据校验接口超时时间为5秒。

客户端验证生成的票据有效时长为多久?

有效时长为5分钟,若超过5分钟再进行核验票据,接口会返回"CaptchaCode": 8;"CaptchaMsg": "verify timeout"的报错。

验证码票据过期时间能否手动设置?

当前暂不支持手动设置后端票据校验过期时间,后端 ticket 有效时长为5分钟。

H5 接入问题

如何关闭遮罩层/自定义 loading 样式?

初始化验证码 SDK 时,修改以下内容。
var captcha = new TencentCaptcha("appid",callback,{loading:false})

入口脚本 TCaptcha.js 报跨域错误?

目前验证码接入只支持用 script 动态接入,如通过 xhr、fetch 请求接入将会出现 CORS 跨域错误。

如何指定内嵌验证码元素位置?

初始化验证码 SDK 时,修改以下内容。
/** embedEleDom:指定渲染验证码区域dom元素 */
var embedEleDom=document.getElementById('embedEleDom');
var captcha = new TencentCaptcha(embedEleDom, appid, callback, {type:"embed"})

在内嵌验证码时,如果将 loading 设置为 false,为什么 loading 效果仍然存在?

当 loading 为 false 时,只有弹出式验证码码形生效,内嵌式无法取消 loading 效果。

快速咨询

登录 验证码控制台,单击页面右上角快速咨询,快速联系我们,了解更多详细信息。