2009-01-10 33 views
8

Tôi đã học tại sao Request.Browser.Crawler luôn luôn sai trong C# (http://www.digcode.com/default.aspx?page=ed51cde3-d979-4daf-afae-fa6192562ea9&article=bc3a7a4f-f53e-4f88-8e9c-c9337f6c05a0).Asp.net Request.Browser.Crawler - Danh sách trình thu thập thông tin động?

Có ai sử dụng một số phương pháp để tự động cập nhật danh sách của Trình thu thập thông tin không, do đó Request.Browser.Crawler sẽ thực sự hữu ích?

Trả lời

11

tôi đã hài lòng với kết quả được cung cấp bởi Ocean's Browsercaps. Nó hỗ trợ các trình thu thập dữ liệu mà các tệp cấu hình của Microsoft đã không làm phiền phát hiện. Nó thậm chí sẽ phân tích phiên bản của trình thu thập thông tin trên trang web của bạn, không phải là tôi thực sự cần mức chi tiết đó.

+0

Rất tuyệt! Tôi sẽ kiểm tra. –

+0

Cảm ơn bạn đã chỉ ra Đại dương - Tôi đã bị kẹt với một bộ BrowserCaps rất cũ trên 1,1 trang web của chúng tôi trong một thời gian. –

6

Bạn có thể kiểm tra (regex) đối với Request.UserAgent.

Peter Bromberg đã viết một bài viết hay về viết một ASP.NET Request Logger and Crawler Killer trong ASP.NET.

Dưới đây là phương pháp ông sử dụng trong lớp Logger mình:

public static bool IsCrawler(HttpRequest request) 
{ 
    // set next line to "bool isCrawler = false; to use this to deny certain bots 
    bool isCrawler = request.Browser.Crawler; 
    // Microsoft doesn't properly detect several crawlers 
    if (!isCrawler) 
    { 
     // put any additional known crawlers in the Regex below 
     // you can also use this list to deny certain bots instead, if desired: 
     // just set bool isCrawler = false; for first line in method 
     // and only have the ones you want to deny in the following Regex list 
     Regex regEx = new Regex("Slurp|slurp|ask|Ask|Teoma|teoma"); 
     isCrawler = regEx.Match(request.UserAgent).Success; 
    } 
    return isCrawler; 
} 
+6

Cảnh báo - đây là * không * chống lừa đảo! Nếu bạn cài đặt các phiên bản nhất định của thanh công cụ Ask.com (trong IE, ít nhất), nó sẽ sửa đổi tác nhân người dùng để bao gồm 'Hỏi' ​​ở một dạng nào đó, gây ra các kết quả dương tính giả. –

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