前回、torをUbuntu/CentOSへインストールし利用できるようにしたので、今回はPythonからtor経由でのアクセスを行うようにする。 色々なやり方はあるようなので、2つほど試してみる。

1. requesocksを使う場合

requestsのforkでsocksを使うことができるパッケージがあるので、これで対応するのが楽そうだ。 事前にpipでインストールをしておく。

sudo pip install -U requests[socks]

後は、以下のように使用してtor経由でアクセスをすると良い。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests

get = requests.get('http://httpbin.org/ip',
                    proxies=dict(http='socks5://127.0.0.1:9050',
                                 https='socks5://127.0.0.1:9050')).text
print(get)
blacknon@BS-PUB-DEVELOP:~$ cat tortest1.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests

get = requests.get('http://httpbin.org/ip',
                    proxies=dict(http='socks5://127.0.0.1:9050',
                                 https='socks5://127.0.0.1:9050')).text
print(get)
blacknon@BS-PUB-DEVELOP:~$
blacknon@BS-PUB-DEVELOP:~$ python ./tortest1.py
{
  "origin": "51.255.196.218"
}

blacknon@BS-PUB-DEVELOP:~$ sudo systemctl restart tor
blacknon@BS-PUB-DEVELOP:~$ python ./tortest1.py
{
  "origin": "109.163.234.8"
}

blacknon@BS-PUB-DEVELOP:~$ sudo systemctl restart tor
blacknon@BS-PUB-DEVELOP:~$ python ./tortest1.py
{
  "origin": "188.65.144.2"
}

2. Pysocksを使う場合

Pysocksを使う場合、以下のようにする。 (インストールがされていない場合は、事前にpipでインストールをする)

sudo pip insall pysocks
#!/usr/bin/python
# -*- coding: utf-8 -*-
import socks,socket
import urllib2

socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr='127.0.0.1', port=9050)
socket.socket = socks.socksocket

print(urllib2.urlopen('http://httpbin.org/ip').read())
blacknon@BS-PUB-DEVELOP:~$ cat tortest2.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import socks,socket
import urllib2

socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5, addr='127.0.0.1', port=9050)
socket.socket = socks.socksocket

print(urllib2.urlopen('http://httpbin.org/ip').read())
blacknon@BS-PUB-DEVELOP:~$ python tortest2.py
{
  "origin": "89.234.157.254"
}

blacknon@BS-PUB-DEVELOP:~$ sudo systemctl restart tor
blacknon@BS-PUB-DEVELOP:~$ python tortest2.py
{
  "origin": "51.15.53.134"
}

blacknon@BS-PUB-DEVELOP:~$ sudo systemctl restart tor
blacknon@BS-PUB-DEVELOP:~$ python tortest2.py
{
  "origin": "163.172.212.115"
}

とりあえずこんな感じだろうか。