大企業のようにWebスクレイピングをしたいなら (2021)
(incolumitas.com)Here is a summary of the key points from the article in Korean, formatted as a markdown bullet list:
大規模スクレイピングインフラを構築する
- AWS LambdaでHeadless Chromeを実行し、Google SERPを週あたり数百万件スクレイピングする
- Lambda関数を3回呼び出すと新しいpublic IPを取得できる
- 1000個のLambda関数を同時に呼び出すと約250個のpublic IPを使用できる
- 16リージョンを使えば約4000個のpublic IPアドレスを使用可能
- ただしこの方法はGoogle、Bing、Amazonのようなサイトでのみ動作する。DataDome、Akamai、Impervaなどのアンチボットソリューションを使うサイトでは動作しない
- アンチボットソリューションは、ブラウザフィンガープリンティング、嘘検知、人間と異なる挙動の検出など、さまざまな技術を使う
- ボット検知を避けにくい理由は、ほとんどがDockerやKubernetesでクラウド上で動かしているため
検知されにくく拡張可能なスクレイピングインフラの提案
- 5つのメーカーから500台の安価なAndroid端末を購入
- 安価なデータプランを利用し、DeviceFarmer/stfで端末を制御
- ロンドン、パリ、ボストン、フランクフルト、LAなど5つの主要都市にそれぞれ100台ずつ配置
- 軽量なAndroid Goをインストールし、5分ごとに機内モードをオフ・オンしてIPアドレスを変更
- 4G/5G/LTEのモバイルIPはブロックできない。多くのユーザーが共有しているため、InstagramでもLAの20万人をブロックできない
- 端末の向きや動きなどのイベントをカーネルレベルで操作する必要がある
改善案: Androidエミュレーション
- Android-x86 on VirtualBox、Bluestacks、Android Studioなどのエミュレーターを使用
- ただしエミュレーション検知技術は多数ある(ブラウザベースのred pill、adbポートスキャン、広告ID検知、ソーシャルログイン検知など)
- 4Gドングルをサーバーに接続し、Androidエミュレーターで直接使用
- 5つの主要都市に、それぞれ50個のドングルを接続した強力なスクレイピングサーバーを1台ずつ配置
- 各サーバーで50〜100個のAndroidエミュレーターを実行
- 単純なコマンド制御サーバーで5つのスクレイピングステーションを調整
GN⁺の意見
- 実機を使う方法は管理コストが高く、スケーラビリティにも限界があるように見える。エミュレーターの利用が現実的な代替案になりそう
- ただしエミュレーター検知技術も進化し続けているため、単にエミュレーターを使うだけで安全とは言えない。継続的なアップデートと改善が必要になるだろう
- 4G/5GモバイルIPを使うのは良いアイデアだが、通信事業者が特定端末をブロックしたり、料金プランを調整したりする可能性も排除できない
- データセンターIPの利用を避けることに加えて、人間に近い行動パターンを作ることがボット検知回避に役立ちそう。自動化による大規模収集ではなく、限定されたConcurrencyでゆっくり収集する方式も検討に値する
- MultiloginやGoLoginのような商用アンチディテクションブラウザーの活用も検討に値する。ただしライセンス費用の問題がある
まだコメントはありません。