首先我们要做的是抓包:
1.从网站主服务器 获取验证码参数
先抓包,然后找到关键验证码数据。
http://api.geetest.com/get.php?gt=13729471ed8a011f309d86832df9e639&challenge=ded6629d7b2abe07640d6ad8ed168568&product=embed&offline=false&protocol=http://&type=slide&pencil=/static/js/pencil.1.0.1.js&voice=/static/js/voice.1.1.3.js&path=/static/js/geetest.6.0.9.js&callback=geetest_1539873045718
一般是这样的包,一般的码可以找到这用这个查询。
13729471ed8a011f309d86832df9e639
{"success":1,"gt":"13729471ed8a011f309d86832df9e639","challenge":"ded6629d7b2abe07640d6ad8ed168568"}
这种是比较菜的写法,查询这个就可以找到哪一个链接出来的。
查询到是这个出来的
http://www.laoke.com/getcaptcha.aspx那就用GET。
{"success":1,"gt":"13729471ed8a011f309d86832df9e639","challenge":"48abbf7ea11e857b568fc9b1f8b03691"}采集出这个验证码。
这二个是识别验证码要用到的,所以需要保存为变量,这个不能直接访问,有的网站并不是这么容易找到,但这个比较简单网站。
用软件表达出来就是:利用GET,把参数获取到,
http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
<% keyID=POST动作-1523
{GET}
<网址>http://www.laoke.com/getcaptcha.aspx</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>GBK</数据解码>
<存入变量>OST返回数据</存入变量>
{/GET}
%>
这里就GET验证码,出来参数:
{"success":1,"gt":"13729471ed8a011f309d86832df9e639","challenge":"48abbf7ea11e857b568fc9b1f8b03691"}
然后我们用软件去采集功能,把参数采集出来,其中这个是gt变量,一会我们调用的是这个[gt]还有这个challenge一会调用的是这个[challenge]这二个有点技术的网站会隐藏起来的,但这个没有,说明什么,你懂的哈。
http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
<% keyID=采集-4492
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码></分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分>"gt":"</开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>gt</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码></分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分>"challenge":"</开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<备注>challenge</备注>
{/万能采集}
%>
然后就是用这段极验的专用API代码去做训别了。
http://jiyanapi.c2567.com/shibie?gt=[gt]&challenge=[challenge]&referer=http://www.laoke.com/member/login.aspx&user=自己的账=自己的密码urn=json&model=2&format=utf8代码放去去做识别GET一下就行了
这个图是参数说明,可以对照看看的。
用软件表达出来的是:
http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
<% keyID=POST动作-7489
{GET}
<网址>http://jiyanapi.c2567.com/shibie?gt=[gt]&challenge=[challenge]&referer=http://www.laoke.com/member/login.aspx&user=自己账号&pass=自己的密码&return=json&model=2&format=utf8</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>识别</备注>
{/GET}
%>
然后测试一下,HTTP/1.1 200 OK
Date: Thu, 18 Oct 2018 14:45:59 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 110
Connection: close
Server: yunjiasu-nginx
CF-RAY: 46bbca96a0354cea-CSX
{"status":"ok","challenge":"683186e3d803d909e61352818dda4f539y","validate":"61d72efca8847e65368e9a406ab5d39a"}
识别成功会这样显示的。
然后采回来识别结果,账号密码照填成自己的。
要知道多少钱,这里有对照表,可以看到吧。
识别后就用软件采集结果,把识别结果,和锁的代码都给采集出来,保存变量分别是:[challenge]这个实际就是验证码标识,是验证码必备的锁,每一张验让码,都有这个东东,[validate]采集保存为这个,这个其实我们可以比喻成他就是钥匙了吧。
http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
<% keyID=采集-5525
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>:"ok","challenge":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>"validate":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>validate</存入>
</规则>
{/万能采集}
%>
采出来识别结果后,我们还要写登陆的POST包了,下面就是抓取的这个老客网登陆的包,蛮多加密的吧,http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
POST /member/login.aspx HTTP/1.1
Host: www.laoke.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.laoke.com/member/login.aspx
Cookie: ASP.NET_SessionId=sokmqibfvxiqoqq0bnxyzsbz; Hm_lvt_469023a5f5db630a2df6d6395483890c=1539872828; Hm_lpvt_469023a5f5db630a2df6d6395483890c=1539873037
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 605
__VIEWSTATE=%2FwEPDwULLTIxMzg0ODg3NjgPFgIeBHBhdGhlZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUJYXV0b2xvZ2lujmMP4jiX34oyvszTI4Xb3ChlS%2FrjHuDd6jTCghq0iic%3D&__EVENTVALIDATION=%2FwEdAAWl6RRK60vbSJnF7uYMEVut3OGoFV0wH4BWjvO52fnz3e4sciJO3Hoc68xTFtZGQEggOoR1LgwDXhESEq1MLT8KP1jLJHiqNfRsonZfptdXU2BuVfaiI7UYKAlRT5nkMJzgaN%2FX28ziwyrLzC2BsOEj&email=qiangsh36%40163.com&password=dfgfdsg21&geetest_challenge=ded6629d7b2abe07640d6ad8ed168568fm&geetest_validate=1d7fd9aa39f4ae3d839416de2d998afe&geetest_seccode=1d7fd9aa39f4ae3d839416de2d998afe%7Cjordan&autologin=on&Button2=%E7%99%BB%E3%80%80%E5%BD%95
但我们有用的就二个,一个是VIEWSTATE另一个是EVENTVALIDATION,这二个参数打开网页就可以得到,通过查找,我们查到了他在网页中,http://www.laoke.com/member/login.aspx这里的,
我们打开这个网页用软件,采集回来这二个参数,下面就是软件的采集出来的参数,注意这二个代码,%2F这个要注意是等于/ 这根线的。这里一定要补全一下哦,不然一会乱码的,
http://www.postbbs.com/template/ ... mg/codebg.gif"); color: rgb(102, 102, 102); zoom: 1;">
<% keyID=采集-4347
{万能采集}
<规则>
<要采集的数据>[网页源码]</要采集的数据>
<分割代码></分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分><input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/</开始部分>
<结束部分>"></结束部分>
<查找></查找>
<替换为></替换为>
<采集补全>%2F<采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>EVENTVALIDATION</存入>
</规则>
<规则>
<要采集的数据>[网页源码]</要采集的数据>
<分割代码></分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分>name="__VIEWSTATE" id="__VIEWSTATE" value="/</开始部分>
<结束部分>"></结束部分>
<查找></查找>
<替换为></替换为>
<采集补全>%2F<采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>VIEWSTATE</存入>
</规则>
<备注>VIEWSTATE</备注>
{/万能采集}
%>
EVENTVALIDATION像这种变量名称可以自定义。
1d7fd9aa39f4ae3d839416de2d998afe|jordan
&geetest_seccode=1d7fd9aa39f4ae3d839416de2d998afe%7Cjordan
这二个是相等的
到这里就做完了识别了。
现在测试一下。
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.laoke.com/">here</a>.</h2>
</body></html>
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.laoke.com/">here</a>.</h2>
</body></html>
查看一下,抓的包是一模一样的返回,这里是转向的意思,可以不用理,然后我们可以写入一下缓存,看看有没有登陆成功,按道理这样是成功了的。
看到了吧,这样实际就是登陆成功了的意思了。到这里就完工了。
其实这些全程可以POST,不过比较麻烦,要是配合网页,那就简单许多,这个网站也是比较简单的。
<% keyID=POST动作-8006
{POST}
<网址>http://www.laoke.com/member/login.aspx</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<OST数据>__VIEWSTATE=[VIEWSTATE] 网站加密变量
&__EVENTVALIDATION=[EVENTVALIDATION] 网站加密变量
&email=q546666736%40163.com 这个是账号
&password=46634554321 这个是亲你的密码
&geetest_challenge=[challenge] 识别验证码锁
&geetest_validate=[validate] 验证码结果锁
&geetest_seccode=[validate]%7Cjordan 验证码对应的锁和钥匙
&autologin=on
&Button2=%E7%99%BB%E3%80%80%E5%BD%95</POST数据>
<数据解码>UTF-8</数据解码>
<存入变量>POST返回数据</存入变量>
<备注>登陆</备注>
{/POST}
%>
教程看上去似懂非懂吧,最好是看一下这个过程的教程,就懂很多了,其实什么事情,只要自己折腾一次,慢慢积累起来,你也是高手的潜质哦。
这个说明似乎太技术性了,哪一天自己折腾一次,保证就和小菜分别了。