Je souhaite envoyer une valeur pour "User-agent"
lors de la demande d'une page Web à l'aide de Python Requests. Je ne suis pas sûr de savoir s'il est correct d'envoyer ceci en-tête, comme dans le code ci-dessous:
debug = {'verbose': sys.stderr}
user_agent = {'User-agent': 'Mozilla/5.0'}
response = requests.get(url, headers = user_agent, config=debug)
Les informations de débogage n'indiquent pas les en-têtes envoyés lors de la demande.
Est-il acceptable d'envoyer cette information dans l'en-tête? Si non, comment puis-je l'envoyer?
Le user-agent
doit être spécifié en tant que champ dans l'en-tête.
Voici un liste des champs d'en-tête HTTP , et vous serez probablement intéressé par champs spécifiques à la requête , qui inclut User-Agent
.
Le moyen le plus simple de faire ce que vous voulez est de créer un dictionnaire et de spécifier directement vos en-têtes, comme suit:
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)
Les anciennes versions de requests
en-têtes par défaut imbriquées. Vous souhaitez donc procéder comme suit pour conserver les en-têtes par défaut, puis leur ajouter les vôtres.
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)
Il est plus pratique d'utiliser session , de cette façon, vous n'avez pas à vous souvenir de définir des en-têtes à chaque fois:
session = requests.Session()
session.headers.update({'User-Agent': 'Custom user agent'})
session.get('https://httpbin.org/headers')
Par défaut, la session gère également les cookies pour vous. Si vous voulez désactiver cela, voir cette question .