[TOC] # 注册账户 [点击这里注册账户](http://jiyan.c2567.com/index.php/login/index.html) # 验证码通过简单流程 ![](https://box.kancloud.cn/19cc3dd8c3ce2883032f419ccfc80729_1180x889.png) ### 1.从网站主服务器 获取验证码参数 ``` {"success":1,"gt":"6b23c93a5c10ce9e5ff584e26cd4b4db","challenge":"0c2f5599912c585e8079ce756d0bec6e"}} ``` ### 2. 将参数传入识别http接口,得到验证码结果通过验证 [请这里这里查看识别接口的详细参数说明](识别接口.md) #### 请求识别接口 ``` http://jiyanapi.c2567.com/shibie?gt=请输入gt参数&challenge=请输入challenge参数&referer=请输入来源地址参数&user=test&pass=test&return=json&model=3 ``` 需要注意这里 model 的值 必须根据【验证码参数】中success 的值判断。 如果是第三代。success=1 设置 &model=3, success=0 设置&model=4 如果是第二代。success=1设置 &model=0 ,success=0 设置&model=1 #### 识别成功返回结果 ``` {status: "ok",challenge: "3d033f099597f5ae63e2e2c902301d183z",validate: "8f6ebd56291ed6569ac40c1d74780985"} ``` 请务必使用我们接口返回的`challenge`和`validate` 不要提交,请求识别接口时的`challenge` ### 3. 提交至网站主服务器二次通过 ``` &geetest_challenge=challenge &geetest_validate=validate &geetest_seccode=validate|jordan geetest_seccode结果和validate是一样的请注意. challenge请务必使用识别接口所返回的challenge,不要自作聪明。 ``` # 获取验证码验证码参数 ### 第一种情况,需要传入,gt 和 challenge 搜索 `http://api.geetest.com/get.php?gt=` 或者直接搜索`gt"` 找到 ``` http://api.geetest.com/get.php?gt=6b23c93a5c10ce9e5ff584e26cd4b4db&challenge=0c2f5599912c585e8079ce756d0bec6e&product=embed&offline=false&callback=geetest_1462575043902 ``` 这里得到 `gt`为`6b23c93a5c10ce9e5ff584e26cd4b4db` `challenge` 为`0c2f5599912c585e8079ce756d0bec6e` 继续搜索目前`challenge`的值 `0c2f5599912c585e8079ce756d0bec6e` 找到返回该值的地址 ``` http://verify.panda.tv/captcha/get?app=pandatv&_=1462575041275 ``` 返回结果 ``` {"errno":0,"errmsg":"","data":{"success":1,"gt":"6b23c93a5c10ce9e5ff584e26cd4b4db","challenge":"0c2f5599912c585e8079ce756d0bec6e"}} ``` 总而言之,找到最初出现,challenge值的地方,如果找不到那就是第二种情况了。 ### 请注意,不要直接在代码中访问任何 `geetest.com` 的url来获取参数 这是错误的. ### 第二种情况,只需要传入gt 搜索 `http://api.geetest.com/get.php?gt=` 找到 ``` http://api.geetest.com/get.php?gt=421b84eeaee7b2aed4c0ec5706d8b571&product=embed&offline=false&callback=geetest_1462575043902 ``` 这里得到`gt`的值,`421b84eeaee7b2aed4c0ec5706d8b571` # 例子 ## 查看您抓取到的数据 1. 搜索关键字,gt= 2. 发现get参数中含有challenge,得到challenge的值,继续搜索。找到返回该值的地方。 如果get参数中没有包含challenge,则只需要传入gt的值 ## 技巧 搜索抓包结果时,直接搜索 `challenge"` 有可能直接找到噢。 ![](http://jiyan.c2567.com/demo/assets/img/1.png) ![](http://jiyan.c2567.com/demo/assets/img/2.png) # 需要注意的地方 你的代码中是无需访问任何 `*.geetest.com` 的请求,如有访问请删除即可。 ## 判断返回 gt 和 challenge 的请求是否返回了空白 传入识别时,建议判断 gt 和 challenge的值 是否为空, 如果为空,请不要传入识别,避免过多的无效请求,超过阀值,IP将被自动拉黑。 一般情况下不会触发的!