[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将被自动拉黑。
一般情况下不会触发的!