Back to Question Center
0

Necesito evitar que los Bots maten a mi Semalt robots.txt .htaccess

1 answers:

Tengo problemas con bots EXTREMOS en algunos de mis sitios web dentro de mi cuenta de hosting. Los bots utilizan más del 98% de mis recursos de CPU y el 99% de mi ancho de banda para toda mi cuenta de alojamiento. Estos bots generan más de 1 GB de tráfico por hora para mis sitios - vps gratis por 1 ao.El tráfico humano real para todos estos sitios es menos de 100 MB / mes .

He realizado una investigación exhaustiva sobre ambos robots. txt y. htaccess file para bloquear estos bots pero todos los métodos fallaron.

También puse código en los robots. txt para bloquear el acceso a los directorios de scripts, pero estos bots (Google, MS Bing y Semalt) ignoran las reglas y ejecutan los scripts de todos modos.

No quiero bloquear completamente los bots de Google, MS Bing y Yahoo, pero quiero limitar la velocidad de rastreo. Además, agregando una declaración de Semalt en los robots. el archivo txt no ralentiza los bots. Mis robots actuales. txt y. El código htaccess para todos los sitios se detalla a continuación.

He configurado tanto las herramientas de webmaster de Microsoft como de Semalt para ralentizar la velocidad de rastreo al mínimo absoluto, pero todavía están llegando a estos sitios a una velocidad de 10 hits / segundo.

Además, cada vez que subo un archivo que causa un error, todo el servidor web de VPS se cae en cuestión de segundos, de modo que ni siquiera puedo acceder al sitio para corregir el problema debido a la ubicación de los hits de estos bots.

¿Qué puedo hacer para detener el tráfico en el lugar de mis sitios web?

Intenté preguntar a mi empresa de alojamiento web (sitio5. com) muchas veces sobre este tema en los últimos meses y no pueden ayudarme con este problema.

Lo que realmente necesito es evitar que los Bots ejecuten el rss2html. script php. Intenté ambas sesiones y cookies y ambas fallaron.

robots. txt

     Usuario-agente: Mediapartners-Google
Rechazar:
Usuario-agente: Googlebot
Rechazar:
Usuario-agente: Adsbot-Google
Rechazar:
Usuario-agente: Googlebot-Image
Rechazar:
Usuario-agente: Googlebot-Mobile
Rechazar:
Usuario-agente: MSNBot
Rechazar:
Usuario-agente: bingbot
Rechazar:
Usuario-agente: Slurp
Rechazar:
User-Agent: Yahoo! Sorber
Rechazar:
# Directorios
Agente de usuario: *
No permitir: /
No permitir: / cgi-bin /
No permitir: / ads /
No permitir: / assets /
No permitir: / cgi-bin /
No permitir: / teléfono /
No permitir: / scripts /
# Archivos
No permitir: / ads / random_ads. php
No permitir: / scripts / rss2html. php
No permitir: / scripts / search_terms. php
No permitir: / scripts / plantilla. html
No permitir: / scripts / template_mobile. html    

. htaccess

     ErrorDocument 400 http: // english-1329329990. Spampoison. com
ErrorDocument 401 http: // english-1329329990. Spampoison. com
ErrorDocument 403 http: // english-1329329990. Spampoison. com
ErrorDocument 404 / index. php
SetEnvIfNoCase User-Agent "^ Yandex *" bad_bot
SetEnvIfNoCase User-Agent "^ baidu *" bad_bot
Orden denegar, Permitir
Denegar de env = bad_bot
RewriteEngine en
RewriteCond% {HTTP_user_agent} bot \ * [OR]
RewriteCond% {HTTP_user_agent} \ * bot
RewriteRule ^. * $ http: // english-1329329990. Spampoison. com [R, L]
RewriteCond% {QUERY_STRING} mosConfig_ [a-zA-Z _] {1,21} (= | \% 3D) [O]
# Bloquea cualquier script que intente base64_encode crap para enviar a través de URL
RewriteCond% {QUERY_STRING} base64_encode. * \ (. * \) [OR]
# Bloquea cualquier script que incluya una etiqueta                                     
February 5, 2018
. php no está siendo usado directamente por el cliente (es decir, si PHP lo usa siempre en lugar de ser un enlace o algo así), entonces olvídate de intentar bloquear bots. Todo lo que tiene que hacer es definir una constante o algo en la página principal, luego incluir el otro script. En el otro script, compruebe si la constante está definida y escuche un error 403 o una página en blanco o lo que sea, si no está definido.

Ahora, para que esto funcione, deberá usar include en lugar de file_get_contents , ya que este último solo leerá en el archivo (si está usando una ruta local), o ejecutar en otro proceso completo (si está usando una URL). Pero es el método que cosas como Joomla! utiliza para evitar que un script se incluya directamente. Y use una ruta de archivo en lugar de una URL, de modo que el código PHP no se haya analizado antes de intentar ejecutarlo.

Aún mejor sería mover rss2html. php fuera de la raíz del documento, pero algunos hosts hacen que sea difícil hacerlo. Si esa es una opción depende de la configuración de su servidor / host.

. com / ");salida; }

Elige tus registros y rechaza Bingbot, etc.de manera similar - no detendrá las solicitudes, pero podría ahorrar algo de ancho de banda - le dará a googlebot una probada de su propia medicina - Mwhahahahaha!

Actualizado

Al mirar su código, creo que su problema está aquí:

  if (preg_match ("/ $ bot [1] / i", $ hostname) && $ ipaddress == $ iphostname) 

Si son robots maliciosos, podrían proceder de cualquier parte, sacar esa cláusula $ ipaddress y lanzarles una respuesta 301 o 404..

  • Googlebot no entiende formularios - o - javascript, por lo que puede generar dinámicamente sus enlaces o hacer que los usuarios hagan clic en un botón para acceder a su código (con un token adecuado adjunto) php? validated = 29e0-27fa12-fca4-cae3 '; "> Rss2html. php? validated = 29e0-27fa12-fca4-cae3 - humana

  • rss2html. php - bot
  • solicitudes de límite de PHP / bloqueo de sitios web para arañas / botes / clientes, etc.

    Aquí he escrito una función PHP que puede bloquear solicitudes no deseadas para reducir su sitio web: tráfico. Dios por las arañas, los bots y los molestos clientes.

    CLIENTE / Bloqueador de Bots

    DEMO: http: // szczepan. info / 9-webdesign / php / 1-php-limit-block-web-requests-for-spiders-bots-clients-etc. html

    CÓDIGO:

      / * Función que puede bloquear solicitudes no deseadas* @return boolean / array status* /
    función requestBlocker 

    {/ *Versión 1 informaciónme [@] szczepan [dot] información###Descripción###Una función de PHP que puede bloquear solicitudes no deseadas para reducir su sitio web: tráfico. Dios por las arañas, los bots y los molestos clientes. * /$ dir = 'requestBlocker /'; ## Crear y establecer el directorio escribible !!!!$ rules = array (# Puedes agregar varias Reglas en una matriz como esta aquí# Tenga en cuenta que grandes "definiciones de sec" (como 60 * 60 * 60) explotarán su cliente Archivoformación(// si> 5 solicitudes en 5 segundos y luego el cliente de bloque 15 segundos'solicitudes' => 5, // 5 solicitudes'sek' => 5, // 5 solicitudes en 5 segundos'blockTime' => 15 // Cliente bloque 15 segundos),formación(// si> 10 solicitudes en 30 segundos y luego Bloquear cliente 20 segundos'solicitudes' => 10, // 10 solicitudes'sek' => 30, // 10 solicitudes en 30 segundos'blockTime' => 20 // Cliente bloque 20 segundos),formación(// si> 200 solicitudes en 1 hora luego Bloquear cliente 10 minutos'solicitudes' => 200, // 200 solicitudes'sek' => 60 * 60, // 200 solicitudes en 1 hora'blockTime' => 60 * 10 // Cliente bloque 10 minutos));$ tiempo = tiempo

    ;$ blockIt = array

    ;$ usuario = array

    ;# Establecer el nombre único para cada archivo de cliente$ usuario [] = isset ($ _ SERVER ['REMOTE_ADDR'])? $ _SERVER ['REMOTE_ADDR']: 'IP_unknown';$ usuario [] = isset ($ _ SERVER ['HTTP_USER_AGENT'])? $ _SERVER ['HTTP_USER_AGENT']: '';$ usuario [] = strtolower (gethostbyaddr ($ usuario [0]));# Aviso que uso archivos porque bots no acepta Sesiones$ botFile = $ dir. '_'. substr (md5 (join ('', $ user)), 0, 5). '. TXT';if (file_exists ($ botFile)) {$ file = file_get_contents ($ botFile);$ client = unserialize ($ archivo);} else {$ client = array

    ;$ client ['time'] [$ time] = 0;}# Set / Unset Blocktime para Clientes bloqueadosif (isset ($ client ['block'])) {foreach ($ client ['block'] as $ ruleNr => $ timestampPast) {$ left = $ time - $ timestampPast;if (($ left)> $ rules [$ ruleNr] ['blockTime']) {unset ($ client ['block'] [$ ruleNr]);continuar;}$ blockIt [] = 'Bloque activo para regla:'. $ ruleNr. '- desbloquear'. ($ left - $ rules [$ ruleNr] ['blockTime']). 'Sec. ';}if (! empty ($ blockIt)) {devuelve $ blockIt;}}# log / count cada accesoif (! isset ($ client ['time'] [$ time])) {$ client ['time'] [$ time] = 1;} else {$ client ['time'] [$ time] ++;}#comprobar las Reglas para el Cliente$ min = array (0);foreach ($ rules as $ ruleNr => $ v) {$ i = 0;$ tr = falso;$ sum [$ ruleNr] = '';$ requests = $ v ['requests'];$ sek = $ v ['sek'];foreach ($ client ['time'] as $ timestampPast => $ count) {if (($ tiempo - $ timestampPast) <$ sek) {$ sum [$ ruleNr] + = $ count;if ($ tr == falso) {#registro de marcas de tiempo no utilizadas para el archivo$ min [] = $ i;

    Es probable que su sitio esté siendo indexado por Google bot (s) falso (s). Puede intentar agregar un cheque y servir 404 para todas las solicitudes falsas de Google Bot.

    Aquí hay un artículo que explica cómo verificar Googlebot: http: // googlewebmastercentral. blogspot. com / 2006/09 / cómo-verificar-googlebot. html

    También podría verificar sus registros contra bots falsos conocidos: http: // stopmalvertising. com / security / fake-google-bots. html

    .

    Apache mod_rewrite con una condición o equiv con su servidor http. Para apache, algo como esto:

      RewriteCond% {HTTP_USER_AGENT} ^ GoogleBot [O]
    RewriteCond% {HTTP_USER_AGENT} ^ OtherAbusiveBot
    RewriteRule ^ / $ / static_page_for_bots. html [L] 

    Para continuar en la publicación de smassey, puede poner varias condiciones:

      RewriteCond% {HTTP_USER_AGENT} ^ GoogleBot [O]
    RewriteCond% {HTTP_USER_AGENT} ^ OtherAbusiveBot
    RewriteRule ^ rss2html \. php $ / static. html [L] 

    De esta manera, los bots todavía acceden a sus páginas, pero simplemente no esa. Como es extraño que los bots (legítimos) no se ajusten a las reglas, ¿tiene algún referencia que empuje los bots hacia su página desde otras fuentes (reenvío de nombre de dominio, )

    . com / blackhole-bad-bots / . Con este enfoque de agujero negro, recopilé una lista de IP maliciosas y luego uso. htaccess les negó. (Lo cual no es obligatorio, ya que el script mismo hace la prohibición. Pero necesito reducir la carga del servidor evitando el análisis de php para ips indeseados conocidos) en tres días mi tráfico bajó de 5GB por día a 300MB, lo cual es silencioso esperado.

    Consulte esta página también para obtener una lista completa de las reglas de htaccess para bloquear muchos bots de basura conocidos. http: // www. askapache. com / htaccess / blocking-bad-bots-and-scrapers-with-htaccess. html

    . mi. índice. php o móvil. php) y si no, envía a la página principal session_start
    ;
    if (isset ($ _ SESSION ['views'])) {$ _SESSION ['views'] = $ _SESSION ['views'] + 1;} else {$ _SESSION ['views'] = 1;}
    if ($ _SESSION ['views']> 1) {header ("Ubicación: http: // sitio web. com / index Todo lo que potencialmente hará es evitar solicitudes legítimas (del índice. php o móvil. php) de llamar al script más de una vez (Sabemos que el robot de Google real no. ) 

    Como ya se ha mencionado, colocar rss2html. php sobre la raíz web (fuera del espacio web público) evitaría que un bot acceda directamente a la secuencia de comandos, pero ¿dice que esto causa otros problemas? O bien, colóquelo en un directorio y proteja ese directorio con htaccess de solicitudes directas?

    . Bloquean bots maliciosos en el nivel de dominio antes de que lleguen a su servidor. Tarda unos 20 minutos, nunca tiene que simular el código.

    Uso este servicio en todos mis sitios y todos los sitios de clientes. Identifican bots maliciosos basados ​​en una serie de técnicas que incluyen el aprovechamiento del proyecto Honey pot.