2012-03-30 19 views
6

¿Cómo puedo resistirme a los malos robots no identificados para rastrear mi sitio web? Algunos bots malos cuyo nombre no está presente en cPanel de Apache están accediendo mal al ancho de banda de mi sitio web.¿Cómo bloquear bots no identificados que se rastrean en mi sitio web?

Había intentado robots.txt en batgap.com/robots.txt y también bloqueado con .htaccess, pero no hay ninguna mejora en el uso del ancho de banda. No conozco la IP de esos bots, así que no puedo bloquearlos por la dirección IP. Estos robots consumen demasiado ancho de banda del sitio y, por lo tanto, necesito aumentar el resultado del servidor.

+0

Cloudflare? O puede evaluar una redirección basada en JS ofuscada y suplantarla a bots conocidos enviándoles un redireccionamiento de encabezado. Pero los usuarios regulares deberían tener JS y ser capaces de seguir una redirección ofuscada. –

+0

@Sandeep Kumar, si todavía es real, solo leyó [la publicación] (http://scraping.pro/my-site-is-being-scraped-how-can-i-prevent-being-scraped/). –

Respuesta

1

Desafortunadamente, estos "bots malos" a veces ignoran el robots.txt, aunque si el problema son más las arañas originales del motor de búsqueda que no desea ver, deberían tenerlo en cuenta. Supongo que con CPanel puede acceder a los registros del servidor web (apache). Allí puede buscar dos cosas: la IP y el User-Agent. Puede encontrar los culpables allí y agregarlos a su robots.txt y .htaccess. Tenga en cuenta que las reglas de .htaccess que niegan las direcciones IP son mucho mejores que simplemente confiar en robots.txt porque le quita la elección a las manos del creador del bot.

Si conoces los bots específicos que están haciendo esto, deberías poder obtener direcciones IP y user-agents de los foros, pero si se trata de algo más general, entonces realmente me temo que es más un trabajo manual.

Hay otros métodos que se pueden usar con efecto variable, como mod_security (http://www.askapache.com/htaccess/modsecurity-htaccess-tricks.html) pero esto significa que tendrá que acceder la configuración de su servidor web

Finalmente, puede verificar los enlaces que apuntan a su sitio web (usando la opción link: en google). A veces, si tienes enlaces en foros fraudulentos o similares, esto puede aumentar las posibilidades de que los robots te atrapen. Tal vez pueda ver la URL del referer en los registros de Apache, pero todo esto se basa en muchas suposiciones y probablemente tenga suerte si tiene un gran efecto.

3

Soy de Incapsula y lidiamos con bots malos regularmente.

Recientemente hemos liberar una investigación relacionada con bots que proporciona información detallada sobre el alcance del problema (http://www.incapsula.com/the-incapsula-blog/item/225-what-google-doesnt-show-you-31-of-website-traffic-can-harm-your-business) ya la luz de estos datos Estoy de acuerdo con @Leonard Challis - que simplemente no puede manejar manualmente la protección bot.

Dicho esto, existen soluciones de protección de bots, incluso las gratuitas (incluidas nosotros) que pueden ayudarlo con los bots malos.

BTW - Al igual que usted mencionó, un subproducto de malas visitas de bots es una pérdida de ancho de banda. Recientemente nos dimos cuenta de lo sorprendentemente enorme que es el uso de ancho de banda relacionado con bots. Este es un tema interesante en sí mismo. Creemos que al evitar el tráfico de bot malo, los proveedores de hosting realmente pueden mejorar su eficiencia (con la esperanza de usar esto para reducir costos o mejorar los servicios). Una vez que imagines la implicación social y comercial de esto, puedes entender el verdadero alcance de este problema de bots que va más allá del daño inmediato.

1

Bloqueo 'bad bots' usando PHP. Infiltro en dirección IP principalmente, luego por User-Agent de forma secundaria. Hago que el "bot malo" espere hasta 999 segundos, luego devuelvo una página web muy pequeña. Por lo general (siempre) el tiempo de espera de la conexión a Internet y cero (0) bytes son devueltos. Lo mejor de todo es que los he retrasado unos minutos antes de llegar a la siguiente víctima. http://gelm.net/How-to-block-Baidu-with-PHP.htm

1

Bloque no deseados Robots/Spiders visitantes a través de PHP

Instrucciones:

Coloque el siguiente código PHP en el comienzo de su archivo index.php.

La idea aquí es colocar el código en la página principal de PHP del sitio principal, el punto de entrada principal del sitio.

Si tiene otros archivos PHP a los que se accede directamente a través de una URL (sin incluir PHP incluir o requerir archivos de tipo de soporte), coloque el código al comienzo de esos archivos. Para la mayoría de los sitios PHP y sitios PHP CMS, el archivo index.php de la raíz es el archivo que es el punto de entrada principal del sitio.

Tenga en cuenta que las estadísticas de su sitio, es decir, AWStats, seguirán registrando los hits en robot desconocido (identificado por 'bot' seguido de un espacio o uno de los siguientes caracteres _ +:,.;/-), pero estos bots no podrán acceder al contenido de su sitio.

<?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();} 
      } 
     } 
    } 

// --------------------------------------------------------------------------------------------------------------- 
?> 
Cuestiones relacionadas