Pythonでtor経由でスクレイピングを行う
Pocket

前回、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"
}
Sponsored Links

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"
}

 

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

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*