2012-11-14 23 views
8

Cho đến nay tôi có thể phát hiện robot từ danh sách chuỗi tác nhân người dùng bằng cách khớp các chuỗi này với các tác nhân người dùng đã biết, nhưng tôi đã tự hỏi để làm điều này bằng cách sử dụng php như tôi đang lấy ít bot hơn dự kiến ​​bằng cách sử dụng phương pháp này.Cách phát hiện giả mạo trình duyệt và rô bốt từ chuỗi tác nhân người dùng trong php

Tôi cũng đang tìm cách tìm hiểu xem trình duyệt hoặc rô-bốt có đang giả mạo một trình duyệt khác bằng chuỗi tác nhân người dùng hay không.

Bất kỳ lời khuyên nào được đánh giá cao.

EDIT: Điều này đã được thực hiện bằng cách sử dụng log file với dòng như sau:

129.173.129.168 - - [11/Oct/2011: 00: 00: 05 -0300] "GET/cam/uni_ave2 .jpg? time = 1318302291289 HTTP/1.1 "200 20240" http://faculty.dentistry.dal.ca/loanertracker/webcam.html "" Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; vi-Hoa Kỳ; rv: 1.9.2.23) Gecko/20110920 Firefox/3.6.23 "

Điều này có nghĩa là tôi không thể kiểm tra hành vi của người dùng ngoài thời gian truy cập.

+3

Thật không may, cho dù bạn có cố gắng thế nào đi chăng nữa, bot vẫn sẽ nhận được bất kỳ thứ gì bạn quản lý để triển khai cho việc này. – noko

+2

Không thể thực hiện được. Bạn có thể nhìn nó một cách khủng khiếp, nhưng đó là nó. – Brad

Trả lời

4

Ngoài việc so sánh các tác nhân người dùng, bạn sẽ lưu nhật ký hoạt động và tìm kiếm hành vi của rô bốt. Thông thường, điều này sẽ bao gồm việc kiểm tra /robots.txt và không tải hình ảnh. Một mẹo khác là hỏi khách hàng xem họ có javascript hay không vì hầu hết các bot sẽ không đánh dấu là đã bật.

Tuy nhiên, hãy cẩn thận, bạn cũng có thể vô tình nhận được một số người thực sự là người.

+1

Tôi nên làm rõ; Tôi phải làm điều này bằng cách sử dụng một tập tin đăng nhập của tác nhân người dùng vì vậy tôi không thể kiểm tra cho javascript hoặc hình ảnh được tải, nhưng nhờ sự giúp đỡ – user1422508

+0

Sau đó, bạn cần phải đăng nhập, nếu không tôi không có ý tưởng những thông tin bạn phải làm việc với . – Kyros

+0

Bài gốc đã được chỉnh sửa với ví dụ về một dòng từ tệp nhật ký, tệp thực tế bao gồm hơn 70000 dòng nhưng chúng có cấu trúc tương tự như vậy. – user1422508

13

Ngoài lọc từ khóa trong chuỗi tác nhân người dùng, tôi đã có may mắn với việc đưa một liên kết honeypot ẩn trên tất cả các trang:

<a style="display:none" href="autocatch.php">A</a> 

Sau đó, trong "autocatch.php" ghi lại phiên giao dịch (hoặc IP địa chỉ) dưới dạng bot. Liên kết này là vô hình đối với người dùng nhưng đặc tính ẩn của nó hy vọng sẽ không được bot nhận ra. Lấy thuộc tính style ra và đặt nó vào một tệp CSS có thể giúp ích nhiều hơn.

+1

kỹ thuật này hoạt động khá tốt để bắt những kẻ gửi thư rác bằng cách nhập email có tên đầu vào = "ẩn" và làm cho trường biểu mẫu email có thể nhìn thấy thực của bạn được gọi là thứ gì đó khác. Nhược điểm duy nhất để một liên kết ẩn là nó có thể bị gắn cờ như blackhat SEO của Google – WebChemist

+0

Như @WebChemist cho biết, điều này là nguy hiểm. Chúng ta đang sống trong một thế giới nơi các giải pháp thông minh và khác "đúng" thường là các giải pháp "sai" vì: Google. Hãy rất cẩn thận với các liên kết ẩn. – Bangkokian

2

Không, tác nhân người dùng có thể bị giả mạo để không được tin cậy.

