Establecer agente de usuario usando solicitudes en Python
- Comprender cómo funciona el encabezado HTTP
- Obtener datos de agente de usuario en Python
- Establecer el valor del 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:
-
Cache-Control
: El campo de encabezado generalCache-Control
expresa instrucciones que TODOS los sistemas de almacenamiento en caché DEBEN seguir. El encabezado generalCache-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
-
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
-
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 usandosolicitudes
.
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:
Cuando se utiliza Google Chrome, el agente de usuario cambia según este:
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.