6
2

More than 1 year has passed since last update.

【Tor】9050ポートを利用。IPアドレスを隠してPythonスクレイピング

Last updated at Posted at 2019-12-10

TL;DR

今までTorを使うときはブラウザだけで使っていたのですが、Pythonでスクレイピングする際にもTorが使えたらいいなーと思い立ち、やってみたら若干ハマった(かつ、忘れそうかもと思った)のでメモ

環境

  • macOS
  • Python 3.7.5
  • Homebrew 2.2.1

やろうとしたこと

9050ポートを通すことで、IPアドレスを変更してwebページにアクセスする、みたいなことをやりたい(参考:こちらの記事など)

※以下、Pythonを実行できる環境は自分で用意できるものと思って進めます。わからない場合、ターミナルでさっくり実行できるiPythonとかがオススメです。ググってね。

では行きます。

import requests
 
proxies = {
        'http':'socks5://127.0.0.1:9050',
        'https':'socks5://127.0.0.1:9050'
        }

↑まずは写経しましょう(参考:上で紹介した記事)

res = requests.get('http://httpbin.org/ip').json()
print(res)

↑普通にやると普通に自分のIPアドレスが返ってくる(ここまでは順調)

ハマったこと

res = requests.get('http://httpbin.org/ip',proxies=proxies).json()
print(res)

↑プロキシ刺すと、「ほーら、ipアドレスが変わってるでしょ!」って感じらしいんですが、

僕の場合はごっついエラーが出ます↓

ConnectionError: SOCKSHTTPSConnectionPool(host='ipinfo.io', port=443): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.contrib.socks.SOCKSHTTPSConnection object at
0x10d57fe10>: Failed to establish a new connection: [Errno 61] Connection refused'))

これ、ポートが開いてないよってことらしい。
ので、ポートを開放します。

解決!!

brew install tor

↑それは、そう。

brew services start tor

↑これが一番大事

同じことをやってみる。

res = requests.get('http://httpbin.org/ip',proxies=proxies).json()
print(res)
>> {'origin': '46.165.245.154, 46.165.245.154'}

おお!!でけた!!

ちなみにtorを止めたい時は

brew services stop tor

これですね。めでたしーー

結局なんだったんですかね

ここまでの流れ、常識なんですかね、

sudo service tor start

とかでtorを起動してください。とかでさらっと終わってること多いのですが、
僕のMacOSは、これをやっても、serviceコマンドが見つかりませんの一点張りでした。serviceコマンド、いつどういう環境で使えるものなのか、いまだにわかってない 頑張って理解したい。

今は、
ExcludeExitNodes等のtorrcファイルの設定など、ブラウザでやってるレベルのセットアップに挑戦しているので
ガンガンTor開拓の記事を書いていきたい。(書くとは言ってない)

参考記事

Torを使って個人情報をコントロールする方法
【悪用厳禁】Torを使ったスクレイピングでIPアドレスを分散させるテクニック – Python

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2