ウェブスクレイピングのためのUser-Agentsのヒント

データスクレイピングタスクを実行するときに正しいユーザーエージェントを使用することは、ブロックされることを避けつつ、ターゲットデータを収集する上で重要です。このガイドを是非ご活用ください。
2 min read
Chrome browser and web scraping to data collection

この記事では次を習得できます。

ユーザーエージェントとは?

この用語は、エンドユーザーがウェブコンテンツと相互作用することを容易にするあらゆるソフトウェアを指します。ユーザーエージェント(UA)文字列は、クライアントコンピューターソフトウェアがリクエストを介して送信するテキストです。

ユーザーエージェント文字列は、宛先サーバーがどのブラウザ、デバイスのタイプ、およびオペレーティングシステムが使用されているかを識別するのに役立ちます。たとえば、この文字列は、コンピュータ上でChromeブラウザとWindows 10を使用しているサーバーに通知します。サーバーは、この情報を使用して、デバイス、OS、およびブラウザーのタイプに対する応答を調整することができます。

ほとんどのブラウザは、ユーザーエージェントヘッダーを次の形式で送信するが、ユーザーエージェントの選択方法にはあまり一貫性がありません。

syntax for choosing a user agent - User-Agent: Mozilla/5.0 (<system-information.) <platform> (<platform-details>) <extensions> white text on grey background

   User-Agent: Mozilla/5.0 () ()

すべてのブラウザは、プラットフォームやRV(リリースバージョン)などの独自のコメントコンポーネントを追加します。Mozillaには、クローラーに使用する文字列の例があります。

