2011-07-02 3 views
1

私はFiddler2が0.0.0.0:8888でリッスンしています。私がGETまたはフィドラーGoogleへの要求が表示されないurllib2はProxyHandlerを使用してプロキシ(Fiddler2)を使用しません

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 

は、それをデバッグする方法があります(私は他の要求を見ることができますか)? PythonがFiddlerをバイパスしたり、プロキシを無視したりするようです。

私もバイオリン弾きで動作するようにWinHTTPを構成し - SSLアドレスへの要求、それを場合

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) 

んが問題ですか? (Fiddlerはhttpsをサポートしています)

ありがとう!

+0

ブラウザでプロキシ経由でインターネットに接続できることを確認してください。また、認証を設定してもらえますか?あなたのコードはどのような例外をスローしますか? –

+0

私のブラウザが送受信する多くのリクエストと回答があります。例外はありません。コードが動作しています。私はfieddlerのリクエストを見ることができません。 私はurllib2で何が起こっているのかを見ることができる方法はありますか?それが何をしているのかデバッグの一種。 – YSY

+0

コードがporxyを使用しているかどうかを確認するために、私はfieddlerに代理認証を要求するように変更しました。閲覧時にブラウザでユーザーパスを使用しなければならなかったので、Pythonコードを再度実行して、プロキシを使用しないでください。 – YSY

答えて

4

多分あなたはオープナーをインストールする代わりに直接操作することができます。 8008であなたのfiddlerプロキシリスナーをオンにします(私はWebScarabを使用していますが、おそらく同じです)。そして、このコードを正確に試してください(あなたには必要のないクッキーもありますが、 ):

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にポートを変更、クッキーを追加し、WebScarabのを使用しています。適切ProxyOverrideレジストリ値を処理しないurllib.pyで

2

proxy_bypass_registry ...私はこれらのいずれかがあなたのためにトリックをやっている知っている:それは*として、空のオーバーライドを扱う、すなわち、すべてのホストのプロキシをバイパスします。この動作は他のプログラム(Chromeなど)と一致しません。

  1. 設定urllib.proxy_bypass = lambda h: 0バイパスチェックを無効にする:

    は回避策がいくつかあります。

  2. 環境変数http_proxy(この場合はproxy_bypass_registryは呼び出されません)でプロキシ設定を指定してください。
  3. Fiddler2では、Tools-> Fiddler Options-> Connectionsページに移動し、「IEはFiddler for ...をバイパスする」フィールドの値から末尾のセミコロンを削除し、Fiddler2を再起動します。 Fiddler2をで
2

、ページへツールを行く - > [フィドラーオプション... - >接続IEの値から末尾のセミコロンを削除...フィールドのフィドラーをバイパスし、Fiddler2をを再起動してください。

私がurllib2プロキシを使用しているとき、このソリューションは間違いなく動作しますが、なぜ後続のセミコロンを削除すれば解決できるのかまだ分かりません。

1

はところで、uがそれ以外の場合はシオマネキがURIを把握することはできませんので、シオマネキは、あなたが「取得/」

を要求している把握できhttp://www.google.com/の代わりhttp://www.google.comを使用する必要があります。 (uは504の受信エラーを起こす可能性があります)。