SOCKS 4/5プロキシをurllib2で使用してWebページをダウンロードするにはどうすればよいですか?
SocksiPy モジュールを使用できます。ファイル "socks.py"をPythonのlib/site-packagesディレクトリにコピーするだけで準備完了です。
Urllib2の前にsocksを使用する必要があります。 (それを試してみてください pip install PySocks
)
例えば:
import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://www.google.com').read()
Pycurl libとtsocksを試すこともできます。詳細については、 here をクリックしてください。
多数の異なるプロキシを同時に使用する必要がある場合に、パンの答えに代わるものを追加します。
その場合、httpプロキシを使用する場合のようにオープナーを作成する必要があります。 GitHubで利用可能なコードがあります https://Gist.github.com/869791
opener = urllib2.build_opener(SocksiPyHandler(socks.PROXY_TYPE_SOCKS4, 'localhost', 9999))
print opener.open('http://www.whatismyip.com/automation/n09230945.asp').read()
SOCKSはソケットレベルのプロキシであるため、urllib2
で使用されるソケットオブジェクトを置き換える必要があります。 this ソリューションをご覧ください。モンキーパッチが十分でない場合は、urllib2
標準ライブラリのコードをサブクラス化またはコピー変更することができます。