Crawler string example - white text on grey background - Mozilla/5.0 (compatible; Googlebot/2.1; +http:://www.google.com/bot.html

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Mozillaブラウザで使用できるさまざまな文字列については、「>開発者のサイト」で詳しく知ることができます。

以下に、Chromeの開発者サイトで、UA文字列フォーマットがさまざまなデバイスやブラウザを検索する方法の例を示します。

Android用Chrome

モバイル端末のUA:

white text on grey background - user agent to collect data as a android linux device or some other mobile device such as an apple iphone

Mozilla/5.0 (Linux; ; )AppleWebKit/ (KHTML, like Gecko) Chrome/Mobile Safari/

タブレットのUA:

White text on grey background - syntax for user-agent to appear as either android tablet or apple ipad

Mozilla/5.0 (Linux; ; )AppleWebKit/(KHTML, like Gecko) Chrome/Safari/

 

ウェブスクレイピングを自動操縦化しましょう!

なぜユーザーエージェントを使うべきなのか?

ウェブスクレイピングを行っている場合、ウェブサーバーが特定のユーザーエージェントをブロックすることがあります。これは主に、ボットの起点をボットとして認識し、一部のウェブサイトではボットのクローラーやスクレイパーを

許可していないためです。より洗練されたウェブサイトは、逆のやり方をとっています。つまり、クローリングジョブを実行するのに妥当と考えるユーザーエージェントのみを許可します。本当に洗練されたものは、ブラウザの動作が、主張するユーザーエージェントと実際に一致しているかどうかをチェックします。

正しい解決策は、リクエストにユーザーエージェントを含めないことだと思うかもしれません。ただし、この場合、ツールはデフォルトのUAを使用します。多くの場合、宛先ウェブサーバーはブラックリストを持っており、それをブロックします。

それでは、ユーザーエージェントが禁止されないようにするためにはどうすればいいでしょうか?

スクレイピング時にUAが禁止されることを避けるためのTips:

1:実際のユーザーエージェントを使用する

ユーザーエージェントがメジャーブラウザに属していない場合、一部のウェブサイトはそのリクエストをブロックします。多くのボットベースのウェブスクレイパーは、UAを定義するステップを飛ばし、誤った/デフォルトのUAが不足していることで検出され、禁止される結果となります。

この問題を回避するには、ウェブクローラーに広く使用されているUAを設定します。良く使われるユーザーエージェントの一覧はこちらから確認できます。ウェブサイトのcURLリクエストを実行すると、一般的な文字列のリストをコンパイルし、それらの文字列をローテーションできます。ブラウザの動作はユーザーエージェントから期待されるものと一致する可能性が高いため、ブラウザのユーザーエージェントを使用することをお勧めします。

2:ユーザーエージェントをローテーションさせる

ウェブスクレイピング中に多数のリクエストを行う場合は、それらをランダム化する必要があります。これにより、ウェブサーバーがUAを識別してブロックする可能性を最小限に抑えることができます。

リクエストをランダム化する方法は?

ウェブスクレイピング中に多数のリクエストを行う場合は、それらをランダム化する必要があります。これにより、ウェブサーバーがUAを識別してブロックする可能性を最小限に抑えることができます。

リクエストをランダム化する方法は?

一つの解決策は、プロキシのローテーションを使用してリクエストIPアドレスを変更することです。この方法では、1回ごとに異なるヘッダーセットを送信します。ウェブサーバー側では、リクエストが異なるコンピューターや異なるブラウザから送信されたように見えます。

プロからのアドバイス:ユーザーエージェントはヘッダーですが、ヘッダーは単なるユーザーエージェント以上のものです。ランダムヘッダーを送信するだけでなく、送信するユーザーエージェントが送信するヘッダーと一致していることを確認する必要があります。

botcheck.luminatio.ioを使用して、ユーザーエージェントに期待されているものと一致するヘッダーを送信しているかどうかを確認できます

ユーザーエージェントのローテーション方法

まず、ユーザーエージェント文字列のリストを収集する必要があります。本当のブラウザからの文字列を使用することを推奨します。この文字列は、こちらで確認できます。次のステップは、Python Listに文字列を追加することです。.最後に、すべてのリクエストからランダム文字列を選択することを定義します。

white text on grey background coding environment, python code on how to rotate user agents

このスタックオーバーフローディスカッションでは、Python 3とSelenium 4を使用してユーザーエージェントをローテーションさせる方法の例を示します。コード例は次のようになります。

UAヘッダーのローテーションに使用するプログラムまたはメソッドはどちらも、検出されブロックされないように、同じ手法に従う必要があります。

#1: 1:各UAに関連付けられたヘッダーの完全なセットをローテーションします
#2: 2:実際のブラウザでは、ヘッダーを順番に送信するのが一般的です

#3: 前に訪れたページを「リファラーヘッダー」として使用します

プロからのアドバイス:リファラーヘッダーを使用する場合は、IPアドレスとCookieが変更されないようにする必要があります。理想的には、ターゲットサーバー上にレコードが存在するように、前のページを実際に参照することが望ましいです。

3:プロキシを使用したユーザーエージェントのローテーション

プロキシネットワークのローテーションを使用して、リストを手動で定義し、IPを手動でローテーションさせなければならないという煩雑さを避けることができます。プロキシには、自動IPローテーションとUA文字列ローテーションを設定する機能があります。これは、さまざまなウェブブラウザからリクエストが生成されたように見えることを意味します。これにより、実際のウェブユーザーからのリクエストが発生したように見えるため、障害が大幅に減少し、成功率が上昇します。データアンロック技術を採用している非常に限られたプロキシのみが、ユーザーエージェントを適切に管理し、ローテーションさせる能力を持っていることに留意してください。

データアンロック技術へのアクセスを得る

スクレイピングのためのユーザーエージェントのリスト

ブラウザ/モバイル端末/デバイス/ボット/検索エンジン/開発者ツールベースのユーザーエージェントは、wget、cURLなどのツールを使用しながら、さまざまなブラウザをエミュレートするために利用することができ、多種多様です。これには以下が含まれます。

  • Lynx: Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23
  • Wget: Wget/1.15 (linux-gnu)
  • Curl: curl/7.35.0
  • HTC: Mozilla/5.0 (Linux; Android 7.0; HTC 10 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36
  • Google Nexus: Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7
  • Samsung Galaxy Note 4: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-N910F Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  • Samsung Galaxy Note 3: Mozilla/5.0 (Linux; Android 5.0; SAMSUNG SM-N900 Build/LRX21V) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36
  • Samsung Phone: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G570Y Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  • Bing’s Search Engine Bot: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
  • Google’s Search Engine Bot: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Apple iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
  • Apple iPad: Mozilla/5.0 (iPad; CPU OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H321 Safari/600.1.4
  • Microsoft Internet Explorer 11 / IE 11: Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
  • Microsoft Internet Explorer 10 / IE 10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; MDDCJS)
  • Microsoft Internet Explorer 9 / IE 9: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0;  Trident/5.0)
  • Microsoft Internet Explorer 8 / IE 8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
  • Microsoft Internet Explorer 7 / IE 7: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)
  • Microsoft Internet Explorer 6 / IE 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
  • Microsoft Edge: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
  • Mozilla Firefox: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0
  • Google Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

