Envío de "agente de usuario" usando la biblioteca de solicitudes en Python

Resuelto asked hace 12 años • 4 respuestas

Quiero enviar un valor "User-agent"mientras solicito una página web usando solicitudes de Python. No estoy seguro de si está bien enviar esto como parte del encabezado, como en el siguiente código:

debug = {'verbose': sys.stderr}
user_agent = {'User-agent': 'Mozilla/5.0'}
response  = requests.get(url, headers = user_agent, config=debug)

La información de depuración no muestra los encabezados que se envían durante la solicitud.

¿Es aceptable enviar esta información en el encabezado? Si no, ¿cómo puedo enviarlo?

 avatar May 16 '12 00:05
Aceptado

Debe user-agentespecificarse como un campo en el encabezado.

Aquí hay una lista de campos de encabezado HTTP , y probablemente le interesen los campos específicos de la solicitud , que incluyen User-Agent.

Si está utilizando solicitudes v2.13 y posteriores

La forma más sencilla de hacer lo que desea es crear un diccionario y especificar sus encabezados directamente, así:

import requests

url = 'SOME URL'

headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': '[email protected]'  # This is another valid field
}

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

Si está utilizando solicitudes v2.12.x y anteriores

Versiones anteriores de requestsencabezados predeterminados bloqueados, por lo que querrás hacer lo siguiente para conservar los encabezados predeterminados y luego agregarles los tuyos propios.

import requests

url = 'SOME URL'

# Get a copy of the default headers that requests would use
headers = requests.utils.default_headers()

# Update the headers with your custom ones
# You don't have to worry about case-sensitivity with
# the dictionary keys, because default_headers uses a custom
# CaseInsensitiveDict implementation within requests' source code.
headers.update(
    {
        'User-Agent': 'My User Agent 1.0',
    }
)

response = requests.get(url, headers=headers)
wkl avatar May 15 '2012 17:05 wkl

Es más conveniente usar una sesión , de esta manera no tendrás que acordarte de configurar encabezados cada vez:

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

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

De forma predeterminada, la sesión también administra las cookies por usted. En caso de que desee desactivar eso, consulte esta pregunta .

user avatar Jun 14 '2017 04:06 user

Enviará la solicitud como navegador.

import requests

url = 'https://Your-url'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}

response= requests.get(url.strip(), headers=headers, timeout=10)
Rajeshkanna Purushothaman avatar Jun 20 '2022 13:06 Rajeshkanna Purushothaman