日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动投票程序

發布時間:2023/12/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动投票程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前天接到我哥的電話,說讓我幫忙寫個投票的程序要為他的一個朋友在網上投票,這種作弊行為我向來是不恥的,但是為了我哥的面子就硬著頭皮開始干了。本來以為分分鐘可以搞定的小程序,但是因為服務器是.net做的,挺麻煩,感冒好幾天了,前天達到了高潮,頭疼乏力,于是暫時擱置,洗洗睡了。昨天晚上開弄的,開始想用javascript來做,但是因為框架跨域不能訪問,再加上javascript實在難于調試,于是改用.net來做,但是軟件給人家的時候還要那邊裝.netFramwork,這事挺惡心的。

實現的原理是這個樣子的,首先用嗅探器(我用的是微軟的Fiddler2,網上有的下載也挺好用)查出當點擊投票時提交的數據,然后使用WebClient模擬瀏覽器發給服務器就行了。源代碼如下:

?private?void?Post()
????????
{
????????????
try
????????????
{
????????????????
//?要提交表單的URI字符串。
????????????????string?uriString?=?"http://*****.****.**/index.aspx";
???????????????
????????????????
///
????????????????//?打開頁面
????????????????///
????????????????WebClient?webClient?=?new?WebClient();
????????????????
byte[]?responseData?=?webClient.DownloadData(uriString);
????????????????
string?srcString?=?Encoding.UTF8.GetString(responseData);

????????????????
///
????????????????//?填寫頁面并提交
????????????????///
????????????????webClient?=?new?WebClient();
????????????????webClient.Headers.Add(
"Content-Type",?"application/x-www-form-urlencoded");

????????????????
//?獲取頁面的?VeiwState????????????????
????????????????string?viewStateFlag?=?"id="__VIEWSTATE"?value="";
????????????????
int?i?=?srcString.IndexOf(viewStateFlag)?+?viewStateFlag.Length;
????????????????
int?j?=?srcString.IndexOf(""",?i);
????????????????
string?viewState?=?srcString.Substring(i,?j?-?i);

????????????????
//?獲取頁面的?EventValidation????????????????
????????????????string?eventValidationFlag?=?"id="__EVENTVALIDATION"?value="";
????????????????i?
=?srcString.IndexOf(eventValidationFlag)?+?eventValidationFlag.Length;
????????????????j?
=?srcString.IndexOf(""",?i);
????????????????
string?eventValidation?=?srcString.Substring(i,?j?-?i);

????????????????
//?提交按鈕的文本
??????????????
????????????????
string?submitButton?=?"Button";
????????????????viewState?
=?System.Web.HttpUtility.UrlEncode(viewState);
????????????????eventValidation?
=?System.Web.HttpUtility.UrlEncode(eventValidation);
????????????????submitButton?
=?System.Web.HttpUtility.UrlEncode(submitButton);

????????????????
//?要提交的字符串數據。格式形如:user=uesr1&password=123
????????????????string?postString?=?"Button1=&DataList1$ctl17$CheckBox1=on&__VIEWSTATEENCRYPTED="?+?"&__VIEWSTATE="?+?viewState?+?"&__EVENTVALIDATION="?+?eventValidation;
???????????????


????????????????
//?將字符串轉換成字節數組
????????????????byte[]?postData?=?Encoding.ASCII.GetBytes(postString);
????????????????
//?上傳數據,返回頁面的字節數組
????????????????responseData?=?webClient.UploadData(uriString,?"POST",?postData);
????????????????
//?將返回的將字節數組轉換成字符串(HTML);
????????????????
//?ASP.NET?返回的頁面一般是Unicode,如果是簡體中文應使用?
????????????????
//???Encoding.GetEncoding("GB2312").GetString(responseData)
????????????????srcString?=?Encoding.UTF8.GetString(responseData);

????????????????
///
????????????????//?分析返回的頁面
????????????????///
????????????????//?......?......
????????????????
????????????}

????????????
catch?(WebException?we)
????????????
{
????????????????
string?msg?=?we.Message;
????????????}

????????}

然后在計時器控件的tick方法中使用多線程調用post就可以了

private?void?timer1_Tick(object?sender,?EventArgs?e)
????????
{
????????????ThreadStart?ts?
=?new?ThreadStart(Post);
????????????Thread?thread?
=?new?Thread(ts);
????????????thread.Start();
????????????label3.Text?
=?Convert.ToString(Convert.ToInt32(label3.Text)?+?1);
????????}

因為服務器那邊使用的限制方式是5分鐘內同一個ip不能重復投票,所以這種方法投票效率不高,本來打算做一個adsl短線重新登錄的程序加進來的,問問那邊說這樣就行了,也就懶的做了。?

總結

以上是生活随笔為你收集整理的自动投票程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。