A. 如何編寫一個自動投票程序
此文章為ocean所有,版權歸ocean所有
如何編寫投票程序,大致分為這么幾步:
1:手動投票,分析中間出現的每一個頁面的代碼,找出投票規律。
2:捕獲提交頁面的時候所post的信息。
3:編程模擬這個手動過程。
我以我剛寫的這個自動投票程序為例。在此我不會給出網址鏈接(保密),也不會給出真實數據和截圖。
首先手動投票,是一個多選投票,點擊投票按鈕後,會彈出一個網頁,這個網頁會問你是確認還是放棄,點擊確認後,返回投票成功的提示。當在此點擊投票按鈕的時候提示已經投過一票,不能重復投票。關閉所有瀏覽器窗口,打開一個新窗口,投票,仍然可以投票成功。根據如下行為,可以得出如下結論:
1:投票需要有兩次和伺服器的交互,第一次向伺服器提交投票結果,第二次交互向伺服器提交是否確認此結果。
2:此兩頁面之間的session是有聯系的,也即同一個session下不能投兩次票。當關閉瀏覽器,重新開啟劉拉尼後,因為相當於新開了一個session,所以仍然會投票成功。
知道了這個後,就開始抓去兩次交互的HTTP頭信息(Header信息)
第一次交互的信息如下(點擊投票按鈕):
運行後輸出的信息和手動投票時截獲的信息基本一致。
然後就可以運行一個無限循環
inti=0;
while(true)
{
try
{
post();
i++;
Console.WriteLine("這是您投的第"+i+"張票");
}
catch(Exceptione)
{
Console.WriteLine("有錯誤發生:"+e.Message);
}
Console.WriteLine("---------------------------------");
}
我做的命令行程序,要捕捉錯誤避免程序停止。停止程序的時候直接X掉窗口即可。另外用命令行程序的一個好處是不用做多線程,直接多運行幾個exe的實例就可以達到多線程的目的(實際是多進程了)。
那麼我們在做投票(包括其它表單)如何防備別人自動投票或者自動填寫表但呢?session限制的方法顯然不是一個有效的方法。而ip限制不實際,因為很多用戶都沒有ip地址,都是網路運營商作的NAT映射,封掉一個ip地址相當於封掉一批機器。所以一般也不採用。那麼如何最有效呢。可以採用兩種方法:
1:驗證碼,驗證碼直接導致了無法用程序來填寫表單,因為驗證碼都為圖片,文字的驗證碼是沒有任何意義的。圖片的驗證碼就決定了,如果要自動,那麼必須識別出來驗證碼的數字和字母。至少一般人是沒法做的,這是模式識別的問題。當然我也有朋友專門做模式識別的,可以從復雜背景下辨別出來潦草的手寫筆跡,碰上這樣的人誰也沒辦法了。但是像微軟有些表單的驗證碼的圖片作的非常復雜。除了背景有很多底紋之外,數字和圖片還是花體的,並且角度也不一樣,有豎的,有斜的,這樣就很難識別。採用了驗證碼基本可以保證不會被自動投票。
2:ip限時間或票數:限制ip在一段時間內的投票數量或者投兩票之間的間隔時間。比如同一ip地址一天內投票數不能超過100張。或者兩次投票間隔至少5分鍾等。這樣即使有自動投票程序,其速度也就大大降低。起不到快速投票的作用。
如果同時結合這兩種手段,那麼基本很難再做自動投票的事情了。
B. 我國選舉法規定的選舉程序
1、選民登記
在中國,依選舉法規定,選民登記按選區進行。在進行選民登記以後,再編造選民名單、選民名單是選舉機構依法確認的選民名冊。
2、候選人
中國《選舉法》第29條規定:「全國和地方各級人民代表大會的代表候選人,按選區或者選舉單位提名產生。各政黨、各人民團體,可以聯合或者單獨推薦代表候選人。選民或者代表10人以上聯名,也可以推薦代表候選人。」
3、選舉
分直接選舉和間接選舉。有時候選人較多,因而又有初選、預選的方式。初選為間接選舉的一種方式,選舉分階段進行。第一階段選舉選舉人,即初選。第二階段再由選舉人選舉代表或官吏。
4、投票制度
中國《選舉法》規定了投票的程序和方法:在選民直接選舉人民代表大會的代表時,各選區設投票站或召開選舉大會進行,由選舉委員會主持選舉。縣級以上的地方各級人民代表大會選舉上一級人民代表大會代表時,由各該級人民代表大會主席團主持。
選舉一律採用無記名投票,選民如果是文盲或因殘疾不能寫選票的,可以委託他信任的人代寫,選民如果在選舉期間外出的,可以書面委託其他選民代為投票,但事先須經選舉委員會認可。選舉人對於代表候選人可以投贊成票,可以投反對票,可以另選其他任何選民,也可以棄權。
5、選票
中國《選舉法》第38條規定,各級人民代表大會的代表候選人,獲得選區全體選民或者選舉單位的代表過半數的選票時,始得當選。獲得過半數選票的代表候選人名額超過應選代表名額時,以得票多的當選。
如遇票數相等不能確定當選人時,應當就票數相等的候選人重新投票。獲得過半數選票的當選代表的名額少於應選代表的名額時,不足的名額應當在沒有當選的代表候選人中另行選舉,以得票多的當選,但是得票數不得少於選票的1/3。
(2)投票產生程序要怎麼寫擴展閱讀
中國選舉制度具體而言,就是各級人民代表大會和基層村民委員會的代表由選舉產生,但各級人民政府的負責人不一定由選舉產生,而是由上級政府任命,但受本級人大的監督和考核。
所任命的政府負責人要每年向本級人大進行年度述職匯報工作,人大可隨時對其彈劾罷免,能否留任由人大進行信任投票來決定,考核合格通過信任投票的才能留任,被留任的在任期屆滿時才能平調或升遷;考核不合格的由人大予以免職,只能待崗或降職任用,不得升遷,免職造成的空缺由上級重新任命。
這種任命權和罷免權相分離的方式不同於選舉,但也可以充分體現民意,所以是民主的有效形式。這種方式符合國家統一、政令暢通的要求,符合一黨執政、黨管幹部的要求,適合現實國情,能夠使民主和集中得到有機結合,易於實行且效率高,因此是社會主義初級階段實行充分民主的最恰當的方式,是當前政治體制改革的關鍵。
C. 我國的選舉程序
1、我國選舉程序包括:劃分選區、確定選民資格、進行選民登記、公布選民名單、提出候選人、開展介紹或宣傳活動、進行初選或預選、規定投票制度和當選計票制度。
2、劃分選區是指分別實施選舉的區域單位。一般按照地區或人口劃分,每個選區選出1名或幾名代表。
3、確定選民資格指法律規定公民參加選舉所具有的條件。選民是依法享有選舉權的公民。為了進行選民登記,必須確定選民資格。在中國,凡年滿18周歲的公民,不分民族、種族、性別、職業、家庭出身、宗教信仰、教育程度、財產狀況和居住期限,都有選舉權和被選舉權。
但是依法剝奪政治權利的人除外,無法行使選舉權和被選舉權的精神病患者不列入選民名單。
4、進行選民登記指選舉機構依法辦理公民有權參加選舉的程序,在中國,依選舉法規定,選民登記按選區進行。在進行選民登記以後,再編造選民名單、選民名單是選舉機構依法確認的選民名冊。
5、提出候選人指選舉國家代表機關代表或公職人員時先提出供選舉人選舉的人員。在選民登記、公布選民名單以後,即按選區提出候選人,中國《選舉法》第29條規定:「全國和地方各級人民代表大會的代表候選人,按選區或者選舉單位提名產生。
各政黨、各人民團體,可以聯合或者單獨推薦代表候選人。選民或者代表10人以上聯名,也可以推薦代表候選人。」
6、選舉分為直接選舉和間接選舉。有時候選人較多,因而又有初選、預選的方式。初選是間接選舉的一種方式,選舉分階段進行。第一階段選舉選舉人,即初選。第二階段再由選舉人選舉代表或官吏。
7、中國《選舉法》規定了投票的程序和方法:在選民直接選舉人民代表大會的代表時,各選區設投票站或召開選舉大會進行,由選舉委員會主持選舉。縣級以上的地方各級人民代表大會選舉上一級人民代表大會代表時,由各該級人民代表大會主席團主持。
選舉一律採用無記名投票,選民如果是文盲或因殘疾不能寫選票的,可以委託他信任的人代寫。
8、當選記票制度是選民或選舉人用以表示自己贊成或反對候選人的法定選舉文件。當選計票制度是指按一定程序計算選票、確定當選代表或公職人員的制度。關於如何計算選票以確定當選人,各國法律都有規定。
(3)投票產生程序要怎麼寫擴展閱讀:
1、要確定的,是選舉日的選舉活動在形式上是否有效。在直接選舉的地方,選區全體選民的過半數參加投票,選舉有效;在間接選舉的情況下,對選舉的法定人數沒有特別規定,但也應全體代表過半數參加投票。
2、要確定有效票的票數。投票結束後,由選民或者代表推選的監票、計票人員和選舉委員會或者人民代表大會主席團的人員將投票人數和票數加以核對,作出記錄,並由監票人簽字。
對選票的有效性應作這樣的認定:每一選票所選人數,多於規定應選人數的無效;等於或少於規定應選代表人數的有效。
3、有效票的票數統計出來後,就要確定選舉在實質上是否有效:選舉中所投票數多於投票人數的,選舉無效;等於或少於投票人數的,選舉有效。
4、要確定當選。在直接選舉的地方,代表候選人獲得參加投票的選民過半數的有效選票即為當選;在間接選舉的情況下,代表候選人獲得全體代表過半數的有效選票即為當選。
在確定當選的過程中,會出現兩種特殊情況:
第一種情況是,獲得過半數選票的代表候選人的人數超過應選代表名額時,以得票多的當選;如果遇到票數相等無法確定當選人時,應當就票數相等的候選人再次投票,以得票多的當選。
第二種情況是,當選代表的人數少於應選名額時,就要另行組織選舉。