
Sora Fujimoto
AI Solutions Architect
ウェブスクレイピングを行う際に適切でないユーザーエージェントを使用すると、即座にブロックされる可能性があります。ウェブサイトはしばしば、ユーザーエージェントを使用して、リアルユーザーとボットを区別しています。検出を避けるには、ウェブスクレイピングプロジェクトで適切に構成され、頻繁に更新されるユーザーエージェントを使用することが不可欠です。
このガイドでは、以下について説明します。
始めましょう!🚀
ユーザーエージェント(UA)とは、HTTPリクエストヘッダーで送信される文字列であり、ブラウザ、オペレーティングシステム、その他の詳細を識別します。Webサーバーはこの情報を使用して、ユーザーのデバイスに適切なコンテンツをレンダリングします。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 – ブラウザファミリー(Windows NT 10.0; Win64; x64) – オペレーティングシステムの詳細AppleWebKit/537.36 (KHTML, like Gecko) – レンダリングエンジンChrome/123.0.0.0 – ブラウザバージョンSafari/537.36 – 互換性フレームワークユーザーエージェントを変更することで、ウェブスクレイパーを実際のブラウザのように見せかけ、検出のリスクを軽減できます。
ほとんどのウェブサイトは、ボットトラフィックをフィルタリングするためにユーザーエージェントを分析します。スクレイパーが無効または古いユーザーエージェントを送信した場合、すぐにブロックされる可能性があります。
適切なユーザーエージェントを使用することで、以下を行うことができます。
ただし、同じユーザーエージェントを繰り返し使用すると、アンチボットシステムがトリガーされる可能性があります。そのため、ユーザーエージェントのローテーションが不可欠です。
以下は、ウェブスクレイピングに効果的なユーザーエージェントの厳選されたリストです。
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 14.4; rv:124.0) Gecko/20100101 Firefox/124.0
Mozilla/5.0 (X11; Linux i686; rv:124.0) Gecko/20100101 Firefox/124.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.2420.81
💡 ヒント: 自分のユーザーエージェントを確認するには、**WhatIsMyUserAgent**にアクセスしてください。
多くのウェブサイトでは、欠落しているか不正確なユーザーエージェントヘッダーを持つリクエストをブロックするボット検出メカニズムを実装しています。このセクションでは、ユーザーエージェントを効率的に設定およびローテーションするさまざまな方法について説明します。
requestsライブラリの使用ユーザーエージェントを定義する最も簡単な方法は、人気のrequestsライブラリを使用してリクエストのヘッダーを変更することです。
例:静的ユーザーエージェントの設定
import requests
# カスタムUser-Agentを含むヘッダーを定義
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
# カスタムUser-Agentを使用してリクエストを送信
response = requests.get("https://httpbin.org/headers", headers=headers)
# レスポンスヘッダーを出力
print(response.text)
出力:
{
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
}
これは、サーバーがユーザーエージェント文字列を正しく受信し、認識していることを確認します。
単一のユーザーエージェントを繰り返し使用すると、ブロックされる可能性があります。これを回避するには、事前に定義されたリストを使用してユーザーエージェントをローテーションします。
例:randomを使用したユーザーエージェントのローテーション
import requests
import random
# さまざまなユーザーエージェントのリスト
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"
]
# ランダムなユーザーエージェントを選択
headers = {"User-Agent": random.choice(user_agents)}
# ランダムに選択されたユーザーエージェントを使用してリクエストを送信
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.text)
ユーザーエージェントをローテーションすることで、スクレイパーはより人間らしく見え、検出される可能性が低くなります。
fake_useragentの使用静的なリストを維持する代わりに、fake_useragentライブラリを使用してユーザーエージェントを動的に生成できます。
インストール:
pip install fake-useragent
例:ランダムなユーザーエージェントの生成
from fake_useragent import UserAgent
import requests
# UserAgentオブジェクトの作成
ua = UserAgent()
# ランダムなユーザーエージェントの生成
headers = {"User-Agent": ua.random}
# 動的に生成されたユーザーエージェントを使用してリクエストを送信
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.text)
この方法は、ユーザーエージェントのバリエーションを広く提供しながら、最新の状態に保ちます。
Seleniumでのカスタムユーザーエージェントの設定Seleniumを使用してウェブスクレイピングを行う場合、ユーザーエージェントを設定するには、ブラウザオプションを変更する必要があります。
例:Chromeでのユーザーエージェントの設定
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Chromeオプションの設定
chrome_options = Options()
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
# カスタムユーザーエージェントでブラウザを起動
driver = webdriver.Chrome(options=chrome_options)
# ユーザーエージェントを確認するためにテストページを開く
driver.get("https://httpbin.org/headers")
# ページコンテンツを抽出して出力
print(driver.page_source)
driver.quit()
Seleniumなどのブラウザ自動化ツールを使用することで、リアルユーザーの行動をシミュレートし、高度なアンチボット対策を回避できます。
ユーザーエージェントが正しく設定されていることを確認するには、次の方法を使用します。
https://httpbin.org/headersからのレスポンスヘッダーを確認する例:ループでのユーザーエージェントのロギング
import requests
import random
import time
# ユーザーエージェントリスト
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0"
]
# リクエストをループ処理
for i in range(5):
user_agent = random.choice(user_agents)
headers = {"User-Agent": user_agent}
response = requests.get("https://httpbin.org/headers", headers=headers)
print(f"Request {i+1} - User-Agent: {user_agent}")
time.sleep(2) # レート制限を回避するための遅延を追加
このスクリプトは、複数のリクエストにわたってさまざまなユーザーエージェントをログに記録し、ローテーション戦略のデバッグに役立ちます。
単一の静的なユーザーエージェントを使用する代わりに、検出を回避するためにユーザーエージェントを動的にローテーションする方が優れています。Pythonでユーザーエージェントをローテーションする方法を以下に示します。
import requests
import random
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
]
headers = {"User-Agent": random.choice(user_agents)}
response = requests.get("https://httpbin.org/headers", headers=headers)
print(response.text)
このスクリプトは、リストからランダムにユーザーエージェントを選択します。これにより、スクレイパーの検出が困難になります。
最高のユーザーエージェントを使用しても、ウェブスクレイピングには検出されないための追加の手法が必要です。
ユーザーエージェントとプロキシのローテーション、そしてこれらのヒントをすべて使用しても、ウェブサイトはフィンガープリンティング、JavaScriptチャレンジ、CAPTCHA検証などの高度な検出技術を実装している可能性があります。これがCapSolverの出番です。
CapSolverは、Captchaチャレンジの解決を専門としており、途切れることのないウェブスクレイピングを保証します。CapSolverを統合することで、CAPTCHAを自動的に解決し、スクレイパーをスムーズに実行し続けることができます。
最高のCAPTCHAソリューションのためのあなたのボーナスコードを請求してください - CapSolver:CAPTCHA。それを引き換えると、各チャージ後に追加で5%のボーナスが得られます。無制限
適切なユーザーエージェントを使用することは、ウェブスクレイピングにおける重要なステップです。このガイドでは、以下について説明しました。
✅ ユーザーエージェントとは何か、そしてどのように機能するか
✅ スクラピングに効果的なユーザーエージェントのリスト
✅ Pythonでユーザーエージェントを設定およびローテーションする方法
✅ 検出されないための追加のベストプラクティス
ユーザーエージェントのローテーションとその他の検出回避技術を組み合わせることで、ブロックされることなくデータを正常にスクレイピングできます。
1. ウェブスクレイピングにおけるユーザーエージェントとは?
ユーザーエージェントは、ブラウザまたはクライアントソフトウェアをWebサーバーに識別する文字列です。ウェブスクレイピングでは、リアルユーザーのアクティビティを模倣し、検出を回避するために使用されます。
2. 個人使用のためのウェブスクレイピングは違法ですか?
ウェブスクレイピングは一般的に個人使用に関しては合法ですが、ウェブサイトの利用規約を尊重し、機密データまたは著作権で保護されたデータのスクレイピングを避ける必要があります。
3. ウェブスクレイピングにおけるユーザーエージェントのローテーションの目的は何ですか?
ユーザーエージェントのローテーションは、異なるブラウザまたはデバイスからのリクエストのように見せることで、検出とブロックを回避するのに役立ちます。
4. ウェブスクレイピング中にブロックされるのを防ぐにはどうすればよいですか?
ブロックを回避するには、IPローテーション、CAPTCHA解決、リクエスト間の遅延を使用し、サイトのrobots.txtに準拠してください。
5. ウェブスクレイピングはウェブサイトのパフォーマンスに影響を与えますか?
はい、頻繁にスクレイピングすると、ウェブサイトのサーバーに過負荷がかかる可能性があります。リクエストを制限して、責任あるスクレイピングを行うことが重要です。
Cloudflareエラー1020 アクセスが拒否されましたとは何か、Webアプリケーションファイアウォールとボット検出の仕組み、そして開発者が正当な自動化ワークフローで誤検出を減らす方法を学びましょう。

CapSolver n8nテンプレートを使用して、AWS WAFで保護された製品ページをモニタリングし、チャレンジを解決し、価格を抽出し、変化を比較し、自動でアラートをトリガーする方法を学びましょう。

SEOにおけるAIエージェントがキーワードリサーチ、競合分析、データ収集を自動化する方法を学びましょう — そして、CapSolverを使ってあなたのパイプラインでCAPTCHAのチャレンジを処理する方法を学びましょう。
