▲第三,软件脚本步骤说明▲:
第一步先抓包,抓的包如下所示,
抓的就是这个来的,搜这个"gt":一般抓的包就是搜这个代码,得出这个包的网址,就可以为所欲为了。
{"success":1,"gt":"2652656857a8bc2f4d26283f71540697","challenge":"bc3e7f3ab134a13afec7dcc792109efa"}
http://www.xxizj.com/api/geetest/web/StartCaptchaServlet.php?rand=11
如下所示,搜包。
第一步,就是把这个包模拟访问用GET的方式,把包给整出来。
然后采集,所有操作都是标准备化的,抓出来的包用这个<分割代码>challenge":"</分割代码>保存的变量是<存入>challenge</存入>另一个GT分割wa码是<分割代码>gt":"</分割代码>保存的变量是<存入>gt</存入>,最后得到的变量代码是这个:[challenge]和[gt]
<% keyID=采集-5525
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>challenge":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>gt":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>gt</存入>
</规则>
<备注>采集-5525</备注>
{/万能采集}
%>
采集出来后就是做识别了。
http://jiyanapi.c2567.com/shibie?gt=[gt]&challenge=[challenge]&referer=http://www.xxizj.com/api/geetest/verify.php&user=[文本框:极验账号]&pass=[文本框:极验密码]&return=json&model=3&format=utf8
实际就是把代码放到这里,然后进行识别,只要代码没有错,一般可以识别百分之九十九的正确率的。这段代码数识别固定的模式,完全固定。没有半点难度。
识别出这个极验证码,就是把代码采集回来如下图所示
然后就是把采集出来的变量验证码结果,提交给网站,进行识别动作了,这里如下图所示:
登陆还有一个验证码,直接GET就可以获取到这个验证码的:如下所示,只要GET,然后选中图片就可以把验证码图片给得到,然后做一个若快识别格式进去,就可以进行识别了。
http://www.xxizj.com/api/captcha.png.php?action=image&refresh=0.2004408384054096
最后就是做一个登陆,就可以实现POST登陆地址了。这里应该没有难度吧,调用列表值,调用识别结果,POST一下就把账号登陆上去了。
做好识别也可能是出错的验证码,所以这里要做一个判断,判断验证码错误,就重新来过了。
然后是这二步,一步是设置好缓存,为什么要这样弄呢,因为这样出错机率少呀,不是全程POST,这部分开始就是普通的动作了。一来网站限制速度是六十秒才可以发一帖,POST没有意义,二来吧,这个设置好缓存普通操作,有问题可以直接解决清楚。登陆需要还有一个判断,万一账号错了不会进入无用功循环动作。
这里POST缓存写入浏览器里,这个动作经常会用到的,一看就会吧。<缓存值>[COOKIE缓存]</缓存值>是这个缓存,不要弄错了。
然后就是做发帖动作了。发帖动作做的是普通模拟,这15步到第33步都是,最后发帖还有一个鬼验证码,这个网站也没有谁这么麻烦了吧。这些都是比较琐碎的步骤。
<% keyID=打开网址74288
{打开网址}
<URL>http://www.xxizj.com</URL>
<超时>20</超时>
<备注>打开首页</备注>
{/打开网址}
%>
<% keyID=POST动作-5686
{GET}
<网址>http://www.xxizj.com/api/geetest ... et.php?rand=54</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>OST动作-5686</备注>
{/GET}
%>
<% keyID=采集-5525
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>challenge":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>gt":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>gt</存入>
</规则>
<备注>采集-5525</备注>
{/万能采集}
%>
<% keyID=POST动作-7489
{GET}
<网址>http://jiyanapi.c2567.com/shibie?gt=[gt]&challenge=[challenge]&referer=http://www.xxizj.com/api/geetest/verify.php&user=[文本框:极验账号]&pass=[文本框:极验密码]&return=json&model=3&format=utf8&devuser=mmgg520</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>识别</备注>
{/GET}
%>
<% keyID=采集-55
{万能采集}
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>:"ok","challenge":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>challenge</存入>
</规则>
<规则>
<要采集的数据>[POST返回数据]</要采集的数据>
<分割代码>"validate":"</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>validate</存入>
</规则>
{/万能采集}
%>
<% keyID=POST动作-2347
{POST}
<网址>http://www.xxizj.com/api/geetest/verify.php</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<OST数据>geetest_challenge=[challenge]
&geetest_validate=[validate]
&geetest_seccode=[validate]%7Cjordan
&submit=+%E7%AB%8B%E5%8D%B3%E9%AA%8C%E8%AF%81+</POST数据>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>OST动作-2347</备注>
{/POST}
%>
<% keyID=POST动作-5882
{GET}
<网址>http://www.xxizj.com/api/captcha ... 04408384054096</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<数据解码>图片</数据解码>
<存入变量>OST图片</存入变量>
<备注>获取验证码</备注>
{/GET}
%>
<% keyID=验证码识别-3254
{验证码识别}
<验证码来源>[POST图片]</验证码来源>
<验证码类型>数字字母混合</验证码类型>
{/验证码识别}
%>
<% keyID=POST动作-1073
{POST}
<网址>http://www.xxizj.com/member/xxizjb2b-login.php?</网址>
<COOKIE>自动</COOKIE>
<HTTP头>自动</HTTP头>
<OST数据>forward=http%3A%2F%2Fwww.xxizj.com%2Fmember%2Fxxizjb2b-login.php
&action=login
&auth=
&username={获取列表值}账号列表|账号|自动{/获取列表值}
&password={获取列表值}账号列表|密码|自动{/获取列表值}
&captcha=[验证码识别结果]
&submit=%E7%99%BB+%E5%BD%95</POST数据>
<数据解码>UTF-8</数据解码>
<存入变量>OST返回数据</存入变量>
<备注>OST动作-1073</备注>
{/POST}
%>
<% keyID=运行日志9877
{运行日志} [POST返回数据]{/运行日志}
%>
<% keyID=逻辑判断-4618
{如果}<逻辑>[POST返回数据]<包含>验证码</逻辑><否则跳转到结束>keyid=89585</否则跳转到结束><备注>判断验证码错误</备注>
{/如果}
%>
<% keyID=动作跳转16183
{动作跳转}
<当>直接跳转</当>
<条件>包含</条件>
<值></值>
<跳转到>keyid=POST动作-5882</跳转到>
<跳转频率>0</跳转频率>
<备注>动作跳转16183</备注>
{/动作跳转}
%>
<% keyID=89585
{否则}{/否则}
%>
<% keyID=89585else
{逻辑结束}{/逻辑结束}
%>
<% keyID=设置浏览器缓存77310
{设置浏览器缓存}
<缓存值>[COOKIE缓存]</缓存值>
{/设置浏览器缓存}
%>
<% keyID=打开网址24534
{打开网址}
<URL>http://www.xxizj.com/</URL>
<超时>20</超时>
<备注>判断有没有登陆成功</备注>
{/打开网址}
%>
<% keyID=倒计时-20694
{倒计时}<秒>3</秒><备注>倒计时3秒</备注>{/倒计时}
%>
<% keyID=逻辑判断-5325
{如果}<逻辑>[网页源码]<不包含>>退出</逻辑><否则跳转到结束>keyid=70200</否则跳转到结束><备注>退出</备注>
{/如果}
%>
<% keyID=账号列表73537
{切换列表}
<列表集合>
账号列表|否|下一行|0|
</列表集合>
{/切换列表}
%>
<% keyID=动作跳转94742
{动作跳转}
<当>直接跳转</当>
<条件>包含</条件>
<值></值>
<跳转到>keyid=打开网址74288</跳转到>
<跳转频率>0</跳转频率>
{/动作跳转}
%>
<% keyID=70200
{否则}{/否则}
%>
<% keyID=70200else
{逻辑结束}{/逻辑结束}
%>
<% keyID=打开网址13205
{打开网址}
<URL>http://www.xxizj.com/member/xxiz ... ion=add</URL>
<超时>20</超时>
<备注>打开发帖</备注>
{/打开网址}
%>
<% keyID=倒计时-2069452
{倒计时}<秒>3</秒><备注>倒计时3秒</备注>{/倒计时}
%>
<% keyID=下拉选择77532
{下拉选择}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>catid_1</定位值>
<元素序号>0</元素序号>
<选择序号>1</选择序号>
{/下拉选择}
%>
<% keyID=输入54162
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>title</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}总标题总内容|标题|自动{/获取列表值}</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>标题</备注>
{/输入}
%>
<% keyID=输入92554
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>postfromtime</定位值>
<元素序号>0</元素序号>
<输入值>2018-12-01</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>2018-12-01</备注>
{/输入}
%>
<% keyID=输入82882
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>posttotime</定位值>
<元素序号>0</元素序号>
<输入值>2028-12-04</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>2028-12-04</备注>
{/输入}
%>
<% keyID=下拉选择51249
{下拉选择}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>XPATH</定位类型>
<定位值>//*[@id="load_area_1"]/SELECT</定位值>
<元素序号>0</元素序号>
<选择序号>[随机整数1-34]</选择序号>
{/下拉选择}
%>
<% keyID=倒计时-27251
{倒计时}<秒>1</秒><备注>倒计时1秒</备注>{/倒计时}
%>
<% keyID=下拉选择52393
{下拉选择}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>XPATH</定位类型>
<定位值>//*[@id="load_area_1"]/SELECT[2]</定位值>
<元素序号>0</元素序号>
<选择序号>1</选择序号>
{/下拉选择}
%>
<% keyID=输入55068
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>address</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}总标题总内容|标题|自动{/获取列表值}</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>展出地址</备注>
{/输入}
%>
<% keyID=输入97647
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>hallname</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}总标题总内容|标题|自动{/获取列表值}</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>名称</备注>
{/输入}
%>
<% keyID=输入84605
{输入}
<框架定位类型>Xpath</框架定位类型>
<框架定位值>//*[@id="ueditor_0"]</框架定位值>
<定位类型>XPATH</定位类型>
<定位值>/html/BODY</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}总标题总内容|内容|自动{/获取列表值}</输入值>
<输入类型>innerHTML</输入类型>
<限制字数>0</限制字数>
<备注>内容</备注>
{/输入}
%>
<% keyID=输入41228
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>sponsor</定位值>
<元素序号>0</元素序号>
<输入值>{获取列表值}总标题总内容|标题|自动{/获取列表值}</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>标题</备注>
{/输入}
%>
<% keyID=点击39882
{点击}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>answer</定位值>
<元素序号>0</元素序号>
<点击方式>元素点击</点击方式>
<等待新窗体>False</等待新窗体>
<允许新窗口>False</允许新窗口>
<备注>点击算术验证码</备注>
{/点击}
%>
<% keyID=获取网页验证码51412
{网页验证码}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>captchapng</定位值>
<元素序号>0</元素序号>
<图片宽>0</图片宽>
<图片高>0</图片高>
{/网页验证码}
%>
<% keyID=验证码识别-8028
{验证码识别}
<验证码来源>[网页验证码]</验证码来源>
<验证码类型>数字字母混合</验证码类型>
{/验证码识别}
%>
<% keyID=输入81264
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>captcha</定位值>
<元素序号>0</元素序号>
<输入值>[验证码识别结果]</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>验证码识别结果</备注>
{/输入}
%>
<% keyID=采集-9993
{万能采集}
<规则>
<要采集的数据>[网页源码]</要采集的数据>
<分割代码>><span id="questionstr"></分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分></开始部分>
<结束部分>=</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>变量</结果存入>
<存入>算术变量</存入>
</规则>
<备注>算术变量</备注>
{/万能采集}
%>
<% keyID=输入58627
{输入}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>answer</定位值>
<元素序号>0</元素序号>
<输入值>[js:a=[算术变量]]</输入值>
<输入类型>value</输入类型>
<限制字数>0</限制字数>
<备注>算术验证码</备注>
{/输入}
%>
<% keyID=点击11876
{点击}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>部分源码</定位类型>
<定位值><input type="submit" name="submit" value=" 提 交 " class="btn_g"></定位值>
<元素序号>0</元素序号>
<点击方式>元素点击</点击方式>
<等待新窗体>False</等待新窗体>
<允许新窗口>False</允许新窗口>
<备注>提 交</备注>
{/点击}
%>
<% keyID=倒计时-61604
{倒计时}<秒>[文本框:发送倒计时]</秒><备注>倒计时[文本框:发送倒计时]秒</备注>{/倒计时}
%>
<% keyID=逻辑判断-3341
{如果}<逻辑>[网页源码]<包含>http://www.xxizj.com/file/image/check-ko.png</逻辑><否则跳转到结束>keyid=97918</否则跳转到结束><备注>验证码错误</备注>
{/如果}
%>
<% keyID=点击93956
{点击}
<框架定位类型>序号</框架定位类型>
<框架定位值></框架定位值>
<定位类型>ID</定位类型>
<定位值>captchapng</定位值>
<元素序号>0</元素序号>
<点击方式>元素点击</点击方式>
<等待新窗体>False</等待新窗体>
<允许新窗口>False</允许新窗口>
<备注>点击</备注>
{/点击}
%>
<% keyID=动作跳转58086
{动作跳转}
<当>直接跳转</当>
<条件>包含</条件>
<值></值>
<跳转到>keyid=打开网址13205</跳转到>
<跳转频率>2</跳转频率>
<备注>重新识别</备注>
{/动作跳转}
%>
<% keyID=97918
{否则}{/否则}
%>
<% keyID=97918else
{逻辑结束}{/逻辑结束}
%>
<% keyID=请选择要切换的列表55086
{切换列表}
<列表集合>
标题1|否
总标题总内容|否
上传图片|否
标题2|否
内容2|否
分类全国|否
变量1|否
变量2|否
变量3|否
变量4|否
内容1|否
标题3|否
内容3|否
内容4|否
</列表集合>
{/切换列表}
%>
<% keyID=采集-1103
{万能采集}
<规则>
<要采集的数据>[网页源码]</要采集的数据>
<分割代码>>管理</</分割代码>
<结果中含有></结果中含有>
<结果中不含有></结果中不含有>
<开始部分>href="</开始部分>
<结束部分>"</结束部分>
<查找></查找>
<替换为></替换为>
<采集补全><采集结果></采集补全>
<结果存入>列表</结果存入>
<存入>成功采集|a</存入>
</规则>
<备注>成功采集</备注>
{/万能采集}
%>
<% keyID=动作跳转76334
{动作跳转}
<当>直接跳转</当>
<条件>包含</条件>
<值></值>
<跳转到>keyid=打开网址13205</跳转到>
<跳转频率>[文本框:发几帖换号]</跳转频率>
<备注>动作跳转76334</备注>
{/动作跳转}
%>
<% keyID=清空浏览器缓存28561
{清空浏览器缓存}
<模式>稳定模式</模式>
<备注>稳定模式</备注>{/清空浏览器缓存}
%>
<% keyID=账号列表58989
{切换列表}
<列表集合>
账号列表|否|下一行|0|
</列表集合>
{/切换列表}
%>
<% keyID=动作跳转32100
{动作跳转}
<当>直接跳转</当>
<条件>包含</条件>
<值></值>
<跳转到>keyid=打开网址74288</跳转到>
<跳转频率>0</跳转频率>
{/动作跳转}
%>
以上是全部的发帖代码了。
不小心又整了一个极验,这个极验是第三代的,是双从验证码,一个是拖动,然后再出来一个验证码的,会比较麻烦的存在。虽然网站才开始起步,一共也就是收录了四千多,但网站秒收录还是蛮高的存在,有能力还可是要多找找这类B2B网站发一发帖子的。只要内容比较逻辑美化过的,都基本收录的比较好的了。这次脚说明侧重于登陆步骤说明,也是比较新鲜的用法了吧,POST和模拟相结合,得出了方便,快捷的方案。