您的位置:首页 > 其它

投票机的实现及相关技术(一)

2006-04-03 16:35 232 查看
本文仅限于投票机技术的讨论与学习,请大家以后不要再留言索求XXXXX的投票机了,我是不会写的。谢谢!

这几天没日没夜,就为了一个网络投票。在网上找了一下,还有很多收费的投票机,而且还不便宜,效率似乎也不是很高,自己动手写了一个。(原创文章,转载请联系我)
其实投票机就是一个往目标服务器Post数据,看以下代码,

cl = new WebClient();

cl.Headers.Add("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");

cl.Headers.Add("Referer", idxPage);

cl.Headers.Add("Accept-Language", "en-us");

cl.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

cl.Headers.Add("UA-CPU", "x86");

cl.Headers.Add("Accept-Encoding", "gzip, deflate");

string result = cl.UploadString(votePage, "POST", "R1=xx&B1=%CD%B6%C6%B1");

以上的代码很简单,就是往服务器Post一个“R1=xx&B1=%CD%B6%C6%B1”数据,前面的cl.Headers.Add(…..)是伪造一个请求的头。

以上是一个简单的实现,很多服务器都进行IP判断,这样以上代码投完服务器指定的每IP投多少票后,就不能再投了。下面就是使用代理服务器。

WebProxy proxy = new WebProxy(hostip, hostport);

cl.Proxy = proxy;

使用了代理服务器后,如果服务器不进行代理服务器的检测,那么每换一次代理,就相当于换了新的IP。代理当然可以实现程序自动更换,比如说你先取一个列表,然后随机从列表中去,具体代码我就不贴出来了。

投票程序如果加了验证码,那么就要取得验证码,单纯的数字验证,相当简单,我就不说了,这里说一下使用图形验证码,看下面图形(相对比较简单的图形验证)

static void LoadConfirmCodes()

static string GetConfirmCode(Bitmap bmp)

static int ImageToNumeric(Bitmap bmp)

以上代码将像素点按背景和非背景转换成了字符串,然后取得Hash,然后将取回来的图片进行转换后与以存在的对比。当然,以有的库你必须先学习,也就是说你先必须从网站先学到(0-9)这10个图片,分析出字符串,得到每个数的Hash。
这里只是简单的说明了一个基本的投票机的原理,如果有足够的资源,而且不能使用代理的时候,就可以使用自动切IP(要求你有足够多的合法IP资源)和ADSL自动断线重拨(要求你有足够多的ADSL)。下一篇文章将说明如何切IP和ADSL自动断线重拨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: