1. 程式人生 > >#CSDN刷票門# 有沒有人在惡意刷票?CSDN請告訴我!用24小時監控資料說話!

#CSDN刷票門# 有沒有人在惡意刷票?CSDN請告訴我!用24小時監控資料說話!

特別宣告:

此次並非針對其他參與2013中國十大優秀開源專案的同行,體系有漏洞要譴責的是制定規則並從中獲益但不作為的權貴,草根們制定不了規則但可發現和利用漏洞,這是程式設計師應有反叛精神沒錯。但被作為道具不可接受。我代表FineUI請求CSDN公開資料,如果您覺得CSDN有必要撕下遮羞布,請共同呼籲。

============

有人說我太較真了,有人說我應該匿名舉報,還有人說有本事你也刷票呀,不過今天我還是要把我知道的說出來,我不會說哪些軟體在惡意刷票,我也沒有資格說哪些軟體在惡意刷票,我只是從程式設計師的角度對我獲取的資料進行實事求是的分析,最終的解釋權還是CSDN(因為他們有完整的資料)

,CSDN也必須正面這次的監管失誤,而不能採取躲躲閃閃、含糊其辭、姑息養奸的態度!

相信很多人都看過《雲圖》,雖然整個電影很長並且晦澀難懂,但是中心思想卻異常明顯:知其不可而為之。一件事情只有你去做了,去努力了,才有進步的可能。同樣,中國的開源社群需要一個乾淨的氛圍,才能進步發展,如果任由惡意刷票的行為春風得意,損害的是整個開源社群的信譽。今天我的這篇文章可能根本啥都改變不了,但至少我努力過。

我叫FineUI

我是FineUI的作者,FineUI控制元件庫經過5年的發展,目前已經發布100多個版本,有完善的文件、教程、示例,有活躍的社群(目前QQ會員4000多人),有180多位網友參與程式碼貢獻,有500多名捐贈會員(佔論壇總使用者的10%以上)。而這次參加CSDN舉辦的《2013年度中國優秀開源專案評選》,也是我第一次的評選活動,因此非常重視。

因此,我發動同事好友給我投票,我在FineUI官方論壇發帖,在FineUI QQ群號召大家給我投票,我還分別於上星期一、星期五、星期天在部落格園發表了三篇文章,由於推薦或者評論數比較高連續三天置頂,即使現在仍然留在“10天內推薦排行”裡面,在每一篇文章的開頭,我都號召大家給當前排名前10唯一的.Net開源專案FineUI投票。我的努力沒有白費,我的FineUI專案一直沒有出過前10名,即使可能有人在惡意刷票,我最終的排名還在第5名。

有人說我是為了名次,這是完全沒有道理的,我的FineUI始終都在前20名,而我也清晰的知道最終前10名是由CSDN專家評的,並且送審時前20名應該是不區分名次的,因此我在投票中排第3還是第20對最終結果沒有任何影響,甚至有可能經過這件事,FineUI就更沒資格了。

有人說FineUI是不是也惡意刷票,我可以明確的告訴大家:沒有。FineUI從頭到尾沒有惡意刷票,我的票數都是同事好友和社群拉票來的,也歡迎CSDN查證。但是肯定存在一個網友給我多次投票的情況,這是誰都不能避免的。

那你FineUI為了什麼?

為的就是程式設計師遇到不公平待遇時揭竿而起的勇氣,《好漢歌》大家都會唱“路見不平一聲吼”,那麼到關鍵時刻也不能做縮頭烏龜。

社群拉票與惡意刷票

請在閱讀本文是一定要分清社群拉票和惡意刷票的區別:

  1. 社群拉票:是通過同事朋友,或者社群關係,號召大家為自己投票,最終投票的是人!當然別人有不投票的權利,你的作用只能是單向的。
  2. 惡意刷票:是指個人或者刷票公司通過機器註冊,或者通過網路水軍投票,最終投票的是機器或者網路水軍!而機器和網路水軍沒有不投票的權利,因為你付出了金錢,因此這個作用是強制的。

