ijsのガラクタ倉庫

ijs01140の作業メモ等

お行儀の悪い某ウェブアーカイブサービスから身を守るために私が検討していること

はじめに

ウェブアーカイブサービスは、webの公開情報をクロールし記録するサービスである。この記事では、お行儀の悪い某ウェブアーカイブサービスの挙動を紹介し、その記録から逃れる方法について書こうと思う。

ウェブアーカイブサービスの挙動

ウェブアーカイブサービスは、ユーザーの操作または自動収集でデータを取得する。大抵の場合、取得したデータは保存され公開される。また、この種のサービスは性質上、動的に変化するコンテンツの保存には向かない。

比較的お行儀のよいサービスの挙動

お行儀のよいウェブアーカイブサービスは、robots.txtの記述に従ってくれるので記録の拒否が可能である。また、クローラ専用UserAgentを使用しているため、クローラのアクセスを拒否するにはそのUserAgentをブロックすればよい。
また、不本意に記録されてしまった場合でも、削除リクエストを出せば記録を削除してくれるのでけっこう良心的である。

お行儀の悪いサービスの挙動

対して、お行儀の悪い某ウェブアーカイブサービスの挙動は邪悪そのものである。まず、クローラのUserAgent偽装を行い、通常のブラウザからのアクセスに装う。当然、robots.txtの記述は無視される。また、接続がブロックされても複数IPアドレスで試行し、それでも失敗する場合は最終的にTor経由でのアクセスを試みる。これにより、IPアドレスベースでのブロックを難しくしている。
また、削除リクエストを基本的に受け付けない。削除してくれるのは無意味な空白のページなど、ほぼサービス提供の上で都合の悪い記録のみに限られる。

では、お行儀の悪い某ウェブアーカイブサービスから身を守るためには?

先に書いたとおり、UserAgentベースでのブロックは不可能である。そのため、けっこう回りくどい方法で自己防衛に努めるしかない。ここでは、ブロック方法として有用そうなものを2例挙げる。

IPアドレスベースのブロック(本命)

例のウェブアーカイブサービスは、IPアドレス複数で試行するとはいえ、保有可能なIPアドレスは有限である。そのため、内容のない虚無なウェブサイトを用意し、selenium等を用いて自動でそのウェブサイトの記録を試行させ続けることによって、そのサービスが用いるIPアドレスをすべて割ることが可能だと私は考えている。
あとは手に入れたIPアドレスからのアクセスを弾き、Torに関しても問答無用でブロックすれば完璧・・・のはず。

fingerprintを用いてのブロック

一般のブラウザとウェブアーカイブサービスのクローラを区別できるかもしれない方法として、fingerprintも挙げられる。fingerprintは閲覧環境ごとの挙動の違いを利用して、アクセス元の環境を割り出す技術である。これを使えばUserAgent偽装を見破れる・・・かもしれないが私は使ったことがないので、こういう方法があるよとの紹介に留めておく。
また、fingerprintはその性質上、閲覧者のプライバシーを侵害する恐れがあるので、運用には細心の注意が必要になる。