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)
Était-ce utile?

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
scroll top