Acelerando los rastreadores web

8

Mi sitio web está siendo DoS'ed por los webpiders de Google. Google puede indexar mi sitio, pero a veces consulta un tagcloud en mi sitio más rápido de lo que mi servidor web puede producir los resultados, haciendo que mi servidor web se quede sin recursos.

¿Cómo puedo limitar el acceso a mi servidor web de tal manera que los visitantes normales no se vean afectados?

robots.txt no es una opción porque bloquearía la indexación de todo el sitio.

iptables -m recent es complicado, porque algunas páginas tienen muchas imágenes u otros archivos de datos y disparadores 'recientes' también (generalmente mi agregador RSS, cargando imágenes y fuentes).

iptables -m limit tiene la misma desventaja y, además, no pude ser selectivo por dirección de origen IP.

¿Cómo puedo limitar los visitantes que hacen que la carga de mi servidor aumente demasiado?

Estoy ejecutando apache2 en el servidor Ubuntu en una VM VirtualBox.

jippie
fuente
1
Puede usar las herramientas para webmasters para reducir la frecuencia de rastreo. Consulte support.google.com/webmasters/bin/…
derobert el

Respuestas:

5

Pruebe el módulo mod_qos Apache. La versión actual tiene los siguientes mecanismos de control.

  • El número máximo de solicitudes simultáneas a una ubicación / recurso (URL) o host virtual.
  • Limitación del ancho de banda, como el número máximo permitido de solicitudes por segundo a una URL o el máximo / mínimo de kbytes descargados por segundo.
  • Limita el número de eventos de solicitud por segundo (condiciones de solicitud especiales). También puede "detectar" personas muy importantes (VIP) que pueden acceder al servidor web sin o con menos restricciones.
  • Línea de solicitud genérica y filtro de encabezado para denegar operaciones no autorizadas.
  • Limitación y filtrado de datos del cuerpo de la solicitud (requiere mod_parp).
  • Limitaciones en el nivel de conexión TCP, por ejemplo, el número máximo de conexiones permitidas desde una única dirección de origen IP o control dinámico de mantenimiento de vida.
  • Prefiere direcciones IP conocidas cuando el servidor se queda sin conexiones TCP libres.

Esta regla condicional de muestra de la documentación debería llevarlo en la dirección correcta.

# set the conditional variable to spider if detecting a
# "slurp" or "googlebot" search engine:
BrowserMatch             "slurp"                  QS_Cond=spider
BrowserMatch             "googlebot"              QS_Cond=spider

# limits the number of concurrent requests to two applications
# (/app/b and /app/c) to 300 but does not allow access by a "spider"
# if the number of concurrent requests exceeds the limit of 10:
QS_LocRequestLimitMatch       "^(/app/b/|/app/c/).*$"  300
QS_CondLocRequestLimitMatch   "^(/app/b/|/app/c/).*$"  10   spider
George M
fuente
Parece un poco más complicado de lo que esperaba un viernes por la noche disfrutando de la cerveza belga ... Tengo que verlo mañana. Parece prometedor con el navegador y las cosas. Ahora que lo pienso ... sería bueno si automáticamente cualquier host / agente de uso que solicita robot.txt: o) Thnx Uther
jippie
¡Disfruta esa cerveza!
George M
OK, se ve bastante simple. Lo implementé para ver si mi servidor web podrá seguir el ritmo ahora.
jippie