最近还是一个投票任务,不过这次是公司给的活,给某位名人在某大网站作弊投票,呵呵,不知道怎么会搞出网上投票的,我想想网上投票基本都能作弊。 经过分析发现这里的投票程序限制有三个,1、referer,2、IP,3、cookies。反正1和3都好解决,关键是2怎么办。本来拿我上次的拨号程序改吧改吧就给了人家,结果这几天他那个IP段的IP基本都已经投过票了。现在大部分IP都不能投了。于是又缠我改成多代理投票。 这个小程序代码分成三部分,一部分是读proxy列表的代码,我将列表处理成ArrayList.第二部分是投票的代码,这里伪造referer,读取代理投票。第三部分是投票日志。第一和第二部分在一个线程中运行,第三部分另外一个线程。主要还是说第二部分吧。 选中了.net中HttpWebRequest因为它和WebRequest类都有Proxy的方法。但是在WebRequest类中某些Headers的类别添加受到限制,如referer,而他的子类HttpWebRequest中倒是提供了referer属性的修改方法,所以就用HttpWebRequest了。整个代码都很简单,这个方法的参数uri是代理地址和端口,就几行代码就能把票投上,用代理列表来个循环就ok了,但是我觉得HttpWebRequest.Proxy的速度有点慢,下次改成socket的试试。 [code] private void send(string uri) { //需要post的数据 string sData="q_884%5B%5D=4316&user_5=&user_6=&user_8=&poll_id=7514"; HttpWebRequest Req = (HttpWebRequest)HttpWebRequest.Create("http://XXXXXX/polling.php"); WebHeaderCollection wh=Req.Headers; byte[] b=Encoding.ASCII.GetBytes(sData); //伪造header Req.Proxy=new WebProxy("http://"+uri+"/",true); Req.ContentType="application/x-www-form-urlencoded"; Req.Referer="http://XXXXXX/"; Req.Accept="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; Req.Headers.Add("Accept-Language","zh-cn"); Req.Headers.Add("Accept-Encoding","gzip, deflate"); Req.UserAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"; Req.ContentLength=b.GetLength(0); Req.Headers.Add("Cache-Control","no-cache"); Req.Method="POST"; Stream s=Req.GetRequestStream(); s.Write(b,0,b.GetLength(0)); s.Close(); WebResponse response=null; response=Req.GetResponse(); /*for (int i=0;i
02

评论 (1)

西马
西马 2006.04.12 23:13
快成作弊专家了

发表评论