注:鑑於有人對“五毛黨”這個詞很反感,就改成了“網路水軍”。

發現問題

投票是從6-13開始,6-23號結束。開始我根本沒想到會出現惡意刷票的情況,直到6-21號星期五下班時,FineUI仍然排在第三名,超過第四名100多票。當我回家開啟電視,興高采烈的看完湖南臺的《天天向上》,居然發現有一個專案超過了我100多票!!!尼瑪,有多少人星期五下班後還在堅持不懈的上網,還在堅持不懈的投票,有沒有???有的話請在評論中回覆,我想大部分人都像我一樣在家看電視、出去吃飯、或者看電影啥的。

我的第一反應就是:刷票、惡意刷票!

總體分析

如果我把星期五晚上的資料採集下來,刷票曲線絕對完美,可惜當時沒有意識到要這麼做,只知道那個專案很穩定的以每半分鐘一票的速度增長。

下面,我們來看下排名靠前的幾個專案從星期五到最後時刻的票數變化:

專案 6-21星期五下午5:30 6-22星期六下午5:30   最終結果
CnPack 1528                     1678(150) 2100(572)
goagent 1523                     1644(150) 1948(425)
FineUI 1034             1256(222) 1330(296)
APDPlat 962 1370(408) 2094(1132)
UbuntuKylin 780                1292(512) 2134(1354)
ThinkPHP 806                874(68)           971(165)
zTree 739                793(54)                860(121)
JEECG 623                705(82)                887(264)
禪道 615                702(87)                777(162)
DWZ 576                727(151)                930(354)

注:

  1. 括號內為增加的票數。
  2. 6-21號的資料來自CSDN網站

請大家定不要誤解,並不是票數增加多的就是刷票,不是這樣的,我也不希望看這篇文章的網友下這樣的結論。我們看到的只是一個表面現象,我們也只能根據這個表面現象來進行分析,最終的解釋權還在CSDN

這是星期六和星期天

請注意,這裡的增加量是星期六和星期天兩天的資料,從投票時間上說只佔據了投票總時間的 2 / 11 = 18%。

按照正常的理解:1. 最後兩天票數增加肯定很多,最後關頭嘛; 2. 星期六、星期天上網人數很少,投票數當然就少了。

我沒法對第一個理解進行證實,我只能對第二個理解進行稍微的說明,為此我特意在星期天在部落格園發表了一篇文章,並在文章開頭號召大家為目前排名前10的唯一.Net開源軟體FineUI投票,由於評論數較多,在部落格園置頂了一天。儘管如此,FineUI在星期天僅僅增加了 74 票,和哪些動輒增加 1000 多票的專案也太不協調了!

無罪假設

我們不能說票數增加的多就是惡意刷票,這絕無道理! 有罪假設是要不得的!

那麼,我們就基於歐美流行的無罪假設,假設沒有任何人惡意刷票,大家的結果都是真實可信的,來看下每天的票數增長?

專案 總票數 平均每兩天增長數 星期六星期天增長數 星期六星期天增長率(平均18%)
CnPack 2100 381 572 27%
goagent 1948 354 425 22%
FineUI 1330 242 296 22%
APDPlat 2094 381 1132 54%
UbuntuKylin 2134 388 1354 63%
ThinkPHP 971 177 165    17%
zTree 860 156 121             14%
JEECG 887   161 264             29%
禪道 777 141 162             20%
DWZ 930 169 354         38%

如果大家的票數都是真實可信的,那麼平均每兩天的增長率應該是 18%,最後兩天是星期六星期天上網人數少,但考慮是最後兩個投票日,所以投票人數會增加也是正常的,不過總不至於會超過 50% 吧,大躍進?

當然,上面分析的都是表面資料,我不能說哪個專案惡意刷票,我也沒資格說哪個專案惡意刷票了,具體的分析結果還是要看CSDN

與CSDN溝通無果

本來,我希望通過向CSDN反映這個情況,CSDN自己解決這個問題就得了,甚至在昨天我還天真的以為CSDN是真的在嚴查這件事,但是我錯了!

