voodooq

如果人类少一些私欲,世界将多一些安详……

博客园 首页 新随笔 联系 订阅 管理

上个星期,给朋友作了一个投票作弊的小程序<投票作弊程序制作思路>,后来,本来也相安无事。但是可能是朋友玩的过火了。他给自己投了1万多票了,而其他人还只有几百票,于是网站管理员发现了这个情况。不但把所有的记数全部清零,而且修改了投票的程序,这次真的变成了限制IP投票的方式了,这样就不能使用上次的方式了,我的朋友又来求我。

我拒绝了他的要求,因为他用我的程序作出了不好的事情。但是因为我想挑战一下自己,于是我就想试着作一个可以突破IP限制投票的程序,这次我就不给他了。嘿嘿

再来看看投票测试的步骤

1、联上ADSL,上网,投票,提示投票成功。重新投票,提示投票失败。
2、断开ADSL,重新联上ADSL,上网,投票,提示投票失败
3、删除了COOKIES,断开ADSL,重新联上ADSL,上网,投票,提示投票成功

从上面的操作我们可以看到,这次网站的程序员是使用了即限制COOKIES又限制IP的方法。有了上次的经验,限制COOKIES当然是没有办法难住我了,就是这个突破IP的方式应该如何呢?

我想到了使用代理方式,因为如果你使用代理服务器上网的话,网站获取的IP地址其实是代理服务器的。

于是我作了如下测试

1、在GOOGLE上搜索了一下代理服务器列表(好家伙,还挺多的)
2、打开IE的工具栏,在连接中使用代理连接,填了一个刚才代理服务器的地址。
3、重新连接投票网站,首先删除了COOKIES,然后投票,提示投票成功
4、又找了一个代理服务器地址,重新改了代理服务器的连接。
5、删除COOIKES。投票,提示成功。

看来方法找到了,但是如何在WINFORM中实现这个功能呢?

我在WINFORM中,写入一个textBox,将从网站上找到的代理服务器列表,贴进去然后在MSDN Library中搜索Proxy,发现了有好几种方式都能实现在WINFORM中的代理。

我选择了WebProxy的方式,按照上面的提示,写下如下代码:

                        WebProxy proxy = new WebProxy(proxyStr, true);
                        
//proxy.Credentials = new NetworkCredential("userId", "password", "Domain");
                        WebRequest request = WebRequest.Create("http://www.xxx.com/vonet.asp?user=xxx"); 
                        request.Proxy 
= proxy;
                        
                        HttpWebResponse response 
= (HttpWebResponse)request.GetResponse(); 
response.Close();

 我们分析一下
首先我声明了一个WebProxy的实例,proxyStr是代理服务器的地址,后面的true是对于本地服务,不是用代理服务器。这个其实可以不用写。
其次,建立request对象,写入需要创建的地址,并且设置了代理服务
然后使用resposne对象,执行对于请求的结果。
最后关闭输出

就是这么一个简单的方法,然后再结合我之前的删除COOKIES的方法。

哈哈,一个突破IP投票的小程序就写好了

我试了一下,效果还可以,有些代理由于无法使用,可能会抛出异常,我们捕获并作些处理就好了

恩,希望对大家有所帮助

 

posted on 2006-07-01 15:17  Voodoo's天空  阅读(15518)  评论(0编辑  收藏  举报