2012-03-30 21 views
6

Làm cách nào để tôi có thể chống lại các bot không xác định xấu để thu thập thông tin trang web của tôi? Một số bot xấu có tên không có trong cPanel của Apache đang truy cập băng thông của trang web của tôi một cách tệ hại.Làm cách nào để chặn các bot không xác định xấu thu thập dữ liệu trang web của tôi?

Tôi đã thử robots.txt trên batgap.com/robots.txt và cũng bị chặn bằng .htaccess nhưng không cải thiện việc sử dụng băng thông. Tôi không biết địa chỉ IP của những chương trình đó nên không thể chặn chúng theo địa chỉ IP. Những chương trình này đang tiêu tốn quá nhiều băng thông của trang web và do đó tôi cần tăng nó từ máy chủ.

+0

Cloudflare? Hoặc bạn có thể đánh giá một chuyển hướng dựa trên JS bị xáo trộn và giả mạo nó đến các bot đã biết bằng cách gửi cho họ một chuyển hướng tiêu đề thay thế. Nhưng người dùng thông thường phải có JS và có thể theo dõi chuyển hướng bị làm mờ. –

+0

@Sandeep Kumar, nếu thực tế bạn vẫn đọc [bài đăng] (http://scraping.pro/my-site-is-being-scraped-how-can-i-prevent-being-scraped/). –

Trả lời

1

Thật không may, robots.txt đôi khi bị bỏ qua bởi các "bot xấu", mặc dù vấn đề là nhiều thứ như nhện công cụ tìm kiếm chính hãng mà bạn không muốn thấy chúng nên mang nó vào tài khoản. Tôi đoán với CPanel bạn có thể nhận được vào các bản ghi máy chủ web (apache)? Trong đó bạn có thể tìm hai thứ: IP và User-Agent. Bạn có thể tìm thấy thủ phạm trong đó và thêm chúng vào robots.txt và .htaccess của bạn. Lưu ý rằng các quy tắc .htaccess từ chối địa chỉ IP tốt hơn nhiều chỉ dựa vào robots.txt vì bạn đang lựa chọn ra khỏi bàn tay của người tạo bot.

Nếu bạn biết chương trình cụ thể đang làm việc này, bạn sẽ có thể nhận địa chỉ IP và tác nhân người dùng từ diễn đàn, nhưng nếu đó là điều tổng quát hơn thì tôi thực sự sợ nó là công việc thủ công hơn.

Có các phương pháp khác có thể được sử dụng với hiệu ứng khác nhau, chẳng hạn như mod_security (http://www.askapache.com/htaccess/modsecurity-htaccess-tricks.html) nhưng điều này có nghĩa là bạn sẽ phải truy cập cấu hình máy chủ web của bạn.

Cuối cùng, bạn có thể kiểm tra các liên kết trỏ đến trang web của bạn (sử dụng liên kết: tùy chọn trên google). Đôi khi, nếu bạn có liên kết trên các diễn đàn spam hoặc tương tự, điều này có thể làm tăng khả năng bot đến để giúp bạn. Có lẽ bạn có thể xem URL của người giới thiệu trong nhật ký apache - nhưng điều này tất cả đều dựa trên rất nhiều giả định và bạn có thể may mắn nếu nó có hiệu quả tuyệt vời.

3

Tôi đến từ Incapsula và chúng tôi thường xuyên xử lý các bot xấu.

Gần đây chúng tôi đã phát hành một nghiên cứu liên quan đến bot cung cấp thông tin chi tiết về vấn đề (http://www.incapsula.com/the-incapsula-blog/item/225-what-google-doesnt-show-you-31-of-website-traffic-can-harm-your-business) và trong dữ liệu này tôi phải đồng ý với @Leonard Challis - bạn chỉ đơn giản là không thể xử lý bảo vệ bot theo cách thủ công.

Có nói rằng, có các giải pháp bảo vệ bot, ngay cả những người miễn phí (chúng tôi đã bao gồm) có thể giúp bạn với các chương trình xấu.

BTW - Cũng giống như bạn đã đề cập, một sản phẩm phụ của truy cập bot xấu là mất băng thông. Chúng ta gần đây đã nhận thức được việc sử dụng băng thông liên quan đến bot thực sự đáng ngạc nhiên đến mức nào. Đây là một chủ đề thú vị của chính nó. Chúng tôi tin rằng bằng cách tránh lưu lượng bot xấu, nhà cung cấp dịch vụ lưu trữ thực sự có thể cải thiện hiệu quả của họ (hy vọng sử dụng điều này để giảm chi phí hoặc cải thiện dịch vụ). Một khi bạn tưởng tượng ý nghĩa xã hội và kinh doanh của điều này bạn có thể hiểu được phạm vi thực sự của vấn đề bot xấu này mà đi xa hơn thiệt hại ngay lập tức thực hiện.

1

Tôi chặn 'bot xấu' bằng cách sử dụng PHP. Tôi lọc theo địa chỉ IP chủ yếu, sau đó là Tác nhân người dùng thứ hai. Tôi làm cho 'bot xấu' chờ đến 999 giây, sau đó trả về một trang web rất nhỏ. Thông thường (luôn luôn) kết nối internet hết thời gian chờ và không trả về (0) byte. Nhất của tất cả tôi đã trì hoãn chúng trong một vài phút trước khi nhận được để các nạn nhân tiếp theo. http://gelm.net/How-to-block-Baidu-with-PHP.htm

1

Khối không mong muốn Robot/Nhện khách qua PHP

Hướng dẫn:

Đặt PHP Code sau vào đầu file index.php của bạn.

Ý tưởng ở đây là đặt mã vào trang chủ PHP của trang web chính, điểm vào chính của trang web.

Nếu bạn có các tệp PHP khác được truy cập trực tiếp qua URL (không bao gồm PHP bao gồm hoặc yêu cầu tệp loại hỗ trợ), sau đó đặt mã ở đầu các tệp đó. Đối với hầu hết các trang web PHP và các trang web PHP CMS, tệp index.php của root là tệp là điểm vào chính của trang web.

Hãy nhớ rằng số liệu thống kê trang web của bạn, tức là AWStats, sẽ vẫn ghi lại lần truy cập trong rô bốt không xác định (được xác định bởi 'bot' theo sau là dấu cách hoặc một trong các ký tự sau _ +:,.;/-) các bot này sẽ bị chặn truy cập vào nội dung trang web của bạn.

<?php 
// --------------------------------------------------------------------------------------------------------------- 

// Banned IP Addresses and Bots - Redirects banned visitors who make it past the .htaccess and or robots.txt files to an URL. 
// The $banned_ip_addresses array can contain both full and partial IP addresses, i.e. Full = 123.456.789.101, Partial = 123.456.789. or 123.456. or 123. 
// Use partial IP addresses to include all IP addresses that begin with a partial IP addresses. The partial IP addresses must end with a period. 
// The $banned_bots, $banned_unknown_bots, and $good_bots arrays should contain keyword strings found within the User Agent string. 
// The $banned_unknown_bots array is used to identify unknown robots (identified by 'bot' followed by a space or one of the following characters _+:,.;/\-). 
// The $good_bots array contains keyword strings used as exemptions when checking for $banned_unknown_bots. If you do not want to utilize the $good_bots array such as 
// $good_bots = array(), then you must remove the the keywords strings 'bot.','bot/','bot-' from the $banned_unknown_bots array or else the good bots will also be banned. 
    $banned_ip_addresses = array('41.','64.79.100.23','5.254.97.75','148.251.236.167','88.180.102.124','62.210.172.77','45.','195.206.253.146'); 
    $banned_bots = array('.ru','AhrefsBot','crawl','crawler','DotBot','linkdex','majestic','meanpath','PageAnalyzer','robot','rogerbot','semalt','SeznamBot','spider'); 
    $banned_unknown_bots = array('bot ','bot_','bot+','bot:','bot,','bot;','bot\\','bot.','bot/','bot-'); 
    $good_bots = array('Google','MSN','bing','Slurp','Yahoo','DuckDuck'); 
    $banned_redirect_url = 'http://english-1329329990.spampoison.com'; 

// Visitor's IP address and Browser (User Agent) 
    $ip_address = $_SERVER['REMOTE_ADDR']; 
    $browser = $_SERVER['HTTP_USER_AGENT']; 

// Declared Temporary Variables 
    $ipfound = $piece = $botfound = $gbotfound = $ubotfound = ''; 

// Checks for Banned IP Addresses and Bots 
    if($banned_redirect_url != ''){ 
    // Checks for Banned IP Address 
     if(!empty($banned_ip_addresses)){ 
      if(in_array($ip_address, $banned_ip_addresses)){$ipfound = 'found';} 
      if($ipfound != 'found'){ 
      $ip_pieces = explode('.', $ip_address); 
      foreach ($ip_pieces as $value){ 
       $piece = $piece.$value.'.'; 
       if(in_array($piece, $banned_ip_addresses)){$ipfound = 'found'; break;} 
      } 
      } 
      if($ipfound == 'found'){header("location: $banned_redirect_url"); exit();} 
     } 

    // Checks for Banned Bots 
     if(!empty($banned_bots)){ 
      foreach ($banned_bots as $bbvalue){ 
      $pos1 = stripos($browser, $bbvalue); 
      if($pos1 !== false){$botfound = 'found'; break;} 
      } 
      if($botfound == 'found'){header("location: $banned_redirect_url"); exit();} 
     } 

    // Checks for Banned Unknown Bots 
     if(!empty($good_bots)){ 
      foreach ($good_bots as $gbvalue){ 
      $pos2 = stripos($browser, $gbvalue); 
      if($pos2 !== false){$gbotfound = 'found'; break;} 
      } 
     } 
     if($gbotfound != 'found'){ 
      if(!empty($banned_unknown_bots)){ 
      foreach ($banned_unknown_bots as $bubvalue){ 
       $pos3 = stripos($browser, $bubvalue); 
       if($pos3 !== false){$ubotfound = 'found'; break;} 
      } 
      if($ubotfound == 'found'){header("location: $banned_redirect_url"); exit();} 
      } 
     } 
    } 

// --------------------------------------------------------------------------------------------------------------- 
?> 
Các vấn đề liên quan