Inventusは、特定のドメインとそのサブドメインをクロールしてサブドメインを見つけるために設計されたスパイダーです。Scrapy スパイダーであり、簡単に修正・拡張してニーズに合わせることができます。
Inventusを実行するには、事前にScrapyをインストールする必要があります。まず、リポジトリをクローンしてそのディレクトリに入ります。
$ git clone https://github.com/nmalcolm/Inventus
$ cd Inventus
では、pipを使用して必要な依存関係をインストールします。
$ pip install -r requirements.txt
インストールが成功したと仮定すると、Inventusを使用する準備が整います。
Inventusの最も基本的な使い方は以下の通りです。
$ cd Inventus
$ scrapy crawl inventus -a domain=facebook.com
これにより、Scrapyに使用するスパイダー(この場合は「inventus」)を指定し、そのスパイダーにドメインを渡します。見つかったサブドメインはすべて STDOUT に出力されます。
もう1つのカスタムパラメータは subdomain_limit です。これは、終了するまでに発見するサブドメインの最大数を設定します。デフォルト値は10000ですが、厳密な制限ではありません。
$ scrapy crawl inventus -a domain=facebook.com -a subdomain_limit=100
データのエクスポートは複数の方法で行えます。最も簡単な方法は STDOUT をファイルにリダイレクトすることです。
$ scrapy crawl inventus -a domain=facebook.com > facebook.txt
Scrapyには、CSV、JSON、XMLなどのさまざまな形式でアイテムをエクスポートできる組み込み機能があります。現在はサブドメインのみがエクスポートされますが、将来変更される可能性があります。
$ scrapy crawl inventus -a domain=facebook.com -t csv -o Facebook.csv
Inventusの動作を設定できます。デフォルトでは、robots.txtを無視し、タイムアウトは30秒、クロールデータを24時間キャッシュし、クロール深度は5、ScrapyのAutoThrottle拡張機能を使用します。これらおよびその他の設定は、inventus_spider/settings.py ファイルを編集することで変更できます。Scrapyの設定についてはよく文書化されています。
上記のいずれについても、お気軽に新しいIssueを開いてください。Inventusはわずか数時間で作られたもので、バグが含まれている可能性があります。また、Twitterで私に連絡することもできます。
MITライセンスのもとで公開されています。LICENSEファイルを参照してください。