web-dev-qa-db-ja.com

SOCKS 4/5プロキシをurllib2で使用するにはどうすればよいですか?

SOCKS 4/5プロキシをurllib2で使用してWebページをダウンロードするにはどうすればよいですか?

48
Mike

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 をクリックしてください。

66
panweizeng

多数の異なるプロキシを同時に使用する必要がある場合に、パンの答えに代わるものを追加します。

その場合、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()
21
sw.

SOCKSはソケットレベルのプロキシであるため、urllib2で使用されるソケットオブジェクトを置き換える必要があります。 this ソリューションをご覧ください。モンキーパッチが十分でない場合は、urllib2標準ライブラリのコードをサブクラス化またはコピー変更することができます。

4
fviktor