2009-08-09 6 views
2

Comment puis-je regarder les messages renvoyés et pour les requêtes urllib shttp? Si c'était simple http, je voudrais juste regarder le trafic de socket, mais bien sûr, cela ne fonctionnera pas pour https. Y a-t-il un drapeau de débogage que je peux définir qui le fera?python urllib, comment regarder les messages?

import urllib 
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0}) 
f = urllib.urlopen("https://example.com/cgi-bin/query", params) 

Répondre

1

Non, il n'y a pas d'indicateur de débogage à regarder.

Vous pouvez utiliser votre débogueur favori. C'est l'option la plus facile. Ajoutez simplement 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) 
2

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 
Questions connexes