بيثون أورلس، كيفية مشاهدة الرسائل؟
سؤال
كيف يمكنني مشاهدة الرسائل التي يتم إرسالها مرة أخرى وعلى طلبات Urllib Shttp؟ إذا كانت http، فسوف أشاهد حركة مرور المقبس ولكن بالطبع لن يعمل من أجل HTTPS. هل هناك علم تصحيح يمكنني تعيين ذلك سيفعل هذا؟
import urllib
params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
f = urllib.urlopen("https://example.com/cgi-bin/query", params)
المحلول
لا، لا يوجد علم تصحيح لمشاهدة هذا.
يمكنك استخدام مصحح الأخطاء المفضل لديك. هذا هو الأسهل الخيار. فقط أضف نقطة توقف في وظيفة Urlopen وأنت انتهيت.
سيكون هناك خيار آخر هو كتابة وظيفة التنزيل الخاصة بك:
def graburl(url, **params):
print "LOG: Going to %s with %r" % (url, params)
params = urllib.urlencode(params)
return urllib.urlopen(url, params)
واستخدامها مثل هذا:
f = graburl("https://example.com/cgi-bin/query", spam=1, eggs=2, bacon=0)
نصائح أخرى
يمكنك دائما أن تفعل القليل من المسوك
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)
يعطي الناتج
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
لا تنتمي إلى StackOverflow