キーポイント

ほとんどのウェブサイトは、有効な、または認識可能なブラウザユーザーエージェントが欠落しているリクエストをブロックするため、UAを正しくローテーションさせる方法を学習することは、サイトによるブロックを回避する上で重要です。正しいUAを使用すると、ターゲットウェブサイトにリクエストが有効な起点から送信されたことを通知し、希望するターゲットサイトからデータを自由に収集できるようになります。

Bright Dataは、完全自動化データアンロックソリューションを開発しました。これは、サイト固有のブラウザユーザーエージェントを生成するための機械学習アルゴリズムを使用し、またボット検出システムを回避することで、チームの時間とリソースを節約します。

あなたは下記にもご興味がおありかもしれません

Web Scraping with Java Guide_large
各種ご利用方法

Javaを使用したウェブスクレイピングガイド

このチュートリアルでは、Gradleプロジェクトをセットアップし、HtmlUnitの依存関係をインストールする方法を学びます。その過程で、HtmlUnitについて学び、その高度な機能のいくつかを詳しく見ていきます。
3 min read
What is a data parser featured image
ウェブデータ

データ解析とは?定義、利点、および課題

この記事では、データ解析について知っておくべきことをすべて説明します。データ解析とは何か、なぜそれが重要なのか、どのようにアプローチするのが最善かを解説します。
1 min read
What is a web crawler featured image
ウェブデータ

