
  


---
title: "Bloquear el acceso a user-agents - Carlos Sánchez"
description: "Como impedir el acceso a distintos user agents a toda la web o a directorios específicos por medio del servidor"
author: "Carlos Sánchez"
url: https://carlossanchezdonate.com/articulo/bloquear-user-agents/
image: https://carlossanchezdonate.com/wp-content/uploads/tb-servidor-forbidde-useragents.jpg
---





# Bloquear el acceso a user-agents




                Guía sobre cómo impedir el acceso a determinados user agents mediante el servidor






![Bloquear el acceso a user-agents](https://carlossanchezdonate.com/wp-content/uploads/cover-servidor-forbidde-useragents.jpg)




**Autor:**

        : [Carlos Sánchez](https://carlossanchezdonate.com/sobre-mi/)


**Temática: **
: [Rastreo](https://carlossanchezdonate.com/seo-avanzado/rastreo/)
, : [Servidores](https://carlossanchezdonate.com/seo-avanzado/servidores/)




**Fecha de publicación:**

        : 2022-10-19



**Última revisión:**

        : 2023-11-07




        **Índice**
                mostrar


        1
                Bloquear User agents en Apache
        1.1
                Bloquear el acceso de un directorio
        2
                Bloquear User Agents en Nginx
        2.1
                Bloquear el acceso de un directorio
        3
                Auditar que funcionan los códigos
        4
                Bloquear todos los user-agents menos uno
        4.1
                En Apache
        4.2
                En nginx
        5
                Bibliografía

Una práctica SEO habitual, suele ser bloquear el acceso a distintos user-agents. En ocasiones, porque queremos evitar el rastreo, la indexación o la sobrecarga de peticiones que se hacen en la web consumiendo innecesariamente excesivos recursos del servidor, o porque necesitamos bloquear algunos usuarios o bots que no nos conviene que nos rastreen la web.

Es cierto que en muchas ocasiones es necesario pero, de una forma incorrecta, se suelen aplicar estas directrices por medio del [robots.txt](https://carlossanchezdonate.com/articulo/hacer-robots-txt/), cuando es un estándar que cualquier rastreador puede saltarse fácilmente si así quiere hacerlo. En el caso de no querer indexar, Google es capaz de indexar páginas bloqueadas con el robots.txt; en el caso de querer evitar el rastreo o la sobrecarga, puede ser válido siempre y cuando el user-agent decida respetar el robots.txt, que no siempre es así ya que [cada user-agent lo respeta o interpreta como quiere](https://carlossanchezdonate.com/curiosidades/directivas-peculiares-de-robots/).

Debido a esto, la mejor práctica suele ser hacer un bloqueo por medio del servidor, ya que esto no se lo podrá saltar ningún bot, empleando los user-agents especificados, y en el caso de motores de búsqueda como Google, al ver un código de respuesta 403, no solo no lo rastrearán, sino que tampoco lo indexarán.

Recomiendo siempre personalizar los códigos de error, por si un usuario se lo encuentra de forma accidental.

Como sabréis, me gusta mostrar los comandos tanto en [apache](https://carlossanchezdonate.com/articulo/apache/) como en [nginx](https://carlossanchezdonate.com/recursos/redirecciones-servidor/nginx/). Así que veamos las opciones en ambos entornos.

## Bloquear User agents en Apache

Recomiendo emplear estos códigos lo más arriba posible en el .htaccess, ya que serán de vital importancia para los navegadores a la hora de hacer una petición.

Por lo general, si queremos bloquear el acceso de un user-agent a todo el contenido, vamos a querer bloquear más de uno. También es posible que dicho user-agent tenga espacios, lo cual se representará con un .* debido al regex; aunque hay más comandos que permiten seleccionar el espacio que también son válidos. Por eso, en este código, os pongo un ejemplo para bloquear muchos user agents y, algunos de ellos, con espacios en el nombre:

`RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} ^.* (Screaming.*Frog.*SEO.*Spider|Xenu's|WebCopier|URL_Spider_Pro|WebCopier.*v3.2a|WebCopier.*v.2.2|EmailCollector|Zeus.*82900.*Webster.*Pro.*V2.9.*Win32|Zeus|Zeus.*Link.*Scout|Baiduspider-image|Baiduspider).*$ [NC]

RewriteRule ^.*$ - [F,L]`

Básicamente lo que indica este código es que en la segunda línea, los que cumplan la condición de ser el user-agent que se exponga a continuación, se someterá al siguiente rewriterule.

Entonces en regex, con la barra | lo que indicamos son alternativas, de esta forma, estamos seleccionando todos los de la lista.

Ese Rewriterule al poner las banderas [F,L] generará ese ansiado código de respuesta 403, pero recordad que podéis utilizarlo incluso para generar otro tipo de redirecciones si esto os resulta útil.

### Bloquear el acceso de un directorio

Si quieres bloquear algún directorio específico a algún user-agent, puedes seguir las indicaciones que doy sobre [seleccionar URI o parámetro para un rewriterule](https://carlossanchezdonate.com/articulo/redireccionar-parametros-htaccess/).

`RewriteEngine On

RewriteCond %{REQUEST_URI} ^/no-buscadores/ [NC]

RewriteCond %{HTTP_USER_AGENT} ^.*(Googlebot|Bingbot).*$ [NC]

RewriteRule ^.*$ - [F,L]`

De esta forma, todo lo que esté dentro de ese subdirectorio, no será rastreable ni indexable por los buscadores.

## Bloquear User Agents en Nginx

En el caso de nginx, en el nginx.conf dentro de server{} se haría con un condicional:

`if ($http_user_agent ~ (Xenu's|WebCopier)) {

return 403;

}`

### Bloquear el acceso de un directorio

Para bloquearlo dentro de un directorio habría que meterlo dentro de un location:

`location = /no-rastreo/*{

if ($http_user_agent ~ (AhrefsBot)) {

return 403;

}

}`

Recuerda como siempre, que tienes que [reiniciar la configuración de nginx](/articulo/recargar-configuracion-nginx/) para que esto tenga efecto.

## Auditar que funcionan los códigos

Aunque estoy acostumbrado a trabajar con los códigos que expongo y siempre los verifico para asegurar que publico los ejemplos libres de errores. Siempre se puede escapar algo, o puede ser que no se editen de una forma correcta. Así que siempre recomendaré probar los códigos en un entorno de prueba antes que en la web en producción donde se vaya a implementar.

Para comprobar si la página tiene bloqueo para un user-agent específico, tendremos que irnos al inspeccionador de elementos.

En Chrome podemos hacerlo con Clic derecho > Inspeccionar, o utilizar el atajo rápido Control + Mayus + i.

Independientemente de como se nos muestre, vamos a los 3 puntitos que hay en vertical arriba a la derecha del todo, hacemos clic, vamos a más herramientas y pulsamos en Condiciones de red.

![Inspector de elementos en español, condiciones de red](https://carlossanchezdonate.com/wp-content/uploads/inspeccionador-condiciones-red.jpg)
Una vez hemos realizado esto, nos saldrán las opciones de cambiar el almacenamiento en [caché](https://carlossanchezdonate.com/articulo/cache-en-el-seo/), limitaciones de red y el del user-agent. Ahí podremos poner el user-agent que queramos y hacer la comprobación.

![Bloquear los user agents por medio de servidor y auditarlo](https://carlossanchezdonate.com/wp-content/uploads/block-user-agent-console.jpg)
También tenemos la opción de hacer esta prueba con Screaming Frog.

## Bloquear todos los user-agents menos uno

Por otro lado, ya que estamos tocando User-agents con el servidor, es posible que queramos [bloquear el acceso para que nada se rastree ni se indexe](https://carlossanchezdonate.com/articulo/web-testing-seo/).

Nos podemos inventar un user-agent y dejarle permiso sólo a dicho user-agent por medio de la negación:

### En Apache

`RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} !(UserAgentPermitido) [NC]

RewriteRule ^.*$ - [F,L]

`

### En nginx

`if ($http_user_agent !~* (UserAgentPermitido)) {

return 403;

}`

Recuerda como siempre, que tienes que [reiniciar la configuración de nginx](/articulo/recargar-configuracion-nginx/) para que esto tenga efecto.

## Bibliografía

- [Bloquear user-agents por medio de nginx](https://www.xmodulo.com/block-specific-user-agents-nginx-web-server.html)


        Si te gusta este artículo, me ayudarías un montón compartiendo mi contenido:

        Compartir:


                [![Compartir en LinkedIn](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/linkedin.svg)](https://www.linkedin.com/cws/share/?url=https://carlossanchezdonate.com/articulo/bloquear-user-agents/)



                [![Compartir en Twitter](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/tw.svg)](https://twitter.com/intent/tweet?url=https://carlossanchezdonate.com/articulo/bloquear-user-agents/)



                [![Compartir en Facebook](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/facebook.svg)](https://www.facebook.com/sharer/sharer.php?u=https://carlossanchezdonate.com/articulo/bloquear-user-agents/)



                [![Compartir en WhatsApp](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/whatsapp.svg)](whatsapp://send?text=https://carlossanchezdonate.com/articulo/bloquear-user-agents/)



                [![Compartir en Telegram](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/tlg.svg)](https://telegram.me/share/url?url=https://carlossanchezdonate.com/articulo/bloquear-user-agents/)





        No se te da mal el SEO Técnico

**Te falta mi máster**. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de WEB

        [¡Accede al Máster de SEO Técnico!](/master-seo-tecnico/)



  Tal vez te interesen otros artículos:
  [Artículos de SEO](/seo-avanzado/)





                [SEO en contenido restringido](https://carlossanchezdonate.com/articulo/seo-en-contenido-no-accesible-para-todos-los-usuarios/)







                [Sitemaps](https://carlossanchezdonate.com/articulo/sitemaps/)







                [Curación de enlaces en el SEO](https://carlossanchezdonate.com/articulo/curacion-de-enlaces-en-el-seo/)







                [Texto alternativo para imágenes](https://carlossanchezdonate.com/articulo/alt-imagenes/)







                [Rich Snippets con HTML](https://carlossanchezdonate.com/articulo/rich-snippets-sin-datos-estructurados/)
