2014-06-12 27 views
0

我有一個內容可以「喜歡」的網站。沒有使用任何API,這是一個自定義的按鈕,只是增加了「喜歡」的統計數據以保持內容的安寧。搜索機器人按下我的按鈕...?我可以預防嗎?

現在,我有一個意見計數器,每個頁面加載和一個像按鈕。按下類似按鈕後,該頁面生命週期中的任何連續喜歡都會被禁用。

我遇到了一個問題,我的喜好超過了我的觀點,理論上這是不應該發生的。自從我實現了一些java代碼來去掉按鈕(基本上隱藏了元素),並且我還爲忽略java的機器人添加了一些服務器端代碼。

在服務器端按鈕按下時,我設置了一個會話變量,如果爲該頁面實例設置了此會話變量,則會退出所有引發的連續事件。

當我快速點擊按鈕後退到最後時,我已經將其歸結爲最多兩個或三個事件。只有在第二次/第三次運行後有足夠的時間才能識別會話變量,並忽略事件代碼。在我的會話變種技巧之前,您可以快速點擊10次按鈕,在頁面最終返回並禁用按鈕之前,它會遞增10個喜歡。

所以,下降到2或3並不差,但我一直在獲取更多的喜歡,而不是一些內容的觀點。

  • 我的意見是計數罰款,我仔細檢查。
  • 我的愛好絕對只是在幾次不必要的事件觸發後才捕獲第一個禁用/會話觸發器/事件...(快速點擊)
  • 我懷疑它的搜索引擎可能跟隨鏈接...?

補充信息:jQuery的按鈕禁用:

<script type ="text/javascript"> 
    function pageLoad() { 
     $('#<%=vidUpB.ClientID%>').click(function() { 
      $(this).css("display","none") 
     }); 
    } 
</script> 

任何想法?

+0

java或javascript? –

+0

嗨@IanP,感謝您的回覆,回覆:我原來的帖子:***我已經實現了一些java代碼來去掉按鈕(基本隱藏元素),並且我還爲機器人添加了一些服務器端代碼忽略java。***我認爲bot會忽略客戶端腳本。 –

+0

只是想澄清,你使用的是JavaScript而不是客戶端Java? –

回答

2

當機器人發現一些URL的POST請求時,他們喜歡發送GET請求到那裏偷窺。如果他們喜歡他們看到的內容,該鏈接可以被緩存,並且您可以不時獲得該URL的其他GET請求。令人討厭的機器人不遵循robots.txt,只有如何處理它們的方式是在他們的方式中加入一些不顯眼的驗證碼 - 例如請求請求成爲POST請求,並檢查隱藏的輸入字段是否爲空。

<asp:TextBox ID="txtKeepEmpty" runat="server" style="display:none" /> 
<asp:Button runat="server" OnClick="btnLike_Click" Text="Like" /> 

protected void btnLike_Click(object sender, EventArgs e) { 
    if (IsPostBack && 
    Request.HttpMethod == "POST" && 
    string.IsNullOrEmpty(txtKeepEmpty.Text)) { 
    // update 
    } 
} 

此外會話存儲基於會話密鑰 - 這是一個cookie。每次用戶刪除會話cookie時,他都會開始一個新的會話。當他禁用cookies(有些用戶正在這樣做)時,它會爲每次發起的請求創建新的會話。

+0

感謝您的回答Ondrej。我有一個「無聲的」驗證碼控件,我已經爲表單開發了......在一個基本的超時算法上工作..也許我應該實現...我可能會賭博一個機器人不會坐幾秒鐘.. 。 –

2

一件事嘗試:

  1. 有HTML按鈕默認被禁用。這將防止任何機器人只要抓住HTML就按下它。這樣,如果他們不解釋Javascript,他們就不能按下按鈕。
  2. 在您的Javascript頁面加載處理中,啓用該按鈕。
  3. 按下按鈕後,讓Javascript立即(本地)禁用它。這應該防止或至少減少連續多次點擊它的可能性。
  4. 繼續使用您的服務器代碼來過濾掉通過其他方式獲得的無關按鈕按下。
+0

嗨吉姆,謝謝你的回答。我有一個「無聲的」驗證碼控件,我已經爲窗體開發了......在一個基本的超時算法上工作..也許我應該實現...我可能會賭博一個機器人不會坐幾秒鐘...... –

+0

謝謝吉姆。我現在接受Ondrej的回答,並附上驗證碼的想法..我認爲這可能是要走的路... –

相關問題