ウェブクローラーとは?

ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。この記事では、以下の事項を説明します。 ウェブクローラーの定義 ウェブクローラーとは、インターネットをスキャンして、見つけたデータをダウンロードするソフトウェアロボットです。大半のウェブクローラーは、Google、Bing、Baidu、DuckDuckGoなどの検索エンジンによって運用されています。検索エンジンは、収集したデータに検索アルゴリズムを適用して、検索エンジンインデックスを作成します。このインデックスにより、検索エンジンはユーザーの検索クエリに基づいて、関連するリンクを提供できます。 過去の特定の時点のウェブサイトのスナップショットを提供するWay Back Machineのように、検索エンジンとは別の目的で使用されるウェブクローラーもあります。   ウェブクローラーの仕組み GoogleのGooglebotのようなウェブクローラーは、毎日、クローリングしたいウェブサイトのリストを作成して作業を開始します。これはクロールバジェットと呼ばれます。バジェットには、ページのインデックス作成に対する需要が反映されます。クロールバジェットに影響する2つの主な要因は、人気と陳腐化です。インターネット上で人気のあるURLは、インデックス内で最新の状態を保つために、より頻繁にクローリングされる傾向があります。また、ウェブクローラーはURLのインデックスが陳腐化するのを防ごうとします。 ウェブクローラーがサイトに接続すると、まずrobots.txtファイルをダウンロードして読み込みます。robots.txtファイルは、ロボットがウェブをクローリングし、コンテンツにアクセスしてインデックスを作成し、そのコンテンツをユーザーに提供する方法を規制するウェブ標準群であるロボット排除プロトコル(REP)の一部です。ウェブサイトの所有者は、サイト上でアクセスできるユーザーエージェントとアクセスできないユーザーエージェントを定義できます。また、robots.txtには、クローラーがウェブサイトに対して行うリクエストのペースを抑制するためのcrawl-delayディレクティブを定義することもできます。また、robots.txtには、サイトに関連するサイトマップも記載されているため、クローラーはすべてのページとその最終更新日時も確認できます。前回のクローラー訪問以降に変更がないページは、今回スキップされます。   ウェブクローラーは、クローリング対象のページに最終的に到達すると、そのページをブラウザーでレンダリングし、すべてのHTML、サードパーティーのコード、JavaScript、CSSを読み込みます。この情報は検索エンジンのデータベースに保存され、後でページのインデックス作成とランク付けに使用されます。また、ページ上のすべてのリンクもダウンロードします。検索エンジンのインデックスにまだ登録されていないリンクは、後でクロールするためのリストに追加されます。 robots.txtファイルに記載されているディレクティブへの準拠は任意です。ほとんどの主要な検索エンジンはrobots.txtディレクティブに従っていますが、そうでないものもあります。スパマーやボットネットなどの悪質業者は、robots.txtディレクティブを無視します。Internet Archiveのような合法的なウェブクローラーでさえ、robots.txtを無視しています。 ウェブクローラーの例 検索エンジンには複数の種類のウェブクローラーがあります。たとえば、Googleには17種類のボットがあります。 SEO対策にウェブクローラーが重要な理由 SEOの目標は、ユーザーが関連する検索語を検索したときに、自社のコンテンツが簡単に見つかるようにすることです。Googleは、コンテンツがクローリングおよびインデックス化されていない場合、コンテンツをどこにランク付けしたらよいかを知ることができません。 ウェブクローラーは、他の分野でも役立つことがあります。Eコマースサイトでは、競合他社のサイトをクローリングして、製品の品揃えや価格を分析することがよくあります。通常、この種のデータ収集は「ウェブクローリングではなくウェブスクレイピング」として知られています。ウェブスクレイピングは、特定のHTMLデータ要素に焦点を当てます。ウェブスクレイパーは非常に集中的であるのに対し、ウェブクローラーは広く網を張ってあらゆるコンテンツを収集します。ユーザーの側には、SERPデータのクローリングやスクレイピングを支援するSERP APIツールもあります。   ウェブクローラーが直面する課題 ウェブクローラーが直面する課題はいくつもあります。 課題 説明 robots.txtの制限 ウェブクローラがrobots.txtの制限に従う場合、特定のウェブページにアクセスできなかったり、任意の制限を超えるリクエストを送信できなかったりすることがあります。 IPの禁止 ウェブクローラーの中には、robots.txtの制限に従わないものもあるため、それらが他のさまざまなツールを実装してウェブクローリングを制限することがあります。ウェブサイトは、詐欺師が使用する無料データプロキシや特定のデータセンターのIPアドレスなど、悪意があることがわかっているIPアドレスを禁止することができます。 ジオロケーションの制限 一部のウェブサイトでは、ウェブサイトコンテンツにアクセスするために、特定の地域に居住していることを条件としています。たとえば、米国以外の地域からNetflix USAのコンテンツにアクセスしようとする場合です。地理的な制限の大半は、レジデンシャルプロキシネットワークを使用することで克服できます。   CAPTCHA 一部のウェブサイトでは、不審なソースからの大量のアクティビティを検出すると、リクエストの背後にいるのが本物の人間かどうかを確認するためにCAPTCHAを表示します。CAPTCHAはウェブクローラーの活動を阻害する可能性があります。多くのウェブスクレイピングソリューションは、この種のブロックを克服するためのツールや技術を備えています。これらのブロック解除ツールは、多くの場合、CAPTCHA解決ソリューションを利用します。   まとめ ウェブクローラーは、インターネットのインフラとして重要な部分を担っています。これにより、検索エンジンは検索インデックスを作成するために必要なデータを収集し、ユーザーのクエリに対して検索結果を提供できます。多くの企業は、調査を支援する役割としてのウェブクローラーに注目しています。実際には、多くの場合、Amazon、Adidas、Airbnbのリスティングのように、1つか2つのサイトに集中しています。このようなユースケースでは、Bright DataのウェブスクレイパーIDEのようなツールが、よりニーズに適しています。  
1 min read

More from Bright Data

Datasets Icon
Get immediately structured data
Access reliable public web data for any use case. The datasets can be downloaded or delivered in a variety of formats. Subscribe to get fresh records of your preferred dataset based on a pre-defined schedule.
Web scraper IDE Icon
Build reliable web scrapers. Fast.
Build scrapers in a cloud environment with code templates and functions that speed up the development. This solution is based on Bright Data’s Web Unlocker and proxy infrastructure making it easy to scale and never get blocked.
Web Unlocker Icon
Implement an automated unlocking solution
Boost the unblocking process with fingerprint management, CAPTCHA-solving, and IP rotation. Any scraper, written in any language, can integrate it via a regular proxy interface.

Ready to get started?