自动更换IP的辅助投票工具
在写辅助投票工具中要解决以下问题
1。更换IP
现在很多投票都对IP进行了限制,例如:每个IP每天只能投十票,或者每半小时投一票等等。因此,在辅助投票工具中要能自动更改IP。解决的办法无非是更换本机IP(直接挂在公网上有独立IP的机器)、重复拨号、使用代理等方法。
如果有IP资源(比如在电信机房。。嘿嘿),可以调用NETSH来更换IP,代码为
cmdStr = "netsh interface ip set address name=""本地连接"" source=static addr=" & Trim(inIP) & " mask=255.255.240.0 "
hwnd = WinExec(cmdStr, 0) '参数为0则隐藏窗体
If hwnd < 32 Then 'hWin<32则启动应用程序失败
MsgBox "error!"
Exit Sub
End If
txtShowIP.Text = inIP
在XP下更换IP速度较慢,建议将操作系统换成WIN2000,一般1至3秒即可更换完毕。
如果没有IP资源,就只好采取重新拨号或更换代理的办法来变换IP。由于电信局对拨号用户分配IP的规则,重新拨号也往往会得到重复IP,而更换代理则由于代理不稳定,效果也不好。不过我曾经试过ADSL,虽然也会出现重复IP,但其拨号上线的速度很快,建议没有IP资源的用户可以采取反复拨号、投票的方法来避开IP验证。
2。自动勾选投票选项。
一般投票会将所有候选人列出来,勾选后点投票。勾选会有一定的要求,例如最少不能少于五名,最多不能少于十名等等。在这种情况下,除了每次一定要勾选指定的客户以外,还要随机的勾选其他四名候选人,将票数分散,防止其他候选人对指定客户形成威胁。同时,为了方便客户操作,还应当允许客户指定投某些人的票(比如排在最后几名的候选人)。自动勾选有两种实现的方法,一是先用WEB控件将网页下载,然后通过DOCUMENT对象对CHECKBOX进行操作。这种方法比较简单、直观。另一种是使用截包工具(SNIFFER)截下投票时发送的包,通过分析找到勾选的参数,然后在程序里直接构造出包,通过INET控件递交到服务器。这种方法速度较快,并可通过返回的数据分析投票是否成功。使用这种方法时,要注意中文的URL编码问题。
3。COOKIES
如果你更换了IP,重新打开了IE,并按规定投出票,但是服务器仍然告诉你:你已经投过票,请不要重复投票。这时,你就应该考虑服务器可能是使用COOKIES来标识了你的机器。你需要在重新打开IE之前清空COOKIES。另外,VB的WEB控件和INET使用的是同一个COOKIE域,所以,为了能够再次投票,最好在清空COOKIES之后重启程序,方法是在MAINFORM的UNLOAD事件中加一个Shell App.EXEName。不过一定要注意呀!一定一定要加一个东东对这一行语句进行开关,不然的话。。。。。。。
4。验证码的识别
为了防止使用投票工具、MOUSE点击器等进行自动投票,现在网站都采用了验证码机制。关于验证码的识别,我在另一篇里已经讲了。这里只讲一下取验证码图片的问题。在做测试时,从网上找到一个资料,是说可以通过调用“COPY”这个右键菜单复制到剪贴板中,然后再从剪贴板拷贝到PIC控件中。后来正式做的时候却忘了怎么做的。上网查到半夜二点多也没找到那个资料。后来没办法,我采取了另一种方法来实现:使用DOCUMENT对象来调用滚屏定位到验证码的位置,然后使用BitBlt来直接取到图片。
现将其中一个程序运行图片附后:
1。更换IP
现在很多投票都对IP进行了限制,例如:每个IP每天只能投十票,或者每半小时投一票等等。因此,在辅助投票工具中要能自动更改IP。解决的办法无非是更换本机IP(直接挂在公网上有独立IP的机器)、重复拨号、使用代理等方法。
如果有IP资源(比如在电信机房。。嘿嘿),可以调用NETSH来更换IP,代码为
cmdStr = "netsh interface ip set address name=""本地连接"" source=static addr=" & Trim(inIP) & " mask=255.255.240.0 "
hwnd = WinExec(cmdStr, 0) '参数为0则隐藏窗体
If hwnd < 32 Then 'hWin<32则启动应用程序失败
MsgBox "error!"
Exit Sub
End If
txtShowIP.Text = inIP
在XP下更换IP速度较慢,建议将操作系统换成WIN2000,一般1至3秒即可更换完毕。
如果没有IP资源,就只好采取重新拨号或更换代理的办法来变换IP。由于电信局对拨号用户分配IP的规则,重新拨号也往往会得到重复IP,而更换代理则由于代理不稳定,效果也不好。不过我曾经试过ADSL,虽然也会出现重复IP,但其拨号上线的速度很快,建议没有IP资源的用户可以采取反复拨号、投票的方法来避开IP验证。
2。自动勾选投票选项。
一般投票会将所有候选人列出来,勾选后点投票。勾选会有一定的要求,例如最少不能少于五名,最多不能少于十名等等。在这种情况下,除了每次一定要勾选指定的客户以外,还要随机的勾选其他四名候选人,将票数分散,防止其他候选人对指定客户形成威胁。同时,为了方便客户操作,还应当允许客户指定投某些人的票(比如排在最后几名的候选人)。自动勾选有两种实现的方法,一是先用WEB控件将网页下载,然后通过DOCUMENT对象对CHECKBOX进行操作。这种方法比较简单、直观。另一种是使用截包工具(SNIFFER)截下投票时发送的包,通过分析找到勾选的参数,然后在程序里直接构造出包,通过INET控件递交到服务器。这种方法速度较快,并可通过返回的数据分析投票是否成功。使用这种方法时,要注意中文的URL编码问题。
3。COOKIES
如果你更换了IP,重新打开了IE,并按规定投出票,但是服务器仍然告诉你:你已经投过票,请不要重复投票。这时,你就应该考虑服务器可能是使用COOKIES来标识了你的机器。你需要在重新打开IE之前清空COOKIES。另外,VB的WEB控件和INET使用的是同一个COOKIE域,所以,为了能够再次投票,最好在清空COOKIES之后重启程序,方法是在MAINFORM的UNLOAD事件中加一个Shell App.EXEName。不过一定要注意呀!一定一定要加一个东东对这一行语句进行开关,不然的话。。。。。。。
4。验证码的识别
为了防止使用投票工具、MOUSE点击器等进行自动投票,现在网站都采用了验证码机制。关于验证码的识别,我在另一篇里已经讲了。这里只讲一下取验证码图片的问题。在做测试时,从网上找到一个资料,是说可以通过调用“COPY”这个右键菜单复制到剪贴板中,然后再从剪贴板拷贝到PIC控件中。后来正式做的时候却忘了怎么做的。上网查到半夜二点多也没找到那个资料。后来没办法,我采取了另一种方法来实现:使用DOCUMENT对象来调用滚屏定位到验证码的位置,然后使用BitBlt来直接取到图片。
现将其中一个程序运行图片附后: