Establecer agente de usuario usando solicitudes en Python

Jay Shaw 15 febrero 2024
  1. Comprender cómo funciona el encabezado HTTP
  2. Obtener datos de agente de usuario en Python
  3. Establecer el valor del agente de usuario usando solicitudes en Python
Establecer agente de usuario usando solicitudes en Python

Este artículo explica el tema de los agentes de usuario de encabezado HTTP y cómo configurar el agente de usuario usando solicitudes en Python. Aprenderá sobre los encabezados HTTP y su importancia en la comprensión de los agentes de usuario, la obtención de agentes de usuario y el aprendizaje de múltiples formas de configurar los agentes de usuario utilizando solicitudes en Python.

Comprender cómo funciona el encabezado HTTP

Cada solicitud y respuesta HTTP incluye una serie de cadenas denominadas campos de encabezado HTTP enviadas y recibidas tanto por la aplicación cliente como por el servidor. Los encabezados HTTP permiten transmitir información adicional a un servidor y permiten que el servidor devuelva esa información.

Trabajar con encabezados permite cosas como autenticarse cuando usa API o transmitir la solicitud sobre qué tipo de información espera la aplicación.

Veamos algunos ejemplos de encabezados HTTP:

  1. Cache-Control: El campo de encabezado general Cache-Control expresa instrucciones que TODOS los sistemas de almacenamiento en caché DEBEN seguir. El encabezado general Cache-Control puede ser utilizado por un cliente o servidor HTTP para definir parámetros de caché o para realizar solicitudes de caché específicas para tipos particulares de documentos.

    Se proporciona una lista de directivas de almacenamiento en caché separadas por comas. Por ejemplo:

    Cache - Control: cache - request - directive | cache - response - directive
    # OR
    Cache - control: no - cache
    
  2. Fecha: Sin excepción, todo sello de fecha/hora HTTP debe expresarse siempre en el meridiano de Greenwich (GMT). Las aplicaciones HTTP pueden utilizar cualquiera de las siguientes tres representaciones de marca de fecha/hora:

    Sat, 22 Sep 2022 20:22:37 GMT  ; RFC 822, updated by RFC 1123
    Saturday, 22-Sep-22 20:23:37 GMT ; RFC 850, obsoleted by RFC 1036
    Sat Sep 22 20:24:37 2022       ; ANSI C's asctime() format
    
  3. User Agent: Devuelve información como la versión del navegador y el sistema operativo del ordenador desde el que se envía la solicitud. Este es el encabezado en el que se centrará específicamente en este artículo, que explica cómo configurar el agente de usuario usando solicitudes.

    Agente de usuario Mozilla

El caso de estos encabezados es irrelevante ya que estos encabezados no distinguen entre mayúsculas y minúsculas, por lo que la frase User-Agent podría escribirse alternativamente como user-agent.

Veamos un ejemplo de cómo imprimir encabezados desde una URL. Este programa envía solicitudes a la URL de destino, obtiene todos los encabezados y luego los imprime.

import requests

url = "http://www.tutorialspoint.com/python"

headers = requests.get(url).headers
print(headers)

La primera línea del código importa el paquete de la biblioteca de Python solicitudes. Se crea una variable de objeto url que almacena la URL del sitio web al que se debe enviar la solicitud.

Dentro de la variable headers, la función request.get() se usa para obtener encabezados de la url y luego se guardan dentro de la variable. Por último, se imprime la variable headers.

Esto imprime todo el diccionario de encabezados de la URL dada.

Producción :

C:\python38\python.exe "C:/Users/Win 10/main.py"
{'Content-Encoding': 'gzip', 'Age': '1490828', 'Cache-Control': 'max-age=2592000', 'Content-Type': 'text/html; charset=UTF-8', 'Date': 'Sat, 24 Sep 2022 17:50:06 GMT', 'Expires': 'Mon, 24 Oct 2022 17:50:06 GMT', 'Last-Modified': 'Wed, 07 Sep 2022 11:42:58 GMT', 'Server': 'ECAcc (tir/CD76)', 'Strict-Transport-Security': 'max-age=63072000; includeSubdomains', 'Vary': 'Accept-Encoding', 'X-Cache': 'HIT', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'SAMEORIGIN', 'X-Version': 'June-1 V2', 'X-XSS-Protection': '1; mode=block', 'Content-Length': '9299'}

Process finished with exit code 0

Obtener datos de agente de usuario en Python

Hemos visto cómo obtener un diccionario completo de encabezados usando Python. Antes de aprender a configurar el user-agent usando requests, es importante entender esta sección.

Esta sección explica una coyuntura importante que llama específicamente al agente de usuario entre todos los encabezados de la URL y lo muestra.

Como el agente de usuario devuelve datos del navegador y del sistema operativo, depende en gran medida del método que se utilice para acceder al sitio web. Por ejemplo, el sitio web http://httpbin.org/user-agent devuelve datos específicos del agente de usuario cuando se accede con diferentes navegadores.

Cuando se usa Firefox para acceder a esta URL, el agente de usuario se establece como:

Agente de usuario Mozilla

Cuando se utiliza Google Chrome, el agente de usuario cambia según este:

Agente de usuario de Chrome

Pero cuando se ejecuta un script de Python que usa la función solicitudes para obtener el agente de usuario, la URL devuelve la versión de la solicitud.

Aquí, en el programa a continuación, la función de solicitudes se usa para obtener datos del agente de usuario que muestran resultados diferentes a los que se vieron con los navegadores:

import requests

r = requests.get("http://httpbin.org/user-agent")

data = r.json()
print(data["user-agent"])

La URL devuelve la versión solicitada del script de Python utilizado.

Producción :

C:\python38\python.exe "C:/Users/Win 10/main.py"
python-requests/2.28.1

Process finished with exit code 0

Establecer el valor del agente de usuario usando solicitudes en Python

Esta sección explicará cómo agregar encabezados personalizados y configurar el agente de usuario usando solicitudes en Python. Esta sección presenta cuatro métodos diferentes para configurar usuario-agente utilizando solicitudes.

Establecer solicitudes de agente de usuario en Python para solicitudes versión 2.12

Si el sistema ejecuta una versión de python que ejecuta una versión de solicitudes 2.12 o anterior, se debe seguir este método:

El primer programa muestra cómo obtener encabezados predeterminados y luego actualizarlos específicamente para configurar usuario-agente usando solicitudes.

Importe el paquete de la biblioteca solicitudes y establezca la URL en una variable de objeto. En la variable headers, almacene la copia de los encabezados predeterminados que utilizará el paquete de la biblioteca requests.

Reemplace los encabezados predeterminados con el personalizado previsto. Debido a que el código fuente de las solicitudes tiene una implementación única de CaseInsensitiveDict para los encabezados predeterminados, el diccionario no distingue entre mayúsculas y minúsculas.

Cree una respuesta variable que se dirija a la URL con una solicitud de obtención y obtenga el estado de respuesta de la URL. Si la URL está activa y ejecutándose, devuelve el código - 200, que se imprime.

Debido a que se establece un encabezado personalizado para el agente de usuario, los datos dentro de la respuesta deben convertirse a JSON para que se pueda acceder específicamente a encabezados como el agente de usuario.

Los datos JSON de la variable respuesta se almacenan dentro de la variable datos. El programa busca un agente de usuario a partir de los datos, y se imprime el agente de usuario recién configurado que usa solicitudes.

import requests

url = "http://httpbin.org/user-agent"

headers = requests.utils.default_headers()
headers.update(
    {
        "User-Agent": "My User Agent 1.0",
    }
)

response = requests.get(url, headers=headers)
print(response)

data = response.json()
print(data["user-agent"])

Producción :

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
My User Agent 1.0

Process finished with exit code 0

Establecer solicitudes de agente de usuario en Python para las versiones de solicitudes 2.13

La versión más nueva de solicitudes permite actualizar los encabezados directamente creando un diccionario. En este ejemplo, el programa establece dos encabezados: usuario-agente y desde.

Ambos son encabezados HTTP válidos que se actualizan.

El valor de request.get() se guarda dentro de la variable response, similar al último programa. Para verificar si el encabezado HTTP user-agent se actualiza correctamente, se utiliza la función default_user_agent(); esta función obtiene el valor predeterminado de agente de usuario de la URL.

Dentro de la variable previous-agent, el user-agent predeterminado se guarda mediante la función requests. Utilizando la sintaxis previous_agent = request.utils.default_user_agent(), se imprime el valor.

Se accede a los encabezados que enviamos mediante la función response.request.headers, por lo que el nuevo encabezado user-agent actualizado se guarda dentro de la variable updated_agent usando la sintaxis updated_agent = response.request.headers['user-agent'], y luego se imprime.

Se crea una nueva variable, all_headers, para comprobar todos los encabezados, incluidos los actualizados. Nuevamente usa la función response.request.headers para almacenar los encabezados usando requests.

import requests

url = "https://httpbin.org/get"

headers = {"User-Agent": "My User Agent 1.0", "From": "youremail@domain.example"}

response = requests.get(url, headers=headers)
print(response)

previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)

updated_agent = response.request.headers["user-agent"]
print("Updated user-agent header = ", updated_agent)

all_headers = response.request.headers
print(all_headers)

Producción :

C:\python38\python.exe "C:/Users/Win 10/main.py"
<Response [200]>
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  My User Agent 1.0
{'User-Agent': 'My User Agent 1.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'From': 'youremail@domain.example'}

Process finished with exit code 0

Otro método para configurar el agente de usuario usando solicitudes es enviar las solicitudes como un navegador. En el siguiente ejemplo, dentro de la variable header, el campo user-agent se actualiza con un tipo de datos del navegador.

import requests

url = "http://httpbin.org/user-agent"
headers = {
    "User-Agent": 'user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, '
    "like Gecko) Chrome/105.0.0.0 Safari/537.36"
}

response = requests.get(url.strip(), headers=headers, timeout=10)

previous_agent = requests.utils.default_user_agent()
print("Default user-agent header = ", previous_agent)

updated_agent = response.request.headers["user-agent"]
print("Updated user-agent header = ", updated_agent)

Producción :

C:\python38\python.exe "C:/Users/Win 10/main.py"
Default user-agent header =  python-requests/2.28.1
Updated user-agent header =  user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36

Process finished with exit code 0

Otro método simple para configurar usuario-agente usando solicitudes es usar el módulo sesión, que elimina la necesidad de configurar encabezados repetidamente.

Una variable de objeto sesión utiliza la función solicitudes.Sesión() para cargar la sesión URL. Es similar a las solicitudes get que usaban los programas anteriores.

El nuevo encabezado user-agent se actualiza a través de la función session.headers.update().

Luego, la función session.get() carga la información del encabezado de la URL. Por último, se imprime la sintaxis session.headers['user-agent']) para obtener la información actualizada del conjunto user-agent usando requests.

import requests

session = requests.Session()
session.headers.update({"User-Agent": "Custom user agent"})

session.get("https://httpbin.org/headers")

print(session.headers["user-agent"])

Después de que el programa configura el agente de usuario usando solicitudes y sesión, imprime el encabezado actualizado cargado dentro de la sesión.

Producción :

C:\python38\python.exe "C:/Users/Win 10/main.py"
Custom user agent

Process finished with exit code 0

Este artículo ha explicado a fondo cómo configurar agente de usuario utilizando solicitudes y cómo obtenerlas. El lector puede configurar fácilmente agente de usuario usando solicitudes en Python después de leer el artículo.

Artículo relacionado - Python Requests