webスクレイピングプログラムに対するアクセス禁止対策に関してです。
amazonやメルカリを始めとして、基本的にどこのサイトもサーバーの防御機能として短時間に連続でアクセスをしてくるIPアドレスをアクセス禁止にするという設定がされています。
そこでそれを避けるためにコードには必ず1秒ルールを入れておきます。
またさらにアク禁にされた場合のリスクヘッジとして仮想デスクトップをレンタルして使うことをオススメします。
それではそれぞれ具体的に見ていきましょう。
1秒ルールの設定
もし何も考えずにスクレイピングコードを書いてしまうと、forやwhileを使えば1秒間に数十~数百ページのスクレイピングができてしまいます。
しかし当然このように高頻度なアクセスをしてしまうと即アクセス禁止になってしまいます。
そこでアクセス毎の間隔を一定時間開けることでアクセス禁止を避けよう、というのがいわゆる「1秒ルール」です。
pythonでのコード例としては以下の通りです。
1 2 3 4 5 6 7 8 |
import time for i in url_list: (url_listのurlにアクセスするコードをここに書く) # 1秒休み time.sleep(1) |
ちなみに1秒ルールというのは「1秒以上間隔を開けてアクセス禁止にされた話は聞いたこと無いよね」というプログラマーたちの経験を元に設定されているので、確実にアクセス禁止にされないという事はありません。
ただ私もメルカリだけでも通算で10万ページ以上スクレイピングしていますが、1秒間隔の設定にしていてアクセス禁止にされたことはありません。
リスクヘッジとしての仮想デスクトップ
概要
1秒ルールを組み込んでいても設定を間違って連続アクセスをしてしまい、アク禁にされてしまうというのは度々あります(経験済み)。
例えばメルカリの場合は1度目のアク禁は1週間~2週間程度で解除されますが、2度3度とやってしまうとそのIPアドレスからは永久にアクセスできないようになってしまう可能性もあります。
これはアカウントではなくIPアドレスに対してなのでログインしているかどうかは関係ありません。
そうなってしまうと普通に家からメルカリを使おうとしても繋ぐこともできなくなります。
そこでリスクヘッジとして仮想デスクトップをレンタルして使うことをオススメしています。
仮想デスクトップのレンタルとは、仮想のPCとネット環境を借りて、インターネット経由でつないで使えるというものです。
要は遠隔で操作できるネット付きのパソコンをレンタルするという事です。
こうしておけば自宅や会社からアクセスすることなくメルカリをスクレイピングすることができるので、もしアク禁になってもまた違う仮想デスクトップを借りるだけでいつでもスクレイピングを再開することができます。
仮想デスクトップをレンタルする

いくつかの企業が仮想デスクトップのレンタルを行っているのでどこを使ってもいいと思いますが、管理人はお名前.comが提供しているデスクトップクラウドを利用しています。
外部ページ:お名前.com デスクトップクラウド
リンク先ではFX専用と書かれていますが、実際は専用ではなくMT4というFX用のツールが最初からインストールされているだけで、問題なくスクレイピングに使えます。
FX専用と書いた方がFXする人が選んでくれるからなのでしょうね。
ちなみにお名前.comにはデスクトップクラウドfor BizというMT4が入っていないコースもありますが、記事を書いている時点では同じ性能ならFX専用コースの方が安いので特に使うことは無いです。
メモリに関しては1.5ギガだとスクレイピング+他の処理を同時にすると厳しいこともあるので、2.5ギガのコースがオススメです。
まとめ
- 1秒ルールを必ず設定する
- アク禁されても大丈夫なように仮想デスクトップを借りる
