---
title: "Guía del agente de usuario de Python Requests: configuración y cambio"
slug: requests-user-agent
date: 2026-02-22T07:27:22+00:00
modified: 2026-02-22T07:27:25+00:00
permalink: https://brightdata.es/blog/datos-web/requests-user-agent
type: blog
---

[ Blog ](https://brightdata.es/blog "Blog") / [Datos web](https://brightdata.es/blog/datos-web)







 [Datos web](https://brightdata.es/blog/datos-web)

# Guía del agente de usuario de Python Requests: configuración y cambio

¡Deja de ser bloqueado por los sistemas antibots! Este tutorial te enseña a configurar y rotar el encabezado User-Agent en Python Requests para un Scraping web seguro y exitoso.

 10 min de lectura





 [ ![Antonello Zanini](https://media.brightdata.es/2022/12/Antonello-Zanini-2-50x50.jpg) ](https://brightdata.com/blog/authors/antonello-zanini)

 [Antonello Zanini

Technical Writer

 ](https://brightdata.com/blog/authors/antonello-zanini)





 ![Requests User Agent Guide blog image](https://media.brightdata.es/2024/06/Requests-User-Agent-Guide_-Setting-and-Changing.svg)





En este tutorial, aprenderás:

- Por qué es necesario configurar el encabezado del agente de usuario
- El agente de usuario predeterminado de Python `requests`
- Cómo cambiar y desactivar el agente de usuario en Requests
- Cómo implementar la rotación del agente de usuario en Python

¡Empecemos!

## Por qué siempre debe configurar el encabezado del agente de usuario

El encabezado HTTP [del agente de usuario](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent) lo establecen los navegadores, las aplicaciones que realizan solicitudes web y los clientes HTTP para identificar el software cliente que realiza la solicitud. Este valor suele incluir detalles sobre el tipo de navegador o aplicación, el sistema operativo y la arquitectura desde la que se realiza la solicitud.

Por ejemplo, este es el agente de usuario establecido por Chrome en el momento de escribir este artículo al visitar páginas web:

```none
`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/125.0.0.0 Safari/537.36`
```

Los componentes de este agente de usuario son:

- `Mozilla/5.0:` Se utilizaba históricamente para indicar la compatibilidad con los navegadores Mozilla. Ahora es un prefijo común que se añade a los agentes de usuario por motivos de compatibilidad.
- `Windows NT 10.0; Win64; x64`: sistema operativo (`Windows NT 10.0`), plataforma (`Win64`) y arquitectura (x64).
- `AppleWebKit/537.36`: motor del navegador utilizado por la versión de Chrome que realiza la solicitud.
- `KHTML, como Gecko`: compatibilidad con el motor KHTML y el motor de diseño Gecko utilizado por Mozilla.

1. `Chrome/125.0.0.0`: nombre del navegador y su versión.
2. `Safari/537.36`: Compatibilidad con Safari.

En resumen, el agente de usuario es crucial para identificar si una solicitud proviene de un navegador conocido o de otro tipo de software.

[Los bots de scraping](/blog/how-tos/what-is-a-scraping-bot) suelen utilizar cadenas de agente de usuario predeterminadas o inconsistentes, lo que revela su naturaleza automatizada. En consecuencia, las soluciones anti-scraping protegen los datos de las páginas web examinando el encabezado `User-Agent` para determinar si el usuario actual es legítimo o un bot.

Para obtener más detalles, lea nuestra guía sobre [agentes de usuario para el Scraping web](/blog/how-tos/user-agents-for-web-scraping-101).

## ¿Cuál es el agente de usuario predeterminado de Requests Python?

Como la mayoría de los clientes HTTP, [Requests](https://requests.readthedocs.io/en/latest/) establece un encabezado `User-Agent` al realizar solicitudes HTTP. En concreto, el agente de usuario predeterminado establecido por `Requests` sigue el formato siguiente:

`python-requests/X.Y.Z`

Donde `X.Y.Z` es la versión del paquete `de solicitudes` instalado en su proyecto.

Verifique que la cadena anterior es realmente el agente de usuario de Requests realizando una solicitud GET al punto final [httpbin.io](https://httpbin.io/) `/user-agent`. Esta API devuelve el encabezado `User-Agent` leído de la solicitud entrante. En otras palabras, le permite comprobar el agente de usuario establecido automáticamente por un cliente HTTP.

Importe `requests` y utilice su método [get()](https://requests.readthedocs.io/en/latest/api/#requests.get) para realizar la solicitud HTTP deseada:

```none
import requests

# realiza una solicitud HTTP GET a la URL especificada

response = requests.get('https://httpbin.io/user-agent')

# analiza la respuesta de la API como JSON y la imprime

print(response.json())
```

Ejecute el fragmento de código Python anterior y obtendrá algo como esto:

```none
`{'user-agent': 'python-requests/2.32.3'}`
```

El agente de usuario es `python-requests/2.32.3`, lo que identifica claramente la solicitud como procedente de la biblioteca `de solicitudes`. Como resultado, [los sistemas antibots](/webinar/bot-detection) pueden marcar dicha solicitud como no procedente de un usuario humano y bloquearla inmediatamente. ¡Por eso es tan importante cambiar el valor del agente de usuario de Python Requests!

Para obtener más información, consulta nuestra [guía](/blog/web-data/python-requests-guide) completa [sobre la biblioteca Python Requests](/blog/web-data/python-requests-guide).

## Cómo cambiar el agente de usuario de Python Requests

Veamos cómo cambiar y desactivar el valor del encabezado `User-Agent` en Requests.

**Establecer un agente de usuario personalizado**

Requests no ofrece una opción directa para establecer el valor del agente de usuario. Al mismo tiempo, `User-Agent` no es más que un encabezado HTTP. Por lo tanto, puede personalizar su valor como cualquier otro encabezado HTTP utilizando la opción [`headers`](https://requests.readthedocs.io/en/latest/user/quickstart/#custom-headers) como se muestra a continuación:

```none
import requests

# encabezado de agente de usuario personalizado

headers = {

  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'

}

# realizar una solicitud HTTP GET a la URL especificada

# configurar encabezados personalizados

response = requests.get('https://httpbin.io/user-agent', headers=headers)

# analizar la respuesta de la API como JSON e imprimirla

print(response.json())
```

Ejecute de nuevo el fragmento de código Python anterior y, esta vez, se imprimirá:

```none
`{'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'}`
```

¡Genial! Acabas de aprender que para configurar un agente de usuario personalizado en Python requests, tienes que:

1. Definir un [diccionario Python](https://docs.python.org/3/tutorial/datastructures.html#dictionaries) con una propiedad `user-agent`.
2. Pasar el diccionario al parámetro `headers` del método `requests` que estás utilizando para realizar la solicitud HTTP.

No olvides que los nombres de los encabezados HTTP no distinguen entre mayúsculas y minúsculas, por lo que los nombres de las propiedades del diccionario de encabezados pueden tener el formato que prefieras.

**Nota**: Este enfoque también funciona con `request()`, `post()`, `patch()`, `put()`, `delete()` y `head()`.

Para configurar un agente de usuario global `de requests`, debes configurar una sesión HTTP personalizada de la siguiente manera:

```none
import requests

# inicializar una sesión HTTP

session = requests.Session()

# establecer un encabezado personalizado en la sesión

session.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'

# realizar una solicitud GET dentro de la sesión HTTP

response = session.get('https://httpbin.io/user-agent')

# imprimir los datos devueltos por la API

print(response.json())

# otras solicitudes con un agente de usuario personalizado dentro de la sesión ...
```

Esto producirá el mismo resultado que antes. Si no estás familiarizado con las sesiones HTTP en Requests, [consulta la documentación](https://requests.readthedocs.io/en/latest/user/advanced/#session-objects).

**Desactivar el agente de usuario**

Realizar solicitudes HTTP sin configurar el agente de usuario es una mala práctica que puede activar fácilmente soluciones antibots. Sin embargo, hay situaciones en las que puede ser necesario eliminar el encabezado `User-Agent`.

El primer enfoque para desactivar el agente de usuario en Requests que se te podría ocurrir es establecer el encabezado `User-Agent` en `None`:

```none
import requests

# encabezado de agente de usuario personalizado

headers = {

  'user-agent': None

}

# realizar una solicitud HTTP GET a la URL especificada

# establecer encabezados personalizados

response = requests.get('https://httpbin.io/user-agent', headers=headers)

# analizar la respuesta de la API como JSON e imprimirla

print(response.json())
```

Esto no funcionará porque `requests` utiliza [`urllib3`](https://github.com/urllib3/urllib3) en segundo plano. Por lo tanto, se establecerá de forma predeterminada el valor del agente de usuario `de urllib3`:

```none
`python-urllib3/2.2.1`
```

En detalle, el punto final `/user-agent` devolverá algo como:

```none
`{'user-agent': 'python-urllib3/2.2.1'}`
```

Lo que hay que hacer es configurar `urllib3` para que omita el valor predeterminado del agente de usuario utilizando `urllib3.util.SKIP_HEADER`. Comprueba que el agente de usuario se ha desactivado dirigiéndote al punto final[`/headers`](https://httpbin.io/headers) de httpbin.io, que devuelve los encabezados HTTP de la solicitud entrante:

```none
import requests

import urllib3

# excluir el valor predeterminado del agente de usuario

headers = {

  'user-agent': urllib3.util.SKIP_HEADER

}

# preparar la solicitud HTTP que se va a realizar

req = requests.Request('GET', 'https://httpbin.io/headers')

prepared_request = req.prepare()

# establecer los encabezados personalizados sin agente de usuario

prepared_request.headers = headers

# crear una sesión de solicitudes y realizar

# la solicitud

session = requests.Session()

response = session.send(prepared_request)

# imprimir los datos devueltos

print(response.json())
```

Ejecute el código Python anterior y obtendrá:

```none
`{'headers': {'Accept-Encoding': ['identity'], 'Host': ['httpbin.io']}}`
```

¡Increíble! Como era de esperar, no hay ningún agente de usuario de Python requests.

## Implementar la rotación del agente de usuario en las solicitudes

Cambiar el encabezado `User-Agent` predeterminado por un valor adecuado de un navegador real puede no ser suficiente. Si realiza demasiadas solicitudes desde la misma dirección IP utilizando el mismo agente de usuario, puede despertar las sospechas de las tecnologías antibots. Estos sistemas supervisan todas las solicitudes entrantes, sabiendo que las solicitudes automatizadas suelen seguir patrones regulares.

La clave para evitar la detección de bots es aleatorizar tus solicitudes. Una buena forma de hacer que cada solicitud sea diferente de las demás es [la rotación del agente de usuario](/blog/how-tos/user-agents-for-web-scraping-101). La idea detrás de esta técnica es cambiar constantemente el encabezado del agente de usuario utilizado por el cliente HTTP. De esta manera, puedes hacer que tus solicitudes automatizadas parezcan provenir de diferentes navegadores, lo que reduce el riesgo de activar bloqueos o prohibiciones temporales.

Ahora, siga los pasos que se indican a continuación para implementar la rotación de agentes de usuario en Requests.

**Paso n.º 1: Recuperar una lista de agentes de usuario válidos**

Reúna una lista de agentes de usuario adecuados de un sitio como [User Agent String.com](https://useragentstring.com/pages/useragentstring.php) y guárdela en una matriz de Python:

```none
user_agents = [

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0",

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

    # otros agentes de usuario...

]
```

**Paso n.º 2: extraer un agente de usuario aleatorio**

Extrae aleatoriamente una cadena de agente de usuario de la matriz utilizando [`random.choice()`](https://docs.python.org/3/library/random.html#random.choice):

```none
`random_user_agent = random.choice(user_agents)`
```

No olvide que la línea anterior requiere la siguiente importación:

```none
`import random`
```

### **Paso n.º 3: Establecer el agente de usuario aleatorio y realizar la solicitud HTTP**

Defina el diccionario de encabezados con el agente de usuario aleatorio y utilícelo en la solicitud `de requests`:

```none
headers = {

  'user-agent': random_user_agent

}

response = requests.get('https://httpbin.io/user-agent', headers=headers)

print(response.json())
```

Estas instrucciones requieren esta importación:

```none
`import requests`
```

### **Paso 4: Combinar todo**

Así es como se verá la lógica de rotación del agente de usuario de Python Requests:

```none
import random

import requests

# lista de agentes de usuario

user_agents = [

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",

    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5; rv:126.0) Gecko/20100101 Firefox/126.0",

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

    # otros agentes de usuario...

]

# selecciona un agente de usuario aleatorio de la lista

random_user_agent = random.choice(user_agents)

# establecer el agente de usuario aleatorio

headers = {

  'user-agent': random_user_agent

}

# realizar una solicitud GET a la URL especificada

# e imprimir los datos de la respuesta

response = requests.get('https://httpbin.io/user-agent', headers=headers)

print(response.json())
```

Ejecute este script varias veces y obtendrá diferentes cadenas de agente de usuario.

¡Et voilà! Ahora ya eres un experto en configurar los valores del agente de usuario de Requests Python.

## Conclusión

En esta guía, has aprendido la importancia de configurar el encabezado `User-Agent` y cómo hacerlo en `requests`. De esta manera, puedes engañar a los sistemas antibots básicos para que piensen que tus solicitudes provienen de navegadores legítimos. Sin embargo, es posible que las soluciones avanzadas aún puedan detectarte y bloquearte. Para evitar las prohibiciones de IP, podrías [usar un Proxy con `requests`](/blog/proxy-101/proxy-with-python-requests), ¡pero incluso eso podría no ser suficiente!

Evita estas complicaciones con [la API Web Scraper](/products/web-scraper). Esta API de Scraping web de última generación te ofrece todo lo que necesitas para realizar solicitudes web automatizadas utilizando `solicitudes` o cualquier otro cliente HTTP. Evita sin esfuerzo las tecnologías antibots, gracias a funciones como la rotación de IP y del agente de usuario. ¡Realizar solicitudes automatizadas con éxito nunca ha sido tan fácil!

Hable con uno de nuestros expertos en datos sobre nuestras soluciones de scraping o simplemente explore todos los productos disponibles registrándose ahora. ¡Hay pruebas gratuitas disponibles!



Contactar ventasPrueba gratuita![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Tabla de Contenidos













 [ ](https://news.ycombinator.com/submitlink?t=Gu%C3%ADa+del+agente+de+usuario+de+Python+Requests%3A+configuraci%C3%B3n+y+cambio&u=https://brightdata.es/blog/datos-web/requests-user-agent) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Gu%C3%ADa+del+agente+de+usuario+de+Python+Requests%3A+configuraci%C3%B3n+y+cambio&url=https://brightdata.es/blog/datos-web/requests-user-agent) [ ](http://www.reddit.com/submit?title=Gu%C3%ADa+del+agente+de+usuario+de+Python+Requests%3A+configuraci%C3%B3n+y+cambio&url=https://brightdata.es/blog/datos-web/requests-user-agent)







##  Usted también puede estar interesado en

 [ ![cURL User Agent Guide blog image](https://media.brightdata.es/2024/05/cURL-User-Agent-Guide.svg) ](https://brightdata.es/blog/datos-web/curl-user-agent "Guía del agente de usuario cURL: configuración y cambios")

 [Datos web



 ![Antonello Zanini](https://media.brightdata.es/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Guía del agente de usuario cURL: configuración y cambios

Aprenda a configurar y cambiar el encabezado User-Agent en cURL para mejorar sus esfuerzos de Scraping web.



 22-Feb-2026

 11 min de lectura

 ](https://brightdata.es/blog/datos-web/curl-user-agent)

 [ ![How to Set a Proxy in Node-Fetch blog image](https://media.brightdata.es/2023/10/How-to-Set-a-Proxy-in-Node-Fetch-1.svg) ](https://brightdata.es/blog/101-proxy/proxy-in-node-fetch "Cómo usar proxies con node-fetch")

 [Proxy 101



 ![White number one with a flame on top.](https://media.brightdata.es/2023/03/Favicon-2-1-50x50.png)

Ryan Peden





### Cómo usar proxies con node-fetch

Aprenda a configurar un proxy en Node-Fetch siguiendo esta guía paso a paso.



 18-Oct-2023

 10 min de lectura

 ](https://brightdata.es/blog/101-proxy/proxy-in-node-fetch)

 [ ![Fetch API in NodeJS](https://media.brightdata.es/2023/10/Fetch-API-in-Node-JS.svg) ](https://brightdata.es/blog/procedimientos/fetch-api-nodejs "Solicitudes HTTP en Node.js con la API Fetch")

 [Procedimientos



 ![Antonello Zanini](https://media.brightdata.es/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Solicitudes HTTP en Node.js con la API Fetch

En esta guía, aprenderás a realizar solicitudes HTTP en Node.js con la API Fetch



 01-Oct-2023

 9 min de lectura

 ](https://brightdata.es/blog/procedimientos/fetch-api-nodejs)
