【网上投票刷票程序开发】-概述
这两天我家北鼻给我出了个小难题,让我帮她投票一个网站。并问我如何能够伪造访问网页的IP地址,这可是给我出了个大难题,整理一晚上才有点眉目
一、基本思路分为两步
1、获取投票的真实路径
真实路径就是在投票页面选择投票的项目后,网页提交到后台处理的页面。通常用GET或者POST的方式。由于投票页面都会对后台处理的网址做一点小处理,经常是通过javascript进行处理。如何提取就不再详述,仁者见仁了。
2、突破ip限制进行循环投票
通常投票发起人为了保证所谓的公平,会对每个ip地址投票的次数进行显示。如:每个ip能投10次。由于伪造访问服务器的$_server[ remote_addr ]基本是不可能的事情。所以只能另辟蹊径,主要就是使用了HTTP代理服务器。获取代理服务器的方法当然就是度娘了搜索了,将网页提供的HTTP代理服务器的端口与IP整理成程序能够识别的格式。能够使得程序一条一条的解读。
二、概念阐述完毕,分享代码部分
1、以下该投票程序的核心逻辑代码,当然是最简单的逻辑。我个人比较懒惰觉得速度不快就多开几个窗口便是,有能力的人也可能在这基础上稍加变动,如:多线程,改成winform程序等。提高程序的操作性和速度。
FileStream fs = new FileStream("ip.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); string str; string[] str1 = new string[2]; while (!sr.EndOfStream) { str = sr.ReadLine(); str1 = str.Split(':'); string s1 = str1[0]; string s2 = str1[1]; int i = 0; for (i = 0; i < 100; i++) { try { HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create("http://www.baidu.com"); //这的网站即便是投票记录到数据库的处理页面 httpRequest.Timeout = 5000; //设置timeout时间,并不是每个带服务器都有用的 httpRequest.Method = "GET"; System.Net.WebProxy proxy = new WebProxy(s1, Convert.ToInt32(s2)); //设置代理的对象信息 httpRequest.Proxy = proxy; //Proxy赋值对象 HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse(); StreamReader sr1 = new StreamReader(httpResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312")); string result = sr1.ReadToEnd(); result = result.Replace("\r", "").Replace("\n", "").Replace("\t", ""); if (result.Contains("######")) //从反馈的html中判断投票是否成功 { Console.WriteLine("投过了:" + s1); break; } Console.WriteLine(s1+":"+result); int status = (int)httpResponse.StatusCode; sr1.Close(); } catch { //代理服务器超时处理 Console.WriteLine("超时:"+s1); break; } } } sr.Close(); fs.Close();
2、代理服务器的格式为XXX.XXX.XXX.XXX:PORXY,将代理服务器写入IP.txt放到程序的可执行文件的同目录下。IP.txt内容例子如下:
1.85.2.253:8001 1.93.8.169:3128 1.255.53.81:80 5.56.12.5:8080 5.56.61.185:12980 5.56.61.185:19350 5.178.66.108:3128 5.206.237.26:8080 5.226.86.83:80 27.116.62.75:8080 …… #代理服务器一般有效时间比较短,最好百度获取最新的!
工程项目打包下载地址如下:网络投票程序.rar
有0条评论