这个脚本其实发五帖一换IP和ID是不出验证码的,但这个验证码毕竟比较便宜,一分钱就可以整5张码,还算是比较便宜的合作吧,怎么选择这个得看自己的了吧。
如上图所示,这个脚本,登陆是用普通方式的,然后才是用POST发帖,这样就省去了不少抓包分析时间,反正软件可以二用,不管他怎么加密,完全不感冒。
登陆好账号,先是获取一下验证码,这步验证码获取链接可以在抓包的数据找到这条。那怎么找这条代码呢?一般是在抓包里搜这个"gt",就可以找到,有的是隐藏的就比较费劲,这个网站倒是比较不心机,直接就可以搜到它。
搜出这个码后,我们再放到软件去GET一下,他就会返回{"success":1,"gt":"8f8d6eea15ae007d9f741f10d861c6fd","challenge":"a6a42603e6766e93085a362e99ba3f9c"}类似这样的代码,这里要注意是这个缓存,一定要会调用,这也叫中西相结果的使用方法了吧。[浏览器COOKIE]这个的意思是调用登陆的缓存进行缓存同步登陆信息。
获取后到返回来的GET参数后,我们再把这个代码给采集回来,保存为变量。
然后再GET一下识别固定用法,就可以返回验证码结果了。
http://jiyanapi.c2567.com/shibie?gt=[gt]&challenge=[challenge]&referer=http://q.138job.com/Account/Member/Blog_publish&user=[文本框:极验账号]&pass=[文本框:极验密码]&return=json&model=2&format=utf8
然后是这步提交,
submit=%E4%BF%9D%E5%AD%98
这步是提交的意思
&__RequestVerificationToken=x2p2-MoGd591yafGjLQ64jxA6fbvDffM9v79MCwiv66wTTButKOyFRDz6jWP57zF0VrgPH4C3VzCu9SKjw3JGOIN-fjro7hxzqKuLQfQQco7PWtxQCa8Zb8SObiZlDCChbIBuQ2
这步加密代码可以不用理。
&topic=[URLUTF8编码]{获取列表值}总标题总内容|标题|自动{/获取列表值}[/URLUTF8编码]
这个是调用标题的意思吧
&ddlClass.SelectValue=28
&content=[URLUTF8编码]{获取列表值}总标题总内容|内容|自动{/获取列表值}[/URLUTF8编码]
这步是调用内容的意思,注意编码。
&geetest_challenge=[challenge]
&geetest_validate=[validate]
&geetest_seccode=[validate]%7Cjordan
这里三步是识别结果采集回来的变量,也就是识别成功的变量。
&isdraft=false
&logid=0
&X-Requested-With=XMLHttpRequest
最后发成功,GET网页把逻辑判断好的链接给采集回来。下面这里就是这个脚本的源代码:
<% keyID=打开网址95541
{打开网址}
<URL>http://cas.138mr.com/login?servi ... tab%3d0</URL>
<备注>打开点登陆</备注>
{/打开网址}
%>
<% keyID=倒计时-57020
{倒计时}<秒>4</秒>{/倒计时}
%>
<% keyID=输入66632
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>txbUserName</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}账号列表|账号|自动{/获取列表值}</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>输入账号</备注>
{/输入}
%>
<% keyID=输入62561
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>txbUserPwd</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}账号列表|密码|自动{/获取列表值}</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>输入密码</备注>
{/输入}
%>
<% keyID=点击39343
{点击}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>btnLogin</定位值>
<元素序号>0</元素序号>
<点击方式>元素点击</点击方式>
<等待新窗体>False</等待新窗体>
<允许新窗口>False</允许新窗口>
<备注>点登陆</备注>
{/点击}
%>
<% keyID=倒计时-71909
{倒计时}<秒>3</秒>{/倒计时}
%>
<% keyID=打开网址94484
{打开网址}
<URL>http://q.138job.com/Account/Member/Blog_publish</URL>
<备注>发帖网址</备注>
{/打开网址}
%>
<% keyID=POST动作-9764
{GET}
<网址>http://q.138job.com/GetGeetestCaptcha.aspx</网址>
<COOKIE>[浏览器COOKIE]</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>获取验证码</备注>
{/GET}
%>
<% keyID=采集-6573
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>{"success":1,"gt":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>gt</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>"challenge":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<备注>challenge</备注>
{/万能采集}
%>
<% keyID=POST动作-4371
{GET}
<网址>http://jiyanapi.c2567.com/shibie?gt=[gt]&challenge=[challenge]&referer=http://q.138job.com/Account/Member/Blog_publish&user=[文本框:极验账号]&pass=[文本框:极验密码]&return=json&model=2&format=utf8&devuser=mmgg520</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>识别验证码</备注>
{/GET}
%>
<% keyID=采集-6577
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>"challenge":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>"validate":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>validate</存入>
</规则>
<备注>validate</备注>
{/万能采集}
%>
<% keyID=字符替换70136
{字符替换}
<要替换的字符>{获取列表值}内容列表|a|自动{/获取列表值}</要替换的字符>
<查找>aaaa</查找>
<替换>{获取列表值}标题1|a|自动{/获取列表值}</替换>
<存入变量>变量</存入变量>
<备注>qqq</备注>
{/字符替换}
%>
<% keyID=POST动作-5826
{POST}
<网址>http://q.138job.com/Account/Member/Blog_publish</网址>
<COOKIE>[浏览器COOKIE]</COOKIE>
<HTTP头>自动</HTTP头>
<OST数据>submit=%E4%BF%9D%E5%AD%98
&__RequestVerificationToken=x2p2-MoGd591yafGjLQ64jxA6fbvDffM9v79MCwiv66wTTButKOyFRDz6jWP57zF0VrgPH4C3VzCu9SKjw3JGOIN-fjro7hxzqKuLQfQQco7PWtxQCa8Zb8SObiZlDCChbIBuQ2
&topic=[URLUTF8编码]{获取列表值}总标题总内容|标题|自动{/获取列表值}[/URLUTF8编码]
&ddlClass.SelectValue=28
&content=[URLUTF8编码]{获取列表值}总标题总内容|内容|自动{/获取列表值}[/URLUTF8编码]
&geetest_challenge=[challenge]
&geetest_validate=[validate]
&geetest_seccode=[validate]%7Cjordan
&isdraft=false
&logid=0
&X-Requested-With=XMLHttpRequest</POST数据>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>提交</备注>
{/POST}
%>
<% keyID=倒计时-31170
{倒计时}<秒>3</秒>{/倒计时}
%>
<% keyID=逻辑判断-6876
{如果}<逻辑>[POST返回数据]<包含>true,"Message":"发表成</逻辑><否则跳转到结束>keyid=27011</否则跳转到结束><备注>发表成功采网址</备注>
{/如果}
%>
<% keyID=POST动作-2116
{GET}
<网址>http://q.138job.com/Account/Member/Articles</网址>
<COOKIE>[浏览器COOKIE]</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
{/GET}
%>
<% keyID=采集-4813
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码><p>操作</p></分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分>href="</开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>列表</结果存入>
<存入>成功采集|a</存入>
</规则>
<备注>采</备注>
{/万能采集}
%>
<% keyID=27011
{否则}{/否则}
%>
<% keyID=27011else
{逻辑结束}{/逻辑结束}
%>
<% keyID=倒计时-61401
{倒计时}<秒>[文本框:发贴延时时间]</秒><备注>倒计时[文本框:发贴延时时间]秒</备注><备注>倒计时-61401</备注>
{/倒计时}
%>
<% keyID=倒计时-94091
{倒计时}<秒>[文本框:发贴延时时间]</秒>{/倒计时}
%>
<% keyID=动作跳转26028
{动作跳转}
<当>直接跳转</当>
<条件>包含</条件>
<值></值>
<跳转到>keyid=POST动作-9764</跳转到>
<跳转频率>[文本框:几帖换号]</跳转频率>
<备注>动作跳转26028</备注>
{/动作跳转}
%>
很多人一看到拖动验证码就想放弃,可是当您经历过一次后,发现拖动验证码,真的超简单吧,注意顺序,注意调用细节,就可以把这种多余的验证码给搞掂了吧。