2008-09-05 41 views
7

Tôi nhận thấy rằng StackOverflow có số lượt xem cho mỗi câu hỏi và rằng số lượt xem này khá thấp và chính xác.Đếm số lượt xem cho một trang bỏ qua các công cụ tìm kiếm?

Tôi có điều tương tự trên một trong các trang web của mình. Về cơ bản, nó ghi lại một "lần truy cập" bất cứ khi nào trang được tải trong mã phụ trợ. Thật không may, nó cũng làm điều này cho công cụ tìm kiếm số truy cập cho số lượng bloated và không chính xác.

Tôi đoán một cách để không tính rô bốt là thực hiện chế độ xem với cuộc gọi AJAX khi trang đã tải xong, nhưng tôi chắc chắn có những cách tốt hơn để bỏ qua công cụ tìm kiếm trong các bộ đếm lượt truy cập của bạn cho phép họ thu thập dữ liệu trang web của bạn. Bạn có biết gì không?

Trả lời

4

Cuộc gọi AJAX sẽ thực hiện, nhưng thường các công cụ tìm kiếm sẽ không tải các tệp hình ảnh, javascript hoặc CSS, vì vậy có thể dễ dàng bao gồm một trong các tệp đó trong trang và chuyển URL của trang bạn muốn đăng nhập một yêu cầu chống lại như một tham số trong yêu cầu tệp.

Ví dụ, trong trang ...

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

Bạn có thể bao gồm trong phần đầu

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

Và có phía máy chủ của bạn đăng nhập theo yêu cầu, sau đó trả về một css trống tập tin. Cách tiếp cận tương tự sẽ áp dụng cho JavaScript hoặc và tệp hình ảnh, mặc dù trong mọi trường hợp, bạn sẽ muốn xem xét cẩn thận những gì bộ nhớ đệm có thể xảy ra.

Một tùy chọn khác là loại bỏ các công cụ tìm kiếm dựa trên số user agent của chúng. Có một danh sách lớn các đại lý người dùng có thể có tại http://user-agents.org/ để giúp bạn bắt đầu. Tất nhiên, bạn có thể đi theo cách khác, và chỉ đếm các yêu cầu từ những thứ bạn biết là trình duyệt web (bao gồm IE, Firefox, Safari, Opera và điều Chrome mới lạ này sẽ giúp bạn có 99% con đường ở đó).

Thậm chí dễ dàng hơn là sử dụng công cụ phân tích nhật ký như awstats hoặc dịch vụ như Google analytics, cả hai đều đã giải quyết được sự cố này.

+0

Chúng tôi đã thay đổi phương pháp thặng dư của chúng tôi để một bài ajax - mặc dù người dùng mà không cần javascript sẽ không ảnh hưởng đến số lần xem của một câu hỏi, chúng tôi didn 't muốn có một danh sách đen bot, một trong hai! –

+2

Công cụ tìm kiếm truy cập các tệp css: http://www.free-seo-news.com/newsletter246.htm ... cũng khi bạn kiểm tra một số trang trong bộ nhớ cache của Google, chúng được tạo kiểu, điều này xác nhận rằng chúng quét và lưu tệp css. – davidhq

+1

Tôi chắc là công cụ tìm kiếm thực thi Javascript ngay bây giờ – Nate

0

Lý do Stack Overflow có số lượt xem chính xác là nó chỉ tính mỗi lượt xem/người dùng một lần.

Ứng dụng truy cập bên thứ ba (và thống kê web) thường lọc ra các công cụ tìm kiếm và hiển thị chúng trong cửa sổ/tab/phần riêng biệt.

0

Bạn sẽ phải thực hiện những gì bạn đã nói trong câu hỏi của mình bằng AJAX. Hoặc loại trừ các chuỗi Tác nhân người dùng được biết đến với các công cụ tìm kiếm. Cách duy nhất để ngăn chặn bot là với AJAX.

1

Bạn không thực sự cần sử dụng AJAX, chỉ cần sử dụng JavaScript để thêm màn hình tắt iFrame. Keep It Simple

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

Để giải quyết vấn đề này, tôi thực hiện một bộ lọc đơn giản mà sẽ xem xét các tiêu đề User-Agent trong yêu cầu HTTP và so sánh nó với một danh sách các robot nổi tiếng.

Tôi nhận được danh sách robot từ www.robotstxt.org. Nó có thể tải xuống ở định dạng văn bản đơn giản có thể dễ dàng được phân tích cú pháp để tự động tạo "danh sách đen".

1

Một phần mở rộng để trả lời Matt Sheppard của có thể là một cái gì đó như sau:

<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> 

có thể được cắm vào một tiêu đề trang hoặc mẫu chân mà không cần phải thay thế tên trang server-side. Lưu ý rằng nếu bạn bao gồm chuỗi truy vấn (window.location.search), một phiên bản mạnh mẽ của điều này sẽ mã hóa chuỗi để ngăn chặn những kẻ làm ác từ việc tạo ra các yêu cầu trang khai thác lỗ hổng dựa trên những thứ kỳ lạ trong URL. Điều tuyệt vời về điều này so với thẻ <img> thông thường hoặc là người dùng sẽ không thấy dấu x màu đỏ nếu có vấn đề với tập lệnh hitcounter. Trong một số trường hợp, điều quan trọng là phải biết URL đã được trình duyệt nhìn thấy, trước khi viết lại, vv xảy ra ở phía máy chủ và điều này cho bạn biết điều đó. Nếu bạn muốn cả hai cách, sau đó thêm một tham số phía máy chủ khác sẽ chèn phiên bản của tên trang đó vào chuỗi truy vấn.

Một ví dụ về các file bản ghi từ một thử nghiệm của trang này:

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" 
Các vấn đề liên quan