Cuando abres la página de descarga de un programa, el sitio te sugiere por su cuenta el archivo adecuado para tu sistema operativo. Algunos sitios envían una página móvil distinta a quien llega desde un teléfono. El sitio lo hace sin preguntarte, porque tu navegador envía con cada petición un texto de una sola línea en el que se presenta. Esa línea se llama User-Agent (en español, "agente de usuario").
La primera mitad de este artículo es para todo el mundo: cómo se lee una cadena User-Agent parte por parte, cómo ver la tuya y cómo cambiarla en Chrome, en Windows 11 y en Android. La segunda mitad es más técnica: la reducción del User-Agent de Chrome, las cabeceras Client Hints que ocuparon su lugar, qué no cambia cuando cambias el User-Agent y cómo debería identificarse un script que has escrito tú.
¿Qué es el User-Agent?
Cuando tu navegador pide una página, no envía al servidor solo la dirección. Encima de la petición viajan unas líneas breves de información llamadas cabeceras (headers): qué idiomas prefieres, qué tipos de archivo aceptas y qué software envía la petición. Esta última es la cabecera User-Agent.
El estándar HTTP RFC 9110 define esta cabecera como el campo que lleva información sobre el software que origina la petición. Los servidores la usan para tres tareas: averiguar en qué navegador aparece un problema de compatibilidad, adaptar la respuesta a las limitaciones del cliente y llevar estadísticas de navegadores y sistemas operativos. El estándar recomienda que el cliente envíe esta cabecera en cada petición.
La expresión "user agent" es en realidad el nombre del software, no de la cabecera: todo programa que envía peticiones en tu nombre es un agente de usuario. Un navegador, el bot de un buscador, una aplicación del teléfono, el comando curl y un script de Python entran en esa definición, y todos tienen un valor User-Agent.
Conviene corregir dos errores desde el principio. El User-Agent no contiene tu dirección IP ni tu ubicación. La dirección IP se lee de la propia conexión; explicamos cómo cambia en nuestra guía para cambiar la dirección IP. El User-Agent tampoco es una autenticación: es una declaración del propio cliente, y el servidor no puede comprobar si es cierta mirando la cabecera.
¿Cómo se lee una cadena User-Agent?
Un Chrome actual en Windows envía este valor (el ejemplo es de la página User-Agent de MDN):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36Junto a Chrome, en la línea aparecen también los nombres Mozilla, AppleWebKit, Gecko y Safari. La razón es histórica. Durante años los sitios escribieron reglas del tipo "si el User-Agent contiene este nombre, envía la página avanzada". Cada navegador nuevo añadió los nombres de los anteriores a su propia línea para no quedarse sin esa página. En palabras de MDN, Mozilla/5.0 es un token general que indica que el navegador es compatible con Mozilla y, por razones históricas, hoy lo envía casi cualquier navegador.
| Parte | ¿Qué indica? |
|---|---|
Mozilla/5.0 | Resto de compatibilidad; no distingue navegadores |
(Windows NT 10.0; Win64; x64) | Sistema operativo y arquitectura del procesador |
AppleWebKit/537.36 (KHTML, like Gecko) | Nombres de motores, añadidos también por compatibilidad |
Chrome/143.0.0.0 | El navegador real y su versión principal |
Safari/537.36 | Un nombre añadido para sitios escritos pensando en Safari |
La regla práctica de lectura es esta: el sistema operativo está dentro del primer paréntesis y el nombre real del navegador suele estar cerca del final de la línea. Edge añade Edg/ al final, Firefox termina con Firefox/. En los teléfonos entra en la línea la palabra Mobile; los sitios que eligen la página móvil según el User-Agent buscan esa palabra.
Un detalle más: aunque uses Windows 11, dentro del paréntesis pone Windows NT 10.0. Microsoft dice con claridad en su propia documentación que las cadenas User-Agent no se actualizarán para distinguir Windows 10 de Windows 11. Verás el motivo más abajo, en la sección sobre la reducción del User-Agent.
¿Cómo puedes ver tu User-Agent?
No necesitas instalar nada. Bastan las herramientas del propio navegador:
- En cualquier página de Chrome o Edge, pulsa
F12(o los tres puntos de arriba a la derecha > Más herramientas > Herramientas para desarrolladores). - En el panel que se abre, pasa a la pestaña Console.
- Escribe
navigator.userAgenty pulsa Intro. La línea que vuelve entre comillas es el User-Agent que tu navegador comunica a JavaScript. - Para ver qué llega de verdad al servidor, pasa a la pestaña Network, recarga la página, haz clic en la primera petición de la lista y busca la línea
User-Agenten "Request Headers".
Lo esperable es que los pasos tres y cuatro muestren el mismo valor. Si son distintos, una extensión o un ajuste está cambiando solo uno de los dos.
Si prefieres no usar la consola, también sirve una página que devuelve tal cual las cabeceras de la petición que recibe. Abre https://httpbin.org/headers en el navegador y verás todas las cabeceras que el servidor ha recibido de ti; usaremos la misma dirección en la parte de código del artículo.
¿Cómo se cambia el User-Agent?
Primero, ten claro qué estás cambiando: el User-Agent no es un ajuste del sistema operativo, sino de cada navegador. Ni Windows 11 ni Android tienen un único ajuste de User-Agent válido para todos los programas.
Chrome y Edge (Windows 11, Windows 10, macOS)
La vía oficial de Chrome es la pestaña Network conditions de DevTools. Edge también está basado en Chromium, así que trae las mismas herramientas.
- Abre DevTools con
F12. - Sigue los tres puntos de arriba a la derecha del panel > More tools > Network conditions. Si no lo encuentras en el menú, abre el menú de comandos con
Ctrl+Shift+Py escribe "Network conditions". - Bajo el título User agent, desmarca la casilla "Use browser default".
- Elige de la lista un navegador y un dispositivo ya preparados, o escribe tu propia cadena con la opción "Custom...".
- Recarga la página.
El campo "User agent client hints" de la misma sección permite editar también los valores de Client Hints que explicamos más abajo. Este cambio no es un ajuste permanente del navegador; vale mientras dura la prueba, en la pestaña donde DevTools está abierto. Aquí damos los nombres en inglés de DevTools; si tu interfaz aparece en español, las entradas están en el mismo sitio.
Teléfono Android
En Android no hay una forma integrada de escribir un User-Agent a mano, pero el cambio que más se pide es un solo toque. En Chrome, toca los tres puntos de arriba a la derecha y marca la casilla Sitio para ordenadores; Chrome visita entonces ese sitio con identidad de escritorio y llega el diseño ancho. Si quieres que sea el valor predeterminado para todos los sitios, la ruta que indica la Ayuda de Chrome es: Configuración > Configuración de sitios > Sitio para ordenadores.
¿Qué es un User-Agent switcher?
Las extensiones que aparecen en las tiendas de los navegadores con el nombre "User-Agent switcher" hacen lo mismo sin abrir DevTools y de forma permanente: eliges una identidad de una lista y la extensión sustituye con ella la cabecera User-Agent de las peticiones salientes. Antes de instalar una, mira el permiso que pide. Para poder modificar cabeceras, la extensión necesita acceso a tu tráfico en todos los sitios que visitas; concede ese permiso solo a una extensión de cuyo origen te fíes y desactívala cuando termines.
¿Por qué se cambia el User-Agent?
Todas las razones legítimas son algún tipo de prueba:
- Probar la vista móvil desde el ordenador. Ver qué página envía tu propio sitio a un teléfono.
- Depurar un problema de compatibilidad. Averiguar si una página corporativa antigua que dice "tu navegador no es compatible" de verdad no funciona.
- Ver qué muestra tu propio sitio a los bots. Detectar un error de configuración que devuelve contenido distinto a los bots de los buscadores.
- Reproducir un fallo. Examinar un problema que solo aparece en un navegador concreto cuando no lo tienes a mano.
El RFC 9110 también prevé este caso: si un cliente se presenta como otro cliente, el servidor puede suponer que el usuario quiere ver la respuesta preparada para ese cliente, aunque no funcione bien en el navegador real. La responsabilidad es de quien hace el cambio.
¿Qué es la reducción del User-Agent (UA reduction)?
Las cadenas User-Agent antiguas eran mucho más habladoras que las de hoy: la versión completa del navegador con sus cuatro números, el nivel de parche del sistema operativo y, en Android, el modelo del teléfono. Juntos, esos detalles eran una pieza ya hecha de la huella digital del navegador, que sirve para reconocer a un usuario sin cookies. El RFC 9110 hace la misma advertencia: los valores User-Agent demasiado detallados aumentan el riesgo de que un usuario sea identificado en contra de su voluntad.
Por eso Chrome simplificó la cadena por fases. Según el calendario del proyecto Chromium, los números de versión menor se congelaron en Chrome 101, la información del sistema operativo de escritorio en Chrome 107, y la versión de Android y el modelo del dispositivo en Chrome 110. En la cadena que Chrome envía hoy, estas partes no son reales, sino fijas:
| Parte | Sin la reducción (ejemplo) | Hoy |
|---|---|---|
| Versión del navegador | Chrome/143.0.12.45 | Chrome/143.0.0.0 (solo la versión principal es real) |
| Windows | Versión real | Siempre Windows NT 10.0; Win64; x64 |
| macOS | Versión real | Siempre Intel Mac OS X 10_15_7 |
| Android | Android 16; Pixel 9 | Siempre Android 10; K |
Por eso ves NT 10.0 en Windows 11, y "Android 10" con un modelo llamado "K" en un teléfono recién estrenado. La conclusión también es clara: una herramienta de estadísticas que intente leer la versión del sistema operativo o el modelo del teléfono en el User-Agent de un Chrome actual da resultados erróneos.
¿Qué son los Client Hints?
Hay sitios que de verdad necesitan la información que desapareció con la simplificación: los que quieren sugerir el instalador correcto o saber en qué versión aparece un fallo. Chrome no borró esa información, la hizo opcional y bajo petición. El mecanismo se llama User-Agent Client Hints y, como explica la guía de Client Hints de MDN, funciona así:
- En la primera petición, junto al
User-Agentsimplificado, el navegador envía tres cabeceras breves:Sec-CH-UA(marca del navegador y versión principal),Sec-CH-UA-Mobile(si es móvil) ySec-CH-UA-Platform(nombre del sistema operativo). - El servidor que quiere más indica en su respuesta, con la cabecera
Accept-CH, qué pistas desea. - El navegador añade las pistas que permite a las peticiones siguientes a ese sitio.
- Si una pista es imprescindible ya en la primera petición, el servidor usa la cabecera
Critical-CH; el navegador reenvía la petición con esa pista incluida.
Las tres cabeceras predeterminadas se ven así en una petición de Chrome:
Sec-CH-UA: "Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows""Not A(Brand" en la lista no es un error. Según MDN, los navegadores añaden a propósito una marca falsa a la lista; el objetivo es evitar que los servidores se acostumbren a rechazar una petición al ver un nombre que no conocen. Es una precaución para que no se repita la historia de Mozilla/5.0.
| Tipo de pista | Cabeceras | ¿Cuándo se envía? |
|---|---|---|
| Baja entropía | Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform | En cada petición, por defecto (solo HTTPS) |
| Alta entropía | Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-Arch | Solo si el servidor las pide con Accept-CH |
A la misma información se llega desde JavaScript con navigator.userAgentData. Pega las líneas siguientes en la consola de Chrome para ver tus propios valores:
console.log(navigator.userAgent);
if (navigator.userAgentData) {
const details = await navigator.userAgentData.getHighEntropyValues([
"platformVersion",
"model",
"fullVersionList",
]);
console.log(details);
}En Windows 11 este código devuelve para platformVersion una versión principal de 13 o superior; es el método que muestra la documentación de Microsoft para distinguir Windows 10 de Windows 11. En el equipo con Windows 11 que probamos, el User-Agent seguía diciendo Windows NT 10.0 mientras platformVersion devolvía 19.0.0.
Conoce también el límite. Hoy los Client Hints solo existen en navegadores basados en Chromium (Chrome, Edge, Opera). En los datos de compatibilidad de MDN, Firefox y Safari no envían estas cabeceras, y el objeto navigator.userAgentData no está definido en ellos. Por eso hace falta la comprobación if del código anterior.
¿Qué no cambia al cambiar el User-Agent?
El User-Agent es una etiqueta, y cambiar la etiqueta no cambia lo que hay dentro de la caja. Cuando pones la línea en "Safari en iPhone", esto sigue en su sitio:
- Las cabeceras Client Hints. Si has usado una herramienta que solo cambia la cabecera
User-Agent, Chrome sigue enviandoSec-CH-UA-Platform: "Windows". Safari no envía estas cabeceras en absoluto, de modo que tu petición dice ser Safari y a la vez lleva cabeceras que solo envía Chromium. - Lo que ve JavaScript. Tamaño de pantalla, fuentes instaladas, tarjeta gráfica, compatibilidad con pantalla táctil. Enumeramos esas señales en ¿Qué es la huella digital del navegador?.
- La propia conexión. El primer paquete que envía el navegador al establecer una conexión cifrada tiene una disposición distinta en cada familia de navegadores y viaja antes que las cabeceras. Los detalles están en nuestro artículo sobre la huella TLS y JA3.
- La dirección IP. La petición sigue saliendo por tu conexión, con tu dirección IP.
Por eso cambiar el User-Agent es una herramienta de pruebas, no una herramienta de invisibilidad. Los sistemas de protección contra bots no miran una sola cabecera, sino si las señales son coherentes entre sí; contamos el cuadro completo desde el punto de vista del dueño del sitio en nuestro artículo sobre cómo funciona la detección de bots. El software que se encarga de montar un conjunto de identidad coherente por perfil es una categoría aparte: Qué es un navegador antidetect y cómo funciona.
El User-Agent en el código: valores por defecto y una identidad de bot honesta
Todo cliente fuera del navegador tiene también un User-Agent y, si no lo has configurado, es el nombre de la propia biblioteca. Medimos los valores siguientes en nuestro propio equipo para este artículo; el número de versión será distinto en el tuyo:
| Cliente | User-Agent por defecto |
|---|---|
curl | curl/8.21.0 |
| Python Requests | python-requests/2.34.2 |
Node.js (fetch integrado) | node |
Estos valores no son incorrectos, son honestos. Lo que les falta es esto: no le dicen al administrador del sitio quién eres ni cómo contactar contigo. Un administrador que ve miles de líneas python-requests en sus registros solo tiene una opción, que es bloquear.
Para un script de recogida de datos que se ejecuta con regularidad, la buena práctica asentada es escribir una identidad que siga la forma "producto/versión (comentario)" del RFC 9110 y que lleve el nombre del bot y una vía de contacto. Los bots de los buscadores hacen lo mismo; el valor de Googlebot tiene la forma Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html). Con curl es una sola línea:
# Ver la identidad por defecto
curl -s https://httpbin.org/headers
# Escribir tu propia identidad con -A
curl -s -A "ExamplePriceBot/1.0 (+https://example.com/bot-info)" https://httpbin.org/headersEn Python, escribe la identidad en la sesión, no en cada petición. Así todas las peticiones salen con la misma identidad y el ajuste del proxy también queda en un solo lugar:
import requests
URL = "https://httpbin.org/headers"
BOT_UA = "ExamplePriceBot/1.0 (+https://example.com/bot-info; bot@example.com)"
# 1) Sin configurar nada: la identidad de la propia biblioteca
print(requests.get(URL, timeout=20).json()["headers"]["User-Agent"])
# 2) Identidad fija que se presenta a sí misma y proxy para toda la sesión
session = requests.Session()
session.headers["User-Agent"] = BOT_UA
proxy = "http://user:pass@pr.proxynet.io:8000"
session.proxies = {"http": proxy, "https": proxy}
for _ in range(3):
print(session.get(URL, timeout=20).json()["headers"]["User-Agent"])La primera línea imprime python-requests/2.x, las tres siguientes la identidad que has escrito. En Node.js lo mismo se hace con el campo headers de la llamada a fetch:
const url = "https://httpbin.org/headers";
// 1) Identidad por defecto
let res = await fetch(url);
console.log((await res.json()).headers["User-Agent"]);
// 2) La identidad que has escrito tú
res = await fetch(url, {
headers: { "User-Agent": "ExamplePriceBot/1.0 (+https://example.com/bot-info; bot@example.com)" },
});
console.log((await res.json()).headers["User-Agent"]);Guarda el archivo con la extensión .mjs; la primera línea de la salida será node. Definir un proxy en Node.js es un tema aparte, y en Cómo usar un proxy en Node.js hay ejemplos probados. Todas las opciones de proxy del lado de curl están en Cómo usar cURL con proxy.
¿Por qué no sirve un User-Agent aleatorio en cada petición?
La mayoría de las guías de scraping de internet proponen descargar una "lista de User-Agent actualizada" y elegir uno al azar en cada petición. Ya has visto el mecanismo en la sección anterior: solo cambia la etiqueta. Cuando la misma dirección IP, la misma cookie y el mismo rastro de conexión dicen ser Chrome en Windows en una petición y Safari en iPhone en la siguiente, el resultado es un tráfico que no se parece a ningún usuario real. Una identidad única, fija y que se presenta a sí misma es coherente y además le deja al administrador del sitio un interlocutor. Damos ejemplos de coherencia en la sección "Cabeceras y una identidad de cliente coherente" de Cómo hacer web scraping sin que te bloqueen.
¿Por qué no conviene hacerse pasar por Googlebot?
Algunas guías proponen escribir el valor de Googlebot en el User-Agent. No lo hagas, por dos razones. La primera: no funciona. Google recomienda a los sitios verificar su bot con una búsqueda DNS inversa o con los rangos de IP que publica. Una dirección IP que dice ser Googlebot pero que en la búsqueda DNS inversa no resuelve bajo googlebot.com, google.com o googleusercontent.com se bloquea antes que un bot corriente. La segunda: usar la identidad de otra organización es salirse del marco de permiso que te ha dado el sitio. El único uso legítimo es la prueba mencionada arriba: ver qué devuelve tu propio sitio a esa identidad.
Un nombre de bot honesto tiene una ventaja más. La línea User-agent: del archivo robots.txt usa la misma palabra, pero es otra cosa: es la línea donde el dueño del sitio indica para qué bot escribe la regla. Si el nombre de tu bot es conocido, el dueño del sitio puede escribir una regla específica para ti, y tú la cumples. Cómo se lee el archivo está en Qué es robots.txt y cómo leerlo.
Proxy y User-Agent: el proxy cambia la IP; la identidad la cambias tú
El proxy y el User-Agent se confunden a menudo, porque ambos forman parte de la pregunta "cómo me ve el sitio". El reparto de tareas es claro: el proxy cambia desde qué dirección IP y desde qué país sale la petición. No toca el User-Agent. En una conexión HTTPS tampoco puede: el proxy solo establece el túnel cifrado y no ve las cabeceras que van dentro. En el ejemplo de Python de arriba, el User-Agent que ve el sitio es el mismo con proxy y sin él.
La regla que se deduce es que los dos deben contar la misma historia. Si pruebas tu propio sitio móvil o el backend de tu aplicación con los ojos de un usuario de teléfono en Türkiye, a un User-Agent móvil le corresponde una IP que sale de la red de un operador móvil; para eso se usa Proxies móviles. Si verificas el precio o el anuncio que ve un usuario doméstico, una identidad de navegador de escritorio con Proxies residenciales forma una pareja coherente. Un "teléfono" que llega desde una IP de centro de datos, o una petición que viene de una IP de Alemania y envía Accept-Language: tr, es contradictoria por muy bien elegido que esté el User-Agent.
Casos de uso
- Prueba comparada de la versión móvil y la de escritorio. Abrir la misma página con dos identidades y con la IP del país de destino para ver las diferencias: solución de pruebas de aplicaciones.
- Recogida de datos periódica con nombre propio. Identidad de bot fija, respeto de robots.txt y límite de velocidad funcionan juntos: solución de data scraping.
- Rastreo de sitios y revisión de enlaces. Si escribes tu propio crawler, la línea de identidad es el primer elemento de configuración: solución de web crawler.
- Seguir la diferencia entre móvil y escritorio en los resultados de búsqueda. El posicionamiento cambia según el tipo de dispositivo y la ubicación: solución de proxy SEO.
- Automatización del navegador. En Playwright el User-Agent se indica al crear el contexto y se aplica a todas las páginas de ese contexto: Qué es Playwright y cómo usarlo con un proxy.
Errores frecuentes
- Creer que al cambiar el User-Agent también se oculta la IP. Son capas distintas; el User-Agent no contiene información de IP.
- Cambiar solo la cabecera y olvidar los Client Hints. Chrome sigue indicando el sistema operativo real con
Sec-CH-UA-Platform. - Leer la versión del sistema operativo en el User-Agent. En el Chrome actual esos campos son fijos; Windows 11 y las versiones nuevas de Android no aparecen en la cadena.
- Usar una "lista de User-Agent" antigua encontrada en internet. Una petición que declara una versión de Chrome de hace años no se parece al tráfico real de navegadores, y algunos sitios envían una página incompleta a las versiones antiguas.
- Elegir una identidad al azar o hacerse pasar por Googlebot. Lo primero, con la misma IP y la misma cookie, es una señal de incoherencia; lo segundo no supera la verificación por DNS inverso.
- Instalar una extensión switcher sin mirar sus permisos. Una extensión que cambia cabeceras puede ver todo tu tráfico.
- Dejar el cambio activado después de la prueba. Cuando "Sitio para ordenadores" o la extensión se quedan activados, los sitios empiezan a verse rotos y nadie recuerda por qué.
Guía de decisión
| Necesidad | Recomendación |
|---|---|
| Quiero ver mi propio User-Agent | navigator.userAgent en la consola o httpbin.org/headers |
| Voy a probar la vista móvil en el ordenador | DevTools > More tools > Network conditions |
| Voy a abrir la página de escritorio en el teléfono | "Sitio para ordenadores" en el menú de Chrome |
| Necesito saber si el visitante usa Windows 11 | Sec-CH-UA-Platform-Version o getHighEntropyValues |
| Escribo un scraper que se ejecuta con regularidad | Una sola identidad de bot fija, con nombre y dirección de contacto |
| Voy a probar cómo se me ve desde otro país y otro dispositivo | User-Agent acorde al dispositivo junto con una IP de proxy del mismo tipo |
| Quiero ver qué muestra mi sitio a los bots | Prueba con identidad de bot solo en tu propio sitio |
| Quiero superar la protección contra bots de un sitio con el User-Agent | Esta vía no funciona; API oficial o permiso del dueño del sitio |
Preguntas frecuentes
¿Qué significa User-Agent?
Literalmente, "agente de usuario": el software que envía peticiones a internet en tu nombre. En el uso diario se refiere al texto de la cabecera User-Agent, que ese software envía en cada petición para indicar su nombre, su versión y el sistema operativo.
¿El User-Agent muestra mi dirección IP o mi ubicación?
No. En la cadena solo hay información del software y del sistema operativo. El sitio conoce tu dirección IP por la propia conexión y tu ubicación aproximada a partir de esa dirección IP. Cambiar el User-Agent no afecta a ninguna de las dos.
¿Es legal cambiar el User-Agent?
Cambiar una cabecera que envía tu propio navegador no es por sí mismo un acto prohibido; los navegadores traen un menú preparado para ello en sus herramientas para desarrolladores. Lo decisivo es lo que haces después de cambiarlo. Comportarte como el bot de otra organización o esquivar las condiciones de uso de un sitio trae problemas con independencia de cómo hayas configurado la cabecera. Tratamos el marco legal de la recogida de datos en ¿El web scraping es legal?.
¿Por qué el User-Agent dice Windows 10 en Windows 11?
Los navegadores basados en Chromium han fijado el campo del sistema operativo en el valor Windows NT 10.0. La versión real se obtiene de la cabecera Sec-CH-UA-Platform-Version; una versión principal de 13 o superior significa Windows 11.
¿Los Client Hints han sustituido al User-Agent?
Todavía no. La cabecera User-Agent se sigue enviando en todos los navegadores; Chrome solo simplificó su contenido. Los Client Hints son un mecanismo adicional que da el detalle a los sitios que lo piden por una vía con permiso, y por ahora solo existen en navegadores basados en Chromium. Para los usuarios de Firefox y Safari, los sitios siguen mirando la cadena User-Agent.
¿Cambia el User-Agent cuando uso un proxy?
No cambia. El proxy cambia la dirección IP desde la que sale la petición; las cabeceras que envías siguen igual. Planifica las dos cosas a la vez: el tipo de dispositivo lo cuenta el User-Agent, y la ubicación y el tipo de red los cuenta el proxy.
En resumen
El User-Agent es la declaración de una sola línea con la que se presenta el software que envía la petición. Que empiece por Mozilla/5.0 es un resto histórico de compatibilidad; la información real está dentro del paréntesis y al final de la línea. Chrome simplificó esta línea y trasladó el detalle a las cabeceras Client Hints; por eso Windows 11 aparece como NT 10.0 y los teléfonos nuevos como Android 10; K. Cambiarlo es fácil (la pestaña Network conditions, la casilla "Sitio para ordenadores", curl -A), pero solo cambia la etiqueta: los Client Hints, las señales de JavaScript, el rastro de la conexión y la dirección IP siguen en su sitio. En tu propio script usa, en lugar de identidades aleatorias, una sola identidad con tu nombre y tu dirección de contacto, y no te hagas pasar por otro bot. Para direcciones IP coherentes con el dispositivo y la ubicación que pruebas, echa un vistazo a nuestros servicios de proxy.




