Journal de toutes les demandes de python-les demandes de module
Je suis à l'aide de python Les demandes. J'ai besoin de debug OAuth
activité, et pour que je le voudrais à enregistrer toutes les requêtes effectuées. J'ai pu obtenir cette information avec ngrep
, mais malheureusement, il n'est pas possible de filtrer les connexions https (qui sont nécessaires pour OAuth
)
Comment puis-je activer la journalisation de toutes les Url (+ paramètres) qui Requests
accède?
- La réponse de @yohann montre comment obtenir encore plus de sortie d'enregistrement, y compris les en-têtes que vous envoyez. Il faut l'accepté de répondre plutôt que de Martijn, qui ne montre pas les en-têtes que vous finissent par obtenir via wireshark et de la main-personnalisation d'une demande à la place.
Vous devez vous connecter pour publier un commentaire.
Le sous-jacent
urllib3
bibliothèque de journaux de toutes les nouvelles connexions et les Url avec lejournalisation
module, mais pasPOST
corps. PourGET
demandes ce devrait être suffisant:qui vous donne le plus de l'enregistrement détaillé de l'option; voir la la journalisation des HOWTO pour plus de détails sur la façon de configurer les niveaux d'enregistrement et de destinations.
Courte démo:
Les messages suivants sont enregistrés:
INFO
: De nouvelles connexions (HTTP ou HTTPS)INFO
: Perte de connexionINFO
: RedirigeWARN
: Pool de connexion complet (si cela arrive souvent, d'augmenter le pool de connexion de taille)WARN
: Nouvelle tentative de connexionDEBUG
: Les détails de la connexion: méthode, le chemin, la version de HTTP, code d'état, et longueur de la réponseaccess_token
dans le OAuth demande. Linkedin est de se plaindre non autorisée de la demande, et je veux vérifier si la bibliothèque que j'utilise (rauth
sur le dessus derequests
) envoie le jeton à la demande. Je m'attendais à voir que comme un paramètre de requête, mais peut-être qu'il est dans les en-têtes de requête? Comment puis-je forcer leurllib3
pour afficher les en-têtes de trop? Et le corps de la requête? Juste pour faire simple: comment puis-je voir le COMPLET demande?requests
connecter les en-têtes (je m'attends à le voirAuthorization
les en-têtes d'authentification OAuth demandes).httplib
. Je ne souhaite que bibliothèque utiliséelogging
; la sortie de débogage est écrit directement sur la sortie standard plutôt que de les laisser vous rediriger vers un journal de la destination de votre choix.Vous devez activer le débogage à
httplib
niveau (requests
→urllib3
→httplib
).Voici quelques fonctions à la fois à bascule (
..._on()
et..._off()
) ou temporairement sur:Démo d'utilisation:
Vous verrez la DEMANDE, y compris les en-TÊTES et les DONNÉES, et de la RÉPONSE avec les en-TÊTES de mais en l'absence de DONNÉES. La seule chose qui manque sera la réponse.corps qui n'est pas connecté.
Source
httplib.HTTPConnection.debuglevel = 1
pour obtenir les en-têtes - excellent! Mais je pense que j'obtiens les mêmes résultats en utilisant simplementlogging.basicConfig(level=logging.DEBUG)
en place de vos autres 5 lignes. Ai-je raté quelque chose? Je suppose que cela pourrait être un moyen de définir différents niveaux de journalisation pour la racine vs le urllib3, si vous le souhaitez.httplib.HTTPConnection.debuglevel = 2
permettra l'impression de POST corps.httplib.HTTPConnection.debuglevel = 1
est assez @Mandible79$ curl https://raw.githubusercontent.com/python/cpython/master/Lib/http/client.py |grep debuglevel
c'est toujoursdebuglevel > 0
GET / HTTP/1.1" 200 None header: Content-Encoding header: Cache-Control header: ...
Pour les personnes à l'aide de python 3+
Je suis à l'aide de python 3.4, les demandes des articles 2.19.1:
'urllib3' est l'enregistreur pour obtenir aujourd'hui (pas plus de demandes.les packages.urllib3'). Journalisation de base arrivera encore, sans réglage de http.client.HTTPConnection.debuglevel