Ngoài việc kiểm tra tải Javascript hoặc hình ảnh/css, bạn cũng có thể đo tốc độ tải trang vì bot sẽ thường thu thập dữ liệu trang web của bạn nhanh hơn rất nhiều so với bất kỳ khách truy cập nào sẽ nhảy xung quanh. Nhưng điều này chỉ hoạt động đối với các trang web nhỏ, các trang web phổ biến có nhiều khách truy cập phía sau địa chỉ IP bên ngoài được chia sẻ (công ty lớn hoặc trường đại học) có thể truy cập trang web của bạn theo tỷ lệ giống bot.

Tôi cho rằng bạn cũng có thể đo thứ tự mà họ tải như chương trình sẽ bò trong một đến trật tự bò đầu tiên đầu tiên mà là người sử dụng con người sẽ thường không phù hợp với mô hình đó, nhưng thats một chút phức tạp hơn để theo dõi

+1

Điều này hữu ích, cảm ơn! – user1422508

+0

Không vấn đề gì, đây là bài đăng tôi đã giúp một người dùng khác thực hiện một tập lệnh chặn để chặn quá nhiều tải trang bot mà bạn có thể điều chỉnh theo nhu cầu của mình http://webmasters.stackexchange.com/questions/35171/number-of- page-requests-by-any-bot-in-5-secs – WebChemist

+0

Tuyệt vời, cảm ơn, tôi sẽ upvote nếu tôi có thể – user1422508

5

Bởi vì, như đã nói ở trên, bạn có thể giả mạo các tác nhân người dùng & IP, chúng không thể được sử dụng để phát hiện bot đáng tin cậy.

Tôi làm việc cho một công ty an ninh và phát hiện bot của chúng tôi thuật toán tìm một cái gì đó như thế này:

  1. Bước 1 - Thu thập dữ liệu:

    a. Kiểm tra chéo tác nhân người dùng so với IP. (cả hai cần phải đúng)

    b.Kiểm tra thông số Tiêu đề (những gì còn thiếu, thứ tự và vv ..)

    c. Kiểm tra hành vi (truy cập sớm và tuân thủ robots.txt, hành vi chung, số lượng trang truy cập, tỷ lệ truy cập và vv)

  2. Bước 2 - Phân loại:

    By chéo xác minh dữ liệu, bot là phân loại như "Good", "Bad" hoặc "đáng ngờ"

  3. Bước 3 - Thách thức tích cực:

    chương trình đáng ngờ trải qua những thách thức sau:

    a. JS Challenge (nó có thể kích hoạt JS?)

    b. Cookie Challenge (nó có thể chấp nhận coockies?)

    c. Nếu vẫn không thuyết phục -> CAPTCHA

cơ chế lọc này rất hiệu quả nhưng tôi không thực sự nghĩ rằng nó có thể được nhân rộng bởi một người duy nhất hoặc thậm chí là một nhà cung cấp không chuyên (đối với một điều, những thách thức và nhu cầu bot DB được nhóm bảo mật cập nhật liên tục).

Chúng tôi cung cấp một số loại công cụ "tự mình làm" dưới dạng Botopedia.org, thư mục của chúng tôi có thể được sử dụng cho IP/Tên người dùng xác minh chéo, nhưng để thực sự giải pháp hiệu quả, bạn sẽ phải dựa vào các dịch vụ chuyên biệt.

Có một số giải pháp giám sát bot miễn phí, bao gồm các giải pháp riêng của chúng tôi và hầu hết sẽ sử dụng cùng một chiến lược tôi đã mô tả ở trên (hoặc tương tự).

GL

1

Câu hỏi của bạn đặc biệt liên quan đến việc phát hiện bằng chuỗi tác nhân người dùng. Như nhiều người đã đề cập điều này có thể được giả mạo.

Để hiểu những gì có thể trong giả mạo, và để xem khó khăn như thế nào để phát hiện, bạn có lẽ tốt nhất nên tìm hiểu nghệ thuật trong PHP bằng cách sử dụng cURL. Về bản chất, việc sử dụng cURL hầu như mọi thứ có thể được gửi trong trình duyệt (client) đều có thể được giả mạo với ngoại lệ đáng chú ý của IP, nhưng ngay cả ở đây một chiếc spoofer được xác định cũng sẽ ẩn đằng sau máy chủ proxy để loại bỏ phát hiện của bạn IP của họ. Không cần phải nói rằng việc sử dụng các thông số tương tự mỗi lần yêu cầu được thực hiện sẽ cho phép phát hiện một loa trầm, nhưng quay với các thông số khác nhau sẽ rất khó, nếu không thể phát hiện bất kỳ kẻ giả mạo nào trong nhật ký lưu lượng truy cập chính hãng.

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