Получить номер исходящего порта от urllib2 - PullRequest
1 голос
/ 12 января 2012

Я использую Python 2.6.x и urllib2 для некоторой очистки веб-страниц, но мне нужна действительно низкоуровневая информация о сокете (на самом деле просто номер порта локального сокета) для каждого HTTP-запроса.Кто-нибудь знает, как это получить?

Спасибо

РЕДАКТИРОВАТЬ:

Хорошо, я все еще пытаюсь сделать это правильно, поэтому я сделалто, что я думал, должно работать, но я не получаю вывод, когда пытаюсь использовать новые вещи.Что я тут не так делаю?

from urllib2 import *

class AbstractHTTPHandler(AbstractHTTPHandler):

    def do_open(self, http_class, req):
        """
          ...copy docstring...
        """
        print "woot!"
        ...copy code from urllib2.AbstractHTTPHandler.do_open...

1 Ответ

3 голосов
/ 12 января 2012

urllib2 может работать с различными схемами URL, которые могут даже не иметь понятия сокета. Вместо этого используйте http.client s недокументированное sock свойство:

try:
    from http.client import HTTPConnection
except ImportError: # Python<3
    from httplib import HTTPConnection

h = HTTPConnection('example.net', 80)
h.request('GET', '/')
print('Local port: ' + str(h.sock.getsockname()[1]))
...