2013-6-22 17:47

我通過郵件向CSDN的聯絡人反映有人惡意刷票的情況,沒有迴應。

2013-6-23 10::46

2013-6-24 08:34

我通過CSDN產品客服微博反映有人惡意刷票情況,中午12:22,CSDN老大蔣濤回了三個字“正在查”,我還很友好的把我的24小時統計資料全部發給了CSDN老大蔣濤。

2013-6-24 18:30

CSDN從北京打來電話說是正在查,的確存在同一IP多次投票的情況,但無法確認是社群投票和惡意刷票,但會按照同一IP算一票的結果重新排序。

我請求他們將同一IP算一票的結果,以及去除所有新註冊使用者投票資料發給郵箱看下,他們欣然答應。

然後,我就滿心歡喜地等待,我想CSDN老大都發話了,肯定會解決的(最終證明我還是太幼稚)。

2013-6-25 10:30

等不及的我給CSDN打了個電話,CSDN說無法區分是社群拉票和惡意投票,也不會公佈同一IP算一票的排序結果。在我號稱要將24小時監控資料公佈於眾的情況,他們說要請示下老大。

2013-6-25 11:08

我收到CSDN的一條微信,說是正在內部評審,不會公佈任何資料!

我徹底憤怒了!我感覺被忽悠了,也感覺到了CSDN根本沒有解決問題的誠意,請看相關微博(當時有點激動,說話可能有點不文雅,請各位網友見諒):

image

程式設計師的思路

在星期五下午發現可能有人惡意刷票之後,我就一直在想,怎麼樣才證明一個專案在惡意刷票哪?

如果做一條票數隨時間增長的曲線應該是什麼樣子的呢?

理想的惡意刷票曲線

我們來簡單分析下比較笨的惡意刷票行為:

1. 必須有一個明確的起點,這個點前面票數沒有增加,這個點後面票數開始增加。

2. 起點後增長曲線如果是直線,則簡直一定就是惡意刷票了,因為直線表明有穩定的投票來源,並且票數的增長只和時間有關係,而和任何外部事件(比如通過部落格拉票、論壇拉票)沒有任何關係,和不同時間點的上網人數多少也沒任何關係。

3. 必須有一個明確的結束點,而且這個結束點和大家的作息時間不一致,則簡直一定就是惡意刷票了。因為到晚上,上網人數是逐漸減少了,所以票數的增長也應該是逐漸放緩的,而不可能說在某個時間點之後票數增加戛然而止。特別是晚上12點後人數更少,如果晚上12點後,票數的增長幅度還和之前的一樣,那簡直一定就是惡意刷票了

綜合上面的分析,我畫出了一個比較笨的惡意刷票曲線,當然也是最理想的惡意刷票曲線(手繪圖,畫的不好請見諒):

image

聰明的惡意刷票曲線

聰明的惡意刷票曲線會模擬實際的投票曲線,會出現多個波段,每個波段都近似為直線,一般會刷刷停停,比如某個專案的投票超過我了,就趕緊刷一段,超過假定的目標後就停一停。

image

但是模仿再像,也不是真正的社群拉票曲線,這個就需要結合真實資料具體分析了。

寫程式設計師的程式

經過上面的思考之後,我發現只要能寫一個小程式,抓取CSDN投票網站 24 小時的投票資料就行了,這就難不倒程式設計師了,20分鐘搞定:

   1:   
   2:  static void Main(string[] args)
   3:  {
   4:      timer(null, null);
   5:   
   6:      System.Timers.Timer aTimer = new System.Timers.Timer();
   7:      aTimer.Elapsed += new ElapsedEventHandler(timer);  
   8:      aTimer.Interval = 30 * 1000;
   9:      aTimer.AutoReset = true;
  10:      aTimer.Start();
  11:      
  12:      Console.Read();
  13:  }
  14:   
  15:  private static void timer(object source, System.Timers.ElapsedEventArgs e)
  16:  {
  17:      string pageHtml = GetWebPageContent();
  18:   
  19:      HtmlDocument doc = new HtmlDocument();
  20:      doc.OptionFixNestedTags = true;
  21:      doc.LoadHtml(pageHtml);
  22:   
  23:      HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a[@class='photo']");
  24:   
  25:      string datetime = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss");
  26:   
  27:      for (int i = 0; i < 40; i++)
  28:      {
  29:          HtmlNode node = nodes[i];
  30:   
  31:          string title = node.Attributes["title"].Value;
  32:   
  33:          string nodeText = node.InnerText.Trim();
  34:          nodeText = nodeText.Substring(2, nodeText.Length - 3);
  35:   
  36:          int piaoshu = Convert.ToInt32(nodeText);
  37:   
  38:          Console.WriteLine(piaoshu + "\t" + title);
  39:   
  40:          WriteToFile(title, piaoshu, datetime);
  41:   
  42:      }
  43:   
  44:      Console.WriteLine(datetime + " waiting...");
  45:  }
  46:   
  47:  private static void WriteToFile(string title, int piaoshu, string datetime)
  48:  {
  49:      string filePath = Path.Combine(Environment.CurrentDirectory, @"result\" + title + ".txt");
  50:   
  51:      using (StreamWriter sw = new StreamWriter(filePath, true, Encoding.UTF8))
  52:      {
  53:          sw.WriteLine(datetime + "\t" + piaoshu);
  54:      }
  55:  }
  56:   
  57:  private static string GetWebPageContent()
  58:  {
  59:      WebClient MyWebClient = new WebClient();
  60:   
  61:      MyWebClient.Credentials = CredentialCache.DefaultCredentials;
  62:   
  63:      Byte[] pageData = MyWebClient.DownloadData("https://code.csdn.net/2013OSSurvey/gitop/codevote/vote_num");
  64:   
  65:      string pageHtml = Encoding.UTF8.GetString(pageData);
  66:   
  67:      return pageHtml;
  68:  }

接下來就是等待了,等待是否能夠出現我假設的理想惡意刷票曲線?

分析資料

第二天早上八點,我拿到了完整的資料。這個資料我會完全公開,大家可以下載後自己分析,因為我對資料統計不熟悉,所以只能看一些簡單的曲線了。有大學專業是數學的,這裡的原始資料你千萬不要放過,好好運用統計學分析下,說不定有新的發現。

這裡我只會把我做的統計曲線原封不動的放在這裡,我不能說哪個專案惡意刷票,我也沒資格說哪個專案惡意刷票了,具體的分析結果還是要看CSDN

image

image

image

image

image

我不會對上面的結果做任何評價,是非曲直任由網友和CSDN來評說!

到底有沒有人在惡意刷票?我不知道,大家也不知道,只有CSDN才能告訴我們真相!

有沒有人在惡意刷票?CSDN請告訴我!

本文非常客觀地描述了作為一個程式設計師所能做的事情,但是我不能說哪個專案惡意刷票,我也沒資格說哪個專案惡意刷票了,具體的解釋權還是要看CSDN

而CSDN目前的態度卻是息事寧人、躲躲閃閃,不敢承認自己的監管失職!不敢將“同一IP算一票”的統計結果釋出!更沒有誠信在CSDN首頁就自己的監管失職向廣大網友致歉!

這是一個號稱“全球最大中文IT社群”該有的態度嗎?

我所能做的就只有這些了,貌似我啥都做不了,我甚至連是否有專案在惡意刷票都不能確認,那還只有求助於CSDN了。

CSDN請告訴我:有沒有人在開源專案評選中刷票?

我真的建議CSDN能夠做到如下兩點:

1. 公佈“同一IP算一票”的統計結果(也就是得票數),如果你有更好的統計規則也行;

2. 在CSDN首頁就自己的監管失職向廣大網友致歉。

注:“同一IP算一票”最初是CSDN告訴我的統計方法,我當然知道一般公司的出口IP只有一個,不過我想這個方法的結論應該還算公道,不過你有更好的統計規則也行。

和100多位開源作者交朋友

這次CSDN舉行的《2013年度中國優秀開源專案評選》,網羅了大量優秀的作品,很多作品的作者也是我認識和熟知的。我想絕大部分開源作者對惡意刷票是抵觸了,並且也和我一樣沒有那麼去做,因此絕大部分開源作者應該會支援我的這次投訴,我這次不能去北京和大家一起交流,我感到很遺憾,也是莫大的損失,不過沒關係,網路是沒有地域界限的,如果你想和我交朋友,歡迎關注我的微博:http://weibo.com/fineui/

評論注意事項

1. CSDN這次舉行的《2013年度中國優秀開源專案評選》絕對是對國內開源事業的一個促進,這點是毋庸置疑的,因此希望大家不要對CSDN進行無謂的攻擊。我們想要是隻是CSDN正面自己的監管失誤,擔負起自己的職責。

2. 請不要說哪個或者哪些專案惡意刷票了,這個我不知道,你也不知道,上面給出的資料只是表面現象,我們只能期待CSDN給出官方答案了。

3. 請不要進行人身攻擊。

蔣濤老大的最後回覆

image

蔣濤老大說“目前看到的結果,前20名中有17名都有刷票和拉票的情況,只有3家是比較少的”,我不知道這算不算某種暗示,是不是暗示FineUI也有這種情況,你FineUI就別在鬧了。當然這是我的臆想吧了,人家是老大,可能心胸會寬廣的多,我似我得想不開事情。

不過蔣濤老大,我一定要讓你明白“社群拉票”和“惡意刷票”是完全不同的兩件事,請千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬千萬不要把刷票和拉票放在一起說好不!!!

我已經不止一次的重複,FineUI所有得票都是靠同事朋友以及社群拉票來的,主要社群拉票來自於FineUI官方論壇和部落格園連續三天三篇置頂文章,身正不怕影子斜,FineUI的投票資料也經得起分析,再次我還要鄭重承諾:FineUI沒有自己惡意刷票!也沒有花錢僱刷票公司刷票!

請蔣濤老大公佈你們按照新規則統計之後的資料。

24小時監控資料完整版下載

如果你能從中發現新線索,一定不要忘了告訴我。

大家的反饋

後記

6月28日09:43大會組委會在會上宣佈了年度開源專案評選結果,經過網友近三萬張公開投票,並經過中國開源軟體推進聯盟專家委員會的綜合評選,Cocos2d-X、UbuntuKylin作業系統、APDPlat、ThinkPHP、DWZ(jUI)、Pomelo、FineUI、zTree、UEditor富文字編輯器、SpringSide、禪道專案管理軟體、Node-Webkit當選為2013年度優秀開源專案。

原來號稱《中國十大優秀開源專案》的評選評出了12個,並改名為《2013年度優秀開源專案》,唉....

看到禪道的文章,才發覺原來“第八屆中國開源世界高峰論壇是由中國開源軟體推進聯盟主辦,CSDN是這一屆活動的協辦方。”,又發現一直排名第一的GoAgent居然沒有入選,我似乎有點醒悟了,看來希望CSDN公佈最終的投票資料是不可能了。

自從CSDN的Ada李力說出那句駭人的言辭“如果認為是遊戲,就抱著玩遊戲的態度來參與,就可是又這麼在意用勁,給別人貼大字報,loser心態啊。”,自從CSDN的員工說出“認真你就輸了”的無恥言論之後,就再也不見CSDN的任何人拋頭露面了。

這件事也許很快就會被很多人淡忘,但我想CSDN的老大蔣濤應該不會那麼快就忘記,希望你們在下一屆評選中認真一點,負責任一點,要記住你們的根本是廣大程式設計師的支援,不要再次寒了程式設計師的心。

請關注我的微博 FineUI控制元件庫,讓更多人蔘與到這次的#CSDN刷票門#事件來,只有更多人的參與,CSDN才會把我們程式設計師當回事!!

如果你喜歡這篇文章,支援FineUI揭竿而起的勇氣,請點選頁面右下角的“推薦”按鈕。

相關推薦

no