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

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

 

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

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

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

*