urllib python, comment regarder les messages?
Question
Comment puis-je regarder les messages qui sont renvoyés et sur les demandes de SHTTP urllib? Si elle était simple, http je voudrais juste regarder le trafic socket mais bien sûr, qui ne fonctionnera pas pour https. Yat-il un indicateur de débogage je peux définir qui va le faire?
import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("https://example.com/cgi-bin/query", params)
La solution
Non, il n'y a pas de drapeau de débogage de regarder cela.
Vous pouvez utiliser votre débogueur préféré. Il est l'option la plus facile. Il suffit d'ajouter un point d'arrêt dans la fonction urlopen et vous avez terminé.
Une autre option serait d'écrire votre propre fonction de téléchargement:
def graburl(url, **params):
print "LOG: Going to %s with %r" % (url, params)
params = urllib.urlencode(params)
return urllib.urlopen(url, params)
Et l'utiliser comme ceci:
f = graburl("https://example.com/cgi-bin/query", spam=1, eggs=2, bacon=0)
Autres conseils
Vous pouvez toujours faire un peu de mokeypatching
import httplib
# override the HTTPS request class
class DebugHTTPS(httplib.HTTPS):
real_putheader = httplib.HTTPS.putheader
def putheader(self, *args, **kwargs):
print 'putheader(%s,%s)' % (args, kwargs)
result = self.real_putheader(self, *args, **kwargs)
return result
httplib.HTTPS = DebugHTTPS
# set a new default urlopener
import urllib
class DebugOpener(urllib.FancyURLopener):
def open(self, *args, **kwargs):
result = urllib.FancyURLopener.open(self, *args, **kwargs)
print 'response:'
print result.headers
return result
urllib._urlopener = DebugOpener()
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("https://www.google.com/", params)
donne la sortie
putheader(('Content-Type', 'application/x-www-form-urlencoded'),{})
putheader(('Content-Length', '21'),{})
putheader(('Host', 'www.google.com'),{})
putheader(('User-Agent', 'Python-urllib/1.17'),{})
response:
Content-Type: text/html; charset=UTF-8
Content-Length: 1363
Date: Sun, 09 Aug 2009 12:49:59 GMT
Server: GFE/2.0
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow