目录:常见的验证码平台对比
技术细节请见👆
PHP 测试页面:https://www.chenky.com/just4fun/verification-code-test/php/geetest
Node.js 测试页面:https://www.chenky.com/just4fun/verification-code-test/nodejs/geetest
极验文档首页:http://www.geetest.com/install/ 此为第一资料来源
准备步骤比较简单,注册账号,完成后即是试用的企业标准版,版本并不会影响到下面的测试。在验证管理添加验证后获取的 id 和 key。留存备用。
PHP:
1、按照文档接入后端 SDK,极验官方给出了5种语言的 SDK,社区给出了3种,看来支持的还是可以的嘛。文档中对 SDK 的接口有一个统一的说明,这个说明在后续的过程中证明还是有些作用的。
PHP 有现成的 SDK,不过诡异的是 PHP 语言中没有给出 compser 安装的命令,在官方的Github项目中的 composer.json 文件中找到该SDK名称为 gee-team/gt-php-sdk 。
尝试运行命令
composer require gee-team/gt-php-sdk
可以成功安装
但是在接入的时候不成功,错误提示是缺少某些函数,看到 Issues #1 中提到使用 release 版本 ,最新的 release 版本是 v3.1.1 ,于是尝试运行
composer require "gee-team/gt-php-sdk:3.1.1"
可以成功安装,并且也能正常使用。后来发现运行
composer remove "gee-team/gt-php-sdk:dev-master"
也是可以安装成功并成功接入的,不过个人还是建议使用指定 release 的命令。
2、根据文档给出的示例代码写一个预处理接口以帮助生成验证码。直接复制示例代码到 Laravel 中是用不了的,需要做稍许修改,并且可以将 seesion 部分调用写的更优雅些。将极验提供的 key 和 id 存放到 .env 中,以方便部署配置。
接入成功后会返回一个json字符串
接着按照示例代码将验证接口也写好,这里需要批评一下极验的工程师,SDK中的 vendor/gee-team/gt-php-sdk/lib/class.geetestlib.php 文件中的 sucess_validate 函数居然拼错了。。。还好文档代码是正确的拼写。
3、完成以上工作就可以接入前端了,在接入前端的时候有些懵,完全不知道极验的文档作者是怎么样的思路,比如:
哪来的上文???
在 SDK 中找寻一番后,发现有例子(vendor/gee-team/gt-php-sdk/static/login.html),在和文档中相互验证了一下后才知道是如何接入的
在前端完成接入后很顺利的就能正常获取验证码并验证了,这里我将每种形式都展示一下并将前端的一些函数也通过 console.info 和 alert 的方式展示一下。
4、总结一下,极验在 PHP 中的集成还是比较方便的,如果能增加 composer 相关命令的文档就更好了。前端集成稍微有点坑,不过还好不复杂也有例子,另外,企业版提供的图片蛮多也蛮好看。
Node.js
1、有了 PHP 的经验,Node.js 接入应该更熟练一些。用 npm 直接安装
npm install geetest --save
2、安装完后版本是 “geetest”: “^3.0.2” ,文档写的很简单并直截了当的引导到了 Github 上。
按照文档用 npm 安装后并写了预处理的接口,结果发现,回调中没有gt字段
找了找文档和 Issues 并没发现有提到这个问题的,看了 SDK 中的 demo 页面 node_modules/geetest/demo/app.js 第23-29行,明白了,gt不是在回调中获取的,而是从 Geetest 实例中获取的
这有点坑啊。。。。不带这么玩的,文档中好歹给个说明撒。
预处理写完后在写接入验证接口的时候直接复制了 README 中的代码。。。发现少了一个右括号
而且在 PHP SDK 中是可以区分是否宕机的,Nodejs SDK中没说明如何判断。。。额。。好尴尬
3、前端和 PHP 一样没啥特别的复制过来直接用,HTML 转 pug 这个并不是今天的主题也就不说了。
4、于是终于完成Node.js的接入。明显感觉到极验对于Node.js不是很上心啊。。。其实吧,如果不愿意这样折腾,直接给出Rest风格接口就好了嘛。。让社区去封装,多好。
总结:极验的接入还难度不高,但是文档还有待优化提高。
《常见的验证码平台对比之极验》上有2个想法