2

urllib2プロキシを介して使用しようとしています。ただし、を使用して検証の詳細を渡すためのほぼすべてのバリエーションを試した後、urllib2永久にハングして何も返さないリクエストを受け取るか、を受け取り407 Errorsます。prox-pacに接続し、それに応じてリダイレクトするブラウザを使用して、Webに正常に接続できます。ただし、 prox-pacがリダイレクトするプロキシを使用しても、コマンドラインなどでcurlwgetもできないようです。urllib2を使用して、pac-fileからすべてのプロキシにプロキシを設定しようとしましたがurllib2、いずれも機能しません。

私の現在のスクリプトは次のようになります。

import urllib2 as url

proxy = url.ProxyHandler({'http': 'username:password@my.proxy:8080'})
auth = url.HTTPBasicAuthHandler()
opener = url.build_opener(proxy, auth, url.HTTPHandler)
url.install_opener(opener)
url.urlopen("http://www.google.com/")

これがスローHTTP Error 407: Proxy Authentication Requiredされ、私も試しました:

import urllib2 as url

handlePass = url.HTTPPasswordMgrWithDefaultRealm()
handlePass.add_password(None, "http://my.proxy:8080", "username", "password")
auth_handler = url.HTTPBasicAuthHandler(handlePass)
opener = url.build_opener(auth_handler)
url.install_opener(opener)
url.urlopen("http://www.google.com")

ハングアップするcurlか、wgetタイムアウトします。

問題を診断するには何をする必要がありますか?同じプロキシとクレデンシャルのように見えるものを使用して、同じコンピューターのコマンドラインからではなく、ブラウザーを介して接続できるのはどうしてですか?

それはルーターと関係があるのでしょうか?HTTPもしそうなら、ブラウザのリクエストとコマンドラインのリクエストをどのように区別できHTTPますか?

4

1 に答える 1

3

このような欲求不満が、私がリクエストを使用するように駆り立てた理由です。urllib2で大量の作業を行っている場合は、実際に確認する必要があります。たとえば、リクエストを使用してやりたいことを行うには、次のように記述します。

import requests
from requests.auth import HTTPProxyAuth

proxy = {'http': 'http://my.proxy:8080'}
auth = HTTPProxyAuth('username', 'password')
r = requests.get('http://wwww.google.com/', proxies=proxy, auth=auth)
print r.text

または、Sessionオブジェクトでラップすると、すべてのリクエストでプロキシ情報が自動的に使用されます(さらに、Cookieが自動的に保存および処理されます)。

s = requests.Session(proxies=proxy, auth=auth)
r = s.get('http://www.google.com/')
print r.text
于 2013-02-18T07:08:28.107 に答える