Playwright × Anti-Detection でブラウザ自動化【プロンプト全公開】
はじめに:ある日、全てのスクレイピングが止まった
……マジか。
2024年11月のある朝、僕は自分のPCの前で絶句していた。
昨日まで完璧に動いていたスクレイピングスクリプトが、全部エラーを吐いている。何が起きたのか全くわからない。コードは一行も変えていない。なのに、全てのサイトで「Access Denied」「403 Forbidden」「Bot検出されました」のメッセージが並んでいる。
スマホ119の競合調査で使っていた価格チェックBot、NextCodeのアプリ開発で使っていた画像収集スクリプト、meishi.digitalのリード獲得用のLinkedInスクレイパー。全部死んだ。
これ、ヤバいやつだ。
僕は工業高校時代からプログラミングをやっているけど、「Webスクレイピング」は昔からグレーゾーンだった。技術的には可能だけど、サイト側からすれば「勝手にデータを持って行かれる」わけで、歓迎されない。でも、ビジネスをやっていると「競合の価格を毎日チェックしたい」「市場データを自動で集めたい」みたいなニーズはどうしても出てくる。
スマホ119を8店舗展開している今、競合の修理価格を手動でチェックするなんて無理だ。月3,000件の修理をこなしながら、毎日10店舗のWebサイトを開いて価格表をExcelに打ち込む?そんな時間あるわけない。
だから、自動化していた。Pythonで書いたスクレイピングスクリプト。毎朝6時に自動実行されて、競合8社の価格データをスプレッドシートに入れてくれる。このおかげで、僕は「県内最安値」を維持できていた。
でも、それが突然止まった。
原因を調べると、どうやら各サイトが「Bot検出システム」を導入したらしい。Cloudflare、DataDome、PerimeterX……聞いたこともない名前のサービスが、僕のスクリプトを「Bot」と認識してブロックしている。
「ユーザーエージェントを変えれば突破できるんじゃないか?」
そう思って試した。でも、ダメ。ヘッダーを弄っても、Cookieを削除しても、IPを変えても、全部検出される。
……これ、どうやって突破するんだ?
そこから僕の、「Anti-Detection」の戦いが始まった。
第1章:Bot検出の仕組みを理解する
まず、敵を知らないと勝てない。
僕は3日間かけて、「Bot検出システム」がどうやって動いているのかを調べた。スマホ119で培った「修理するにはまず構造を知れ」の精神だ。iPhone の画面を直すにも、内部構造を理解していないと失敗する。同じことだ。
Bot検出の3つの手法
Bot検出システムは、大きく分けて3つの方法で「これはBotだ」と判断している。
**1. ブラウザフィンガープリント**
これがヤバい。マジでヤバい。
たとえ話をします。
あなたが銀行強盗をするとして(やらないけど)、マスクをかぶって顔を隠しても、指紋は残る。歩き方、声のトーン、癖、全部が「あなた」を特定する手がかりになる。
ブラウザも同じ。ユーザーエージェントを偽装しても、Webサイト側は「あなたのブラウザ」を何百種類の特徴から識別している。
WebGLレンダラーの情報
- インストールされているフォントのリスト
- Canvas指紋(HTML5 Canvasで描画したピクセルデータ)
- Audio指紋(Web Audio APIの出力)
- ブラウザのプラグイン
- 画面解像度
- タイムゾーン
- 言語設定
- バッテリー情報
- ハードウェアコンカレンシー(CPUのコア数)
これ全部を組み合わせると、99.9%の精度であなたのブラウザを一意に識別できる。
僕が使っていたPuppeteerは、これらの情報が「ヘッドレスブラウザ特有の値」になっていた。つまり、サイト側から見たら「こいつ明らかにBotだよね」とバレバレだったわけだ。
**2. 行動パターン解析**
人間は不規則に動く。マウスの軌道は曲線を描くし、クリックするまでに0.3秒くらい迷う。スクロールも「ヌルッ」と慣性がある。
でも、Botは違う。
マウスが直線移動する
- クリックが瞬時(0.001秒)
- スクロールが等速(人間は加減速する)
- ページ読み込みから0.1秒で次のアクションを起こす
これだけで「Bot」と判定される。
僕のスクリプトは、ページを開いた瞬間に `document.querySelector()` で要素を取得していた。人間なら最低でも1秒は「読む時間」があるはずなのに、0.05秒で次のページに飛ぶ。そりゃバレるよね。
**3. IPレピュテーション**
「このIPアドレス、怪しくない?」というデータベースがある。AWSのIPアドレスとか、VPNのIPアドレスとか、短時間に大量アクセスしているIPとか、全部記録されている。
僕はAWSのEC2でスクリプトを動かしていた。これがまずかった。AWSのIPは「データセンターIP」として知られているから、それだけで疑われる。
Bot検出の進化スピードがヤバい
2023年までは、ユーザーエージェントを変えるだけで突破できた。
2024年前半は、Headless Chromeの `--disable-blink-features=AutomationControlled` フラグを立てれば大丈夫だった。
でも、2024年後半から、Cloudflareが「Turnstile」というBot検出システムを導入して、もう何やってもダメになった。
ぶっちゃけ、「イタチごっこ」なんだけど、サイト側の防御が圧倒的に強くなっている。個人開発者が対抗するのは、もう無理ゲーに近い。
……そう思っていた。PlaywrightとAnti-Detectionに出会うまでは。
ここから先は
¥ 1,980
この記事が気に入ったらチップで応援してみませんか?


購入者のコメント