検索エンジンを無視してページのビュー数をカウントしますか?

StackOverflow https://stackoverflow.com/questions/45824

  •  09-06-2019
  •  | 
  •  

質問

StackOverflow には各質問のビュー数があり、これらのビュー数はかなり低く、正確であることがわかります。

私のサイトにも同様のものがありました。基本的に、ページがバックエンド コードに読み込まれるたびに「ヒット」を記録します。残念なことに、検索エンジンのヒットに対してもこれが行われ、肥大化した不正確な数値が得られます。

ロボットをカウントしない方法の 1 つは、ページが読み込まれた後に AJAX 呼び出しを使用してビュー カウントを行うことだと思いますが、ヒット カウンターで検索エンジンを無視しながらも、検索エンジンを無視する他のより良い方法があると確信しています。サイトをクロールします。何でも知ってますか?

役に立ちましたか?

解決

AJAX 呼び出しで実行できますが、通常、検索エンジンは画像、JavaScript、または CSS ファイルを読み込まないため、これらのファイルの 1 つをページに含めて、リクエストを記録するページの URL を渡す方が簡単な場合があります。ファイルリクエストのパラメータとして。

たとえば、ページ内では...

http://www.example.com/example.html

headセクションに含めることができます

<link href="empty.css?log=example.html" rel="stylesheet" type="text/css" />

そして、サーバー側でリクエストをログに記録し、空の CSS ファイルを返します。同じアプローチが JavaScript や画像ファイルにも適用されますが、どのような場合でも、どのようなキャッシュが行われるかを注意深く確認する必要があります。

もう 1 つの選択肢は、検索エンジンの情報に基づいて検索エンジンを排除することです。 ユーザーエージェント. 。可能なユーザーエージェントの大きなリストは次のとおりです。 http://user-agents.org/ 始めましょう。もちろん、その逆を行って、Web ブラウザであることがわかっているものからのリクエストのみをカウントすることもできます (IE、Firefox、Safari、Opera、そしてこの新しい Chrome をカバーすれば、目的の 99% を達成できます)。

次のようなログ分析ツールを使用するとさらに簡単になります。 すごい統計 または次のようなサービス グーグルアナリティクス, 、どちらもすでにこの問題を解決しています。

他のヒント

この問題を解決するために、HTTP リクエストの User-Agent ヘッダーを調べ、それを既知のロボットのリストと比較する単純なフィルターを実装しました。

からロボットリストを入手しました www.robotstxt.org. 。シンプルなテキスト形式でダウンロードでき、簡単に解析して「ブラックリスト」を自動生成できます。

実際に AJAX を使用する必要はありません。JavaScript を使用して画面外に iFrame を追加するだけです。単純にする

<script type="javascript">
document.write('<iframe src="myLogScript.php" style="visibility:hidden" width="1" height="1" frameborder="0">');
</script>

Matt Sheppard の答えを拡張すると、次のようになります。

  <script type="text/javascript">
  var thePg=window.location.pathname;
  var theSite=window.location.hostname;
  var theImage=new Image;
  theImage.src="/test/hitcounter.php?pg=" + thePg + "?site=" + theSite;
  </script>

これは、サーバー側でページ名を置き換える必要なく、ページ ヘッダーまたはフッター テンプレートにプラグインできます。クエリ文字列 (window.location.search) を含める場合、これの堅牢なバージョンでは文字列をエンコードして、URL 内の奇妙なものに基づいて脆弱性を悪用するページ リクエストを悪者が作成できないようにする必要があることに注意してください。この対の良いところは、レギュラー <img> タグか <iframe> hitcounter スクリプトに問題がある場合、ユーザーには赤い x が表示されません。場合によっては、書き換えなどの前に、ブラウザーで表示された URL を知っておくことも重要です。それはサーバー側で行われ、これによりそれが得られます。両方の方法が必要な場合は、そのバージョンのページ名をクエリ文字列にも挿入する別のパラメーターをサーバー側に追加します。

このページのテストからのログ ファイルの例:

10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/testpage.html HTTP/1.1" 200 306 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"
10.1.1.17 - - [13/Sep/2008:22:21:00 -0400] "GET /test/hitcounter.php?pg=/test/testpage.html?site=www.home.***.com HTTP/1.1" 301 - "http://www.home.***.com/test/testpage.html" "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16"

Stack Overflow のビュー数が正確である理由は、各ビュー/ユーザーを 1 回しかカウントしないためです。

サードパーティのヒット カウンター (および Web 統計) アプリケーションでは、多くの場合、検索エンジンが除外され、別のウィンドウ/タブ/セクションに表示されます。

質問で述べたことを AJAX で実行する必要があります。または、既知の検索エンジンである User-Agent 文字列を除外します。ボットを確実に停止する唯一の方法は、AJAX を使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top