320 votes

Envoi de "User-agent" à l'aide de la bibliothèque Requests en Python

Je veux envoyer une valeur pour "User-agent" lors de la demande d'une page web en utilisant Python Requests. Je ne suis pas sûr qu'il soit correct d'envoyer ceci comme une partie de l'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 ne montrent pas les en-têtes envoyés pendant la requête.

Est-il acceptable d'envoyer cette information dans l'en-tête ? Si non, comment puis-je l'envoyer ?

454voto

birryree Points 29165

El user-agent doit être spécifié comme un 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 demande qui comprend User-Agent .

Si vous utilisez les demandes v2.13 et plus récentes

La façon la plus simple de faire ce que vous voulez est de créer un dictionnaire et de spécifier vos en-têtes directement, comme ceci :

import requests

url = 'SOME URL'

headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': 'youremail@domain.com'  # This is another valid field
}

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

Si vous utilisez les demandes v2.12.x et plus anciennes

Les anciennes versions de requests a supprimé les en-têtes par défaut, il faut donc faire ce qui suit pour préserver les en-têtes par défaut et y 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)

92voto

user Points 1438

Il est plus pratique d'utiliser un session Ainsi, vous ne devez pas vous souvenir de définir les 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 souhaitez désactiver cette fonction, consultez la rubrique cette question .

-3voto

Ali Oraji Points 1

vous pouvez simplement le faire comme ci-dessous :

import requests

url = requests.post("URL", headers={"FUser":"your username","FPass":"your password","user-agent": "your custom text for the user agent "})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X