防止刷票的一些方法介紹

在Web開發中,投票模塊會常常出現。這樣就使得防止刷票,成了相當重要的技術。如下是試驗過或者網上找到的防止刷票方法:php

1. IP限制

這是使用的最多,也是最普遍,不可少的刷票限制。並且因爲專題都沒有用戶模塊,使得這個方法,幾乎成了惟一可行的手段。該方式,經過獲取訪問遊客的IP地址,來限制其在一段時間內所能使用的票數。固然,正常訪問頁面投票的遊客,確定都能很好的被這個手段所限制,可是,各類投票的活動和專題,以及豐厚的獎品,使得一些人千方百計的想要進行刷票。web

  • ADSL用戶,能夠經過斷線重撥來更換IP地址。 瀏覽器

  • 使用代理訪問的用戶,咱們也沒法得到其真實的IP地址。 服務器

  • 還有咱們未知的刷票工具。 cookie

以上都是咱們沒有辦法克服的難題,並且對於網吧/內網用戶來講,這樣的設置也會顯得不夠公平。session

2. Cookies 驗證

這也是網上所用到較多的手段,不過,全部來自於客戶端的信息和內容都是不可靠的。熟知cookies原理的人,就能夠很容易的繞過限制。ide

  • cookies 能夠禁用。 工具

  • 使用代理訪問的用戶,咱們也沒法得到其真實的IP地址。 測試

  • Cookies能夠隨意清除、修改。 網站

3. Session 驗證

session會給全部訪問的遊客,指定一個惟一的sessionID。這樣,彷佛對於防止刷票有一些做用。惋惜session有致命的缺點。

  • 關閉瀏覽器,session就會被銷燬。

  • 客戶端禁用cookies,session也會失效。

4. 驗證碼

註冊,登錄,回覆,發帖……驗證碼使用的範圍很廣,不少。惋惜,至於具體效果呢,長久下來,只發現這樣的方式,其實只是加大了普通遊客的投票難度,並且刷票頻繁的訪問驗證碼,也大大加大了服務器負擔。

有一種驗證碼是可行的,google推出的圖形驗證碼,旨在讓用戶將圖片翻轉至正確的方向,方可完成驗證。想必不多有軟件或者電腦操做能夠很好的繞過這樣的驗證碼。不過,缺點呢,實現難度很高。

5. MAC地址限制

做爲web程序,很難獲取真實的Mac地址(我用php/js實驗過,並無成功的獲取到Mac地址)。當咱們讀取客戶端Mac地址時,讀取的也是存儲於註冊表的一個信息,它也是能夠進行修改的。

6. 用戶模塊

這應該算頗有用的方式。每一個遊客,必須註冊了帳戶才能進行投票,經過限制帳戶ID來限制投票,而且能夠限制初始註冊用戶,一段時間內不能參與投票。並且,真有大量的註冊用戶涌入,也能夠增長網站的流量。但是,對於小地區網站來講,這樣會讓網友以爲很麻煩,可能放棄投票,從而可能流失網站的用戶。

7. 行爲記錄

其實,不少刷票行爲咱們是沒辦法進行限制的。但是有時候,咱們卻能夠很好的記錄下來。並且當檢測到非正常投票的時候,自動提出票數,要麼返回投票成功的假象,也能夠很好的限制刷票。

缺點就是,記錄過多的數據,會讓服務器壓力很大。並且,若是記錄行爲的記錄點不夠多,不夠複雜,也可能被刷票的專業戶所參透。

8. 回答問題

第一次使用這個方式限制刷票的時候,咱們很欣慰的看到了不錯的效果。惋惜,若是沒有足夠海量的題庫,很快問題的內容和答案就會被收集。反而讓正常投票的用戶,以爲投票很噁心、麻煩,產生厭惡心理。漸漸的也被咱們拋棄了。

9. 隨機投票地址

該方法, 讓每個訪問頁面的用戶獲得一個隨機惟一的KEY,經過這個KEY,生成一個投票地址,該地址只能訪問一次,使用事後便做廢。

惋惜,指定的KEY的內容,我目前是採用的sessionid+ip+隨機數 生成的MD5碼,而sessionid和ip在上面的內容都提到,是能夠銷燬和篡改的。這樣的方式,也不過是在ip限制和session限制無效時候的垂死掙扎。

10. 填寫信息

投票時,讓遊客填寫×××,姓名,手機號碼等能夠表示一我的身份的信息,來進行惟一性驗證。不過,×××你知道格式,姓名隨便填,手機號碼隨便填寫,也是沒辦法限制的。反而讓正常投票的人以爲麻煩。

11. 投票碼/排號系統

投票前,用戶都須要在其餘頁面/郵箱先獲取到一個惟一投票的編碼/卷,使用一次做廢。不過,如何驗證‘人’的惟一呢,若是有用戶,他的郵箱足夠多,是否是就能夠無限獲取投票碼呢。

對!因此,這也只是治標不治本的方法了。不過,至少,這個方式也會讓刷票的人以爲很麻煩。可是同時,也會讓正常投票的人以爲不方便。不過,可以讓刷票黨,刷得不是那麼痛快,也算是有用了。

12. 人民幣投票

虎,這樣最好,不論是發短信,打電話,仍是支付寶,一票一元人民幣,你若是是足夠捨得,固然,隨便你投,隨便你刷,咱也樂意不是。經過支付接口的結合,做弊是至關難的了。

不過,公平性有待考究,畢竟不是全部人的支持者都有錢,都捨得花錢,可能讓好的做品由於‘窮’而得不到票數,這是在咱公平、民主的社會中,是不提倡的!

好了,差很少就以上這些方式。引用一個網友的原文:「要想徹底杜絕刷票,基本只能靠人」。

拋磚引玉:

  • flash投票,不過不是很清楚原理,有空的時候會投入測試。

  • 插件。 web插件,可能須要用戶下載安裝,普通用戶會以爲很麻煩,可行性有待考究。

  • 一些有趣的設置 例如,短期內的屢次投票,可能致使投票數降低;能夠給做品投負票數,不過有必定概率無效或者反射到其餘做品;相似農場的‘偷菜’,咱們能夠投票等。也許能夠增長一點可玩性,但是公平性就沒法保證了。

總結:我的以爲目前最有效的只能是人民幣投票了,能夠很好的限制刷票行爲。

相關文章
相關標籤/搜索