ソフトウェアがサーバーに自己紹介する仕組みを疑問に思ったことはありませんか? User-Agent
ヘッダーは、HTTP リクエストを行うクライアントに関する重要な詳細を明らかにするデジタル ID です。これから学習するように、スクレイピングにはユーザー エージェントを設定することが必須です。
User-Agent
HTTP リクエストを行う際にアプリケーションやライブラリによって自動的に設定されるです。このヘッダーには、アプリケーション、オペレーティング システム、ベンダー、およびリクエストを行っているソフトウェアのバージョンに関する情報を示す文字列が含まれています。
この文字列は、ユーザー エージェントまたはUAとも呼ばれます。しかし、なぜ「User-Agent」という名前なのでしょうか? 簡単です! IT 用語では、とは、ユーザーに代わって Web リクエストを行うプログラム、ライブラリ、またはツールのことです。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
この文字类列に戸惑っているのはあなただけではありません。なぜ Chrome ユーザーエージェントに「Mozilla」や「Safari」といった単語が含まれているのでしょうか? 🤯
User-Agent
ヘッダーは、ブラウザ名、オペレーティング システム、アーキテクチャ、場合によってはデバイスの詳細までが詰め込まれた詳細な書類のようなものです。
User-Agent
基本情報、ライブラリ名、場合によってはバージョンのみを提供します。
User-Agent
、これらのボット対策システムが綿密に精査する HTTP ヘッダーの 1 つです。結局のところ、そのヘッダー内の文字列は、よく知られているユーザー エージェント文字列を持つ本物のブラウザーからのリクエストかどうかをサーバーが理解するのに役立ちます。User User-Agent
の 1 つであることは不思議ではありません。🕵️♂️
ブロックを回避するための回避策は?ユーザー エージェントのスプーフィングを発見!
User-Agent
単なる HTTP ヘッダーであることを忘れないでください。したがって、任意の値を指定できます。Web スクレイピング用にユーザー エージェントを変更するのは、検出を回避して標準ブラウザーとして溶け込むのに役立つ古いトリックです。🥷
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0 Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15 Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 OPR/112.0.0.0 Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1 Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.98 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 OPR/112.0.0.0
もちろん、これは氷山の角落に過ぎず、リストはまだまだ続きます。スクレイピング用の包扩的かつ最近のユーザー エージェントのリストについては、 やなどのサイトをご覧ください。
では、HTTP クライアント ライブラリのデフォルトのUser-Agent
ブラウザーのものと交換するだけで、アンチボット システムを回避できるのではないかと考えているのでしょうか? まあ、そうではありません...
同じUser-Agent
と同じ IP からのリクエストでサーバーをあふれさせていると、基本的には「私を見てください、私はボットです!」という旗を振っていることになります。🤖
ゲームを強化して、ボット対策が効かないようにするには、さまざまなものを混ぜる必要があります。そこで、ユーザー エージェントのローテーションが役立ちます。静的な実際のUser-Agent
使用する代わりに、リクエストごとに切り替えます。
ユーザー エージェントのリストを収集する: さまざまなブラウザーやデバイスから UA 文字列のセットを収集します。
ランダムなユーザーエージェントを抽出する: リストからユーザーエージェント文字列をランダムに選択する簡単なロジックを記述します。
クライアントを構成する: HTTP クライアントのUser-Agent
ヘッダーにランダムに選択されたユーザー エージェント文字列を設定します。
User-Agent
ヘッダーは、HTTP リクエストを行うソフトウェアとシステムに関する詳細を明らかにします。これで、Web スクレイピングに最適なユーザー エージェントと、それをローテーションすることがなぜ重要であるかがわかりました。しかし、現実を直視しましょう。ユーザー エージェントのローテーションだけでは、高度なボット保護には十分ではありません。