urllib2 не использует прокси (Fiddler2), устанавливается с помощью ProxyHandler - PullRequest
2 голосов
/ 02 июля 2011

У меня Fiddler2 прослушивает 0.0.0.0:8888.

try:
    data = '' 
    proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8888'})  //also tried {'http': 'http://127.0.0.1:8888/'}
    opener = urllib2.build_opener(proxy)
    urllib2.install_opener(opener)
    req = urllib2.Request('http://www.google.com')
    response = urllib2.urlopen(req)
    the_page = response.read()
        print the_page
except Exception, detail:
    print "Err ", detail

Я не вижу GET или какой-либо запрос на Google в Fiddler (но я вижу другие запросы), есть ли способотладить это?Похоже, Python обходит Fiddler или игнорирует прокси.

Я также настроил WinHTTP для работы с Fiddler -

C:\Windows\system32>netsh winhttp set proxy 127.0.0.1:8888

Current WinHTTP proxy settings:

    Proxy Server(s) :  127.0.0.1:8888
    Bypass List     :  (none)

имеет ли значение, если запрос его на адрес SSL?(Fiddler поддерживает https)

Спасибо!

Ответы [ 4 ]

4 голосов
/ 23 июля 2011

Возможно, вы можете работать с открывателем напрямую, а не устанавливать его. включите прослушиватель прокси-сервера Fiddler на 8008 (я использую WebScarab, но они, вероятно, одинаковы), затем попробуйте этот код точно (также есть файлы cookie, которые вам не нужны, но давайте попробуем как есть и сузим его позже ):

cj = cookielib.MozillaCookieJar(cookie_filename)
if os.access(cookie_filename, os.F_OK):
    cj.load()
proxy_handler = urllib2.ProxyHandler({'https': 'localhost:8008'})
opener = urllib2.build_opener(
        proxy_handler,
        urllib2.HTTPCookieProcessor(cj)
    )
opener.addheaders = [
        ('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
                       'Windows NT 5.2; .NET CLR 1.1.4322)'))
    ]
auth = urllib.urlencode({'email':email,'pass':passw})
data = opener.open('https://login.facebook.com/login.php',data=auth)

так - что я делаю по-другому: прямое использование открывателя, изменение порта на 8008, добавление файлов cookie и использование WebScarab. дайте мне знать, какой из них помог вам ...

2 голосов
/ 02 декабря 2011

В Fiddler2 перейдите на страницу Инструменты -> Параметры Fiddler ... -> Соединения , удалите конечную точку с запятой из значения в IE должен обойти Fiddler для ... поле и перезапустите Fiddler2.

Это решение определенно работает для меня, когда я использую прокси-сервер urllib2, однако я до сих пор не понимаю, почему удаление завершающей точки с запятой может решить эту проблему.

2 голосов
/ 11 сентября 2011

proxy_bypass_registry в urllib.py неправильно обрабатывает значение реестра ProxyOverride: он обрабатывает пустое переопределение как *, то есть обходит прокси для всех хостов. Это поведение не соответствует другим программам (например, Chrome).

Существует несколько возможных решений:

  1. Установите urllib.proxy_bypass = lambda h: 0, чтобы отключить проверку обхода.
  2. Укажите параметры прокси в переменной среды http_proxy (proxy_bypass_registry в этом случае не вызывается).
  3. В Fiddler2 перейдите на страницу Инструменты-> Параметры Fiddler ...-> Подключения, удалите конечную точку с запятой из значения в поле «IE должен обходить Fiddler for ...» и перезапустите Fiddler2.
1 голос
/ 25 февраля 2012

Кстати, вам нужно использовать http://www.google.com/ вместо http://www.google.com, чтобы скрипач мог понять, что вы запрашиваете 'get /'

В противном случае скрипач не может понять URI. (вы можете получить ошибку 504).

...