1
2

【scrapy】Tor経由でクローリングを行う

Last updated at Posted at 2024-07-05

はじめに

onion service内のコンテンツに対してスクレイピングを行うためにTor経由でクロールを行った.

しかしscrapyではTorプロキシはサポートされていないため,今回はミドルウェアとしてPrivoxyを使用した.

また,クロール中にIPアドレスを変更したかったためscrapy-tor-proxy-rotationも使用した.

実行環境

Ubuntu 22.04 LTS

使用したツール

  • Scrapy (ver 2.11.2)
  • Tor (ver 0.4.6.10)
  • Privoxy (ver 3.0.33)
  • scrapy-tor-proxy-rotation (ver 0.0.4)

インストール

$ pip install scrapy
$ sudo apt-get install tor
$ sudo apt install privoxy
$ pip install scrapy-tor-proxy-rotation

Torの設定

一旦 Tor を停止させる

$ sudo service tor stop

そしたら /etc/tor/torrc を開き,以下の行を追加する

ControlPort 9051
CookieAuthentication 0

最後に Tor を起動させる

$ sudo service tor start

Privoxyの設定

一旦 Privoxy を停止させる

$ sudo service privoxy stop

そしたら /etc/privoxy/config を開き,以下の行を追加する

forward-socks5t / 127.0.0.1:9050

最後に Privoxy を起動させる

$ sudo service privoxy start

Scrapyの構築

クローラーを作成したいディレクトリ内で以下のスクリプトを実行する("プロジェクト名"の部分は任意の文字列を入力)

$ scrapy startproject "プロジェクト名"

そしたら "プロジェクト名"/"プロジェクト名"/settings.py を開き,以下の行を追加する

DOWNLOADER_MIDDLEWARES = {
    ...,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
    'tor_ip_rotator.middlewares.TorProxyMiddleware': 100
}
TOR_IPROTATOR_ENABLED = True
TOR_IPROTATOR_CHANGE_AFTER = 5 #IPアドレスを変更する頻度

後は通常通り scrapy を構築すればよい

参考

1
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
1
2