2

「いいね」できるコンテンツのサイトがあります。これにはAPIを使用せず、カスタムのいいねボタンで、コンテンツの「いいね」統計を増やすだけです。

これで、ビュー カウンター、ページの読み込みごと、いいね ボタンができました。いいねボタンを押すと、そのページのライフサイクルの連続したいいねに対して無効になります。

私は、私の好きなものが私の見解よりも多いという問題を経験しています.. 理論的には起こり得ないはずです. それ以来、ボタンの配線を解除する (基本的には要素を非表示にする) Java コードを実装し、Java を無視するロボット用のサーバー側コードも追加しました。

サーバー側のボタンを押すと、セッション変数を設定し、このセッション変数がページのそのインスタンスに設定されている場合に発生する連続したイベントを終了します。

過去に戻るボタンをすばやくクリックすると、最大で 2 つまたは 3 つのイベントが発生します。2 回目または 3 回目の実行でセッション変数を認識するのに十分な時間が経過した後でのみ、イベント コードは無視されます。私のセッション var トリックの前に、ボタンをすばやく 10 回クリックすると、ページが最終的にポストバックしてボタンを無効にする前に、いいね! が 10 増えました。

ですから、2 つや 3 つに減らしても悪くはありませんが、一部のコンテンツでは一貫してビュー数よりもいいね数の方が多くなっています。

  • 私のビューは正常にカウントされています。それを再確認しました。
  • 私の好きなものは、いくつかの不要なイベントが発生した後、最初の無効化/セッションvarトリガー/イベントのみを確実にキャッチします...(すばやくクリックします)
  • その検索エンジンはおそらくリンクをたどっているのではないでしょうか...?

補足情報: jquery ボタンの無効化:

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

何か案は?

4

2 に答える 2

3

ボットは、ある 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 を削除するたびに、新しいセッションが開始されます。Cookie を完全に無効にすると (一部のユーザーはそうしています)、彼が発行するすべてのリクエストに対して新しいセッションが作成されます。

于 2014-06-12T13:30:28.537 に答える
2

試してみること:

  1. HTML ボタンをデフォルトで無効にします。これにより、ボットが HTML を取得するだけでボタンを押すのを防ぐことができます。このように、Javascript を解釈していない場合、ボタンを押すことはできません。
  2. JavaScript ページ読み込み処理で、ボタンを有効にします。
  3. ボタンが押されたら、Javascript ですぐに (ローカルで) 無効にします。これにより、連続して複数回クリックする可能性を防ぐか、少なくとも減らすことができます。
  4. 引き続きサーバー コードを使用して、他の方法で通過する不要なボタンの押下を除外します。
于 2014-06-12T13:16:39.460 に答える