基于批处理和油猴脚本的轻量级网页刷票实现(二)
去年写过一篇《基于批处理和油猴脚本的轻量级网页刷票实现》,结果不少朋友满怀希望地给我发来各种微信投票链接,却由于部分投票采用了较为严格的验证机制,上述办法完全行不通,搞得我自己也很不好意思。吃一堑长一智,这里必须提前声明,下面的文字仍然不涉及需要关注后才能投票的微信刷票实现,有此需求的同志请自动绕过!
言归正传,在《基于批处理和油猴脚本的轻量级网页刷票实现》中,我忘记了老毛同志“没有调查就没有发言权”的忠告,未经测试便信口胡言“只要将你的电脑直接连接到调制解调器,当你每次执行ipconfig/release和ipconfig/renew后,你会得到一个新的IP地址,这时候就能开始新一轮的投票”,结果前阵子为了要给某比赛刷票,兴冲冲借回一个“猫”(家里是路由和调制解调器一体机,当时买的时候真没考虑到不能刷票的问题),才发现问题没有想象中那么简单,猜想是不同厂商的产品配置会有所不同,所以执行ipconfig/release和ipconfig/renew后,不见得都会更新ip地址,由于借不到更多的“猫”测试,这个猜想也仅仅停留在猜想阶段,有兴趣的朋友不妨探索下。还好天无绝人之路,ipconfig/release+ipconfig/renew不行,还可以使用rasdial命令断开重连网络,代码是这么写的:
set /a n=0
:cont
rasdial entryname username password
ping -n 5 127.0.1>nul
rasdial /DISCONNECT
ping -n 1 127.0.1>nul
set /a n=n+1
echo %n%
goto :cont
entryname是连接的网络名,可以在控制面板网络设置里变更;username是营运商给你用户名,有可能是一个电话号码,也有可能是一串很长的字符;password是用户名对应的密码。ping -n 5 127.0.1>nul 表示ping自己的主机5次,间隔大概4、5秒,也就是说联网后4、5秒又断网,再连便获得了一个新的ip地址,所以这个参数可以根据自己的网络带宽等实际情况调整。上面这段代码经过测试,可以实现更改ip的目的,但偶尔会出现多次断开重连获得的ip地址一直是同一个的情况,猜想可能是服务商的ip地址池分配问题,同样未能深入探究,有高手不妨留言给我讲解下。
除了上述方案外,还可以使用代理服务器进行刷票。经过不懈的搜寻,本人发现了一个名为“无界”的代理服务软件,该软件使用十分简便,下载后直接打开即可。猜想这东西后面有一个十分庞大的代理服务器群支撑,而且每次服务请求并不固定由哪一个服务器提供代理,这一点对于刷票者来说,简直就是福音。有意尝试的朋友可以直接百度下载。当然,这个方案也存在缺陷,因为毕竟代理服务器的数量是有限的,换句话说,IP地址也是有限的,这直接限制了能够刷到的票数(在我这边的测试环境下,用“无界”能刷到300多票,当然,假如每个ip每天都能投一次票的话,隔天还是能再刷300多票的)。
上述方案针对Internet,在内网情况下基本行不通,这时候可以尝试通过netsh更改内网ip地址,代码大概是这样的:
netsh interface ip set address name="本地连接" source=static addr=10.10.10.10 mask=255.255.255.0 gateway=10.10.10.1
其中,name参数是连接名称,基本是“本地连接”啊、“本地连接 2”啊之类的,通过控制面板网络连接可以查看,记得加英文双引号””;addr是希望获得的ip地址,mask是子网掩码,gateway是网关,这三个要根据你所处局域网的实际情况填写,可以通过ipconfig找到当前的网关和子网掩码,照搬上去,然后通过子网掩码和当前ip地址确定addr可以选择的范围,比如上述命令中,“addr=10.10.10.10 mask=255.255.255.0”这意味着你可以选择的ip地址范围是“10.10.10.2-10.10.10.254”,想了解为什么,可以百度ip地址分配相关内容。
搞定这个前期工作之后,可以尝试通过变量为addr赋值,这样就能实现ip地址定时更换了。
需要注意的是,当你要变更的ip地址被占用(这种情况很常见),会出现地址冲突,产生各种各样的后果,所以,最好是等到夜深人静你的同事都下班关电脑了,再更改ip进行刷票。