Windows XP、Python 2.5および2.6で、次のコードをテストしました。
import urllib2
proxy= urllib2.ProxyHandler({'http': '127.0.0.1:8080'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
urllib2.urlopen('http://www.google.com/')
上記のコードでは、httplib.pyの349行目からBadStatusLine例外が発生します。
私は127.0.0.1:8080で動作するプロキシを持っています(proxyswitchyで使用するようにブラウザを設定でき、オンの場合はオフのときにブロックされているサイトにアクセスできます[中国])。
ソックスプロキシに変更すると、
proxy= urllib2.ProxyHandler({'socks': '127.0.0.1:8080'})
その場合、プロキシはまったく使用されません。
Proxyの質問からurllib2を使用してコードを取得しましたが、ほぼ同じです。何が問題になっている可能性がありますか?
更新:urllib2はsocksプロキシをサポートしていません。
最終的にはcurlで動作するようになりました:
c = pycurl.Curl()
#stupid GFW
if settings.CHINA:
c.setopt(pycurl.PROXY, '127.0.0.1')
c.setopt(pycurl.PROXYPORT, 8087)
c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)