2008-09-05 5 views
7

StackOverflowには各質問のビュー数があり、これらのビュー数はかなり低く、正確です。検索エンジンを無視してページの閲覧回数をカウントしていますか?

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

ロボットを数えない方法の1つは、ページがロードされたらAJAX呼び出しでカウントをカウントすることですが、ヒットカウンタの検索エンジンを無視する他の優れた方法があると確信していますあなたのサイトをクロールすることができます。何でも知ってますか?

答えて

4

AJAX呼び出しではそれが行われますが、通常検索エンジンはイメージ、JavaScript、CSSファイルを読み込まないため、ページにこれらのファイルのいずれかを含めやすくなります。ファイル要求のパラメータとして要求を記録します。

例えば、ページ内の...

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

あなたは空のCSSを返し、その後、ヘッド部

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

に含めると、サーバー側が要求をログに記録している場合がありますファイル。 JavaScriptや画像ファイルにも同じアプローチが適用されますが、どのような場合にキャッシュが行われるかを注意深く見たいと思うでしょう。

別のオプションは、user agentに基づいて検索エンジンを削除することです。 http://user-agents.org/には利用可能なユーザーエージェントの大きなリストがあります。もちろん、あなたは別の方法をとることができ、あなたが知っているものからのリクエストはWebブラウザ(Internet Explorer、Firefox、Safari、Opera、そしてこの新しくできたChromeのものは99%の方法があります)だけをカウントします。

awstatsなどのログ解析ツールやGoogle analyticsなどのサービスを使用すると、さらに簡単にこの問題を解決できます。

+0

- javascriptをせずにユーザーが質問の表示回数には影響しませんが、我々はdidnのどちらにもボットブラックリストが必要です! –

+2

検索エンジンはCSSファイルにアクセスします:http://www.free-seo-news.com/newsletter246.htm ... Googleキャッシュのいくつかのサイトをチェックすると、スタイルが変わります。これは、スキャンして保存することを確認しますCSSファイル。 – davidhq

+1

私はかなり検索エンジンがJavascriptを実行すると確信しています – Nate

0

Stack Overflowが正確なビューカウントを持つ理由は、各ビュー/ユーザーを1回だけカウントすることです。

ヒットカウンタ(およびWeb統計)アプリケーションは、検索エンジンを除外し、別のウィンドウ/タブ/セクションに表示することがよくあります。

0

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

1

実際にAJAXを使用する必要はありません。JavaScriptを使用して画面からiFrameを追加するだけです。私は、HTTPリクエストのUser-Agentヘッダを見て、知られているロボットのリストと比較します単純なフィルタを実装し、この問題を解決するためにIT SIMPLE

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

KEEP。

www.robotstxt.orgからロボットリストを取得しました。これは簡単なテキスト形式でダウンロードでき、簡単に "ブラックリスト"を自動生成することができます。

1

マット・シェパードの答えへの拡張は、以下のようなものかもしれません:ページ名のサーバー側を代用することなく、ページのヘッダーやフッターテンプレートに差し込むことができる

<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>タグまたはと比較した場合の良い点は、ヒットカウントスクリプトに問題がある場合、ユーザーに赤いxが表示されないことです。 場合によっては、サーバー側で発生するリライトなどの前に、ブラウザに表示されたURLを知ることも重要です。双方向にしたい場合は、そのバージョンのページ名をクエリ文字列に挿入する別のパラメータのサーバー側を追加します。

このページのテストからのログファイルの例:我々は、Ajaxのポストに私達のインクリメント方法を変更した

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" 
関連する問題