2008-10-24 33 views
11

Khi người dùng nhấp vào liên kết để tải xuống tệp trên trang web của tôi, họ truy cập this PHP file, tăng bộ đếm tải xuống cho tệp đó và sau đó là tiêu đề() - chuyển hướng chúng đến tệp thực. Tôi nghi ngờ rằng các bot đang theo liên kết tải xuống, tuy nhiên, do đó số lượng tải xuống không chính xác.Làm cách nào để ngăn chương trình tăng số lượt truy cập tải xuống tệp của tôi bằng PHP?

  • Làm cách nào để rô bốt biết rằng họ không nên theo liên kết?
  • Có cách nào để phát hiện hầu hết các bot không?
  • Có cách nào tốt hơn để đếm số lượng tệp tải xuống được nhận không?
+0

Bạn phải sử dụng tập lệnh phát hiện trình duyệt với cơ sở dữ liệu tác nhân người dùng cập nhật. Đây là [một] (http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php/#typicalusage). –

Trả lời

16

robots.txt: http://www.robotstxt.org/robotstxt.html

Không phải tất cả các bot tôn trọng nó, nhưng hầu hết làm. Nếu bạn thực sự muốn ngăn chặn truy cập thông qua bot, hãy tạo liên kết tới nó một POST thay vì GET. Bots sẽ không theo url POST. (I.E., sử dụng một biểu mẫu nhỏ đăng lại trang web đưa bạn đến URL được đề cập.)

4

Tôi nghĩ câu trả lời robots.txt của Godeke là đủ. Nếu bạn hoàn toàn không thể thiết lập bộ đếm, thì tôi khuyên bạn nên sử dụng tệp rô bốt cùng với việc không tăng số lần nhấp với một số common robot user agents.

Không cách nào là hoàn hảo., Nhưng hỗn hợp của cả hai có thể nghiêm ngặt hơn một chút. Nếu là tôi, tôi có lẽ sẽ chỉ dính vào các tập tin robot, vì nó rất dễ dàng và có lẽ là giải pháp hiệu quả nhất.

3

Godeke là đúng, robots.txt là điều đầu tiên cần làm để không cho bot tải xuống.

Về việc đếm, đây thực sự là vấn đề về phân tích trang web. Bạn không giữ các nhật ký truy cập www của bạn và chạy chúng thông qua một chương trình phân tích như Webalizer hoặc AWStats (hoặc các lựa chọn thay thế ưa thích như Webtrends hoặc Urchin)? Với tôi đó là cách để thu thập loại thông tin này, bởi vì nó dễ dàng và không có PHP, chuyển hướng hoặc hiệu suất hit khác khi người dùng tải xuống tệp. Bạn chỉ sử dụng nhật ký Apache mà bạn vẫn đang giữ. (Và grep -c sẽ cung cấp cho bạn số lượng 'n' bẩn nhanh chóng trên một tệp hoặc mẫu ký tự đại diện cụ thể.)

Bạn có thể định cấu hình phần mềm thống kê của mình để bỏ qua lần truy cập theo bot hoặc người dùng cụ thể và các tiêu chí khác (và nếu bạn thay đổi tiêu chí của bạn sau này, bạn chỉ cần xử lý lại dữ liệu nhật ký cũ). Tất nhiên, điều này đòi hỏi bạn có tất cả các bản ghi cũ của bạn, vì vậy nếu bạn đã ném chúng với một cái gì đó như logrotate bạn sẽ phải bắt đầu mà không có bất kỳ dữ liệu lịch sử nào.

Các vấn đề liên quan