ウェブスクレイピングのための住宅プロキシの使い方
Senior Cybersecurity Analyst
TL;DR:
-
レジデンシャルプロキシは実際の家庭用IPアドレスを通じてリクエストをルーティングし、ウェブスクレイピングのトラフィックを本物のユーザーの活動に見せかけます。
-
これらは、高度なアンチボットシステム、CAPTCHA、およびデータセンタープロキシが簡単にブロックするIP禁止を回避するのに不可欠です。
-
このガイドは、基本的なセットアップから高度なローテーションパターンまで、スクレイピングプロジェクトにレジデンシャルプロキシをインストール、構成、実装する方法をカバーします。
-
Scrapelessは、90億以上のIPにアクセスできる195か国以上で、わずか$1.80/GB(高プランでは$1.44/GB)からプレミアムレジデンシャルプロキシを提供しています。
インストール
始める前に、環境を設定する必要があります。このチュートリアルでは、HTTPリクエストとプロキシの処理を簡単に行える人気のあるrequestsライブラリを使用してPythonを使用します。
まず、システムにPythonがインストールされていることを確認してください。 Python標準ライブラリドキュメントには組み込みのHTTPモジュールが含まれていますが、プロキシサポートにはサードパーティのrequestsライブラリがより実用的です。pipを使ってインストールします:
bash
# requestsライブラリをインストール
pip install requests
Node.jsを使用している場合は、axiosやnode-fetchを使用して同様の結果を得ることができます。プロキシ設定のコアコンセプトは、言語やHTTPクライアントによって異なりません。
設定
レジデンシャルプロキシを使用するには、プロキシサービスから提供されたプロキシ認証情報とエンドポイントの詳細が必要です。標準的なプロキシURL形式は以下のようになります:
http://username:password@proxy_address:port
Scrapelessを使用すると、ダッシュボードから簡単にプロキシ認証情報を生成できます。それを得たら、Pythonでプロキシ辞書を構成できます:
python
# 実際のScrapelessプロキシ認証情報に置き換えてください
PROXY_HOST = "proxy.scrapeless.com"
PROXY_PORT = "8000"
PROXY_USER = "your_username"
PROXY_PASS = "your_password"
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
proxies = {
"http": proxy_url,
"https": proxy_url
}
基本的な実装
設定が整ったので、レジデンシャルプロキシを使用して最初のリクエストを行うことができます。この設定をテストするために、リクエストを行ったIPアドレスを返すサービスにリクエストを送信します。例えば、httpbin.orgが使えます。
python
import requests
# 前のステップからのプロキシ設定
proxies = {
"http": "http://your_username:your_password@proxy.scrapeless.com:8000",
"https": "http://your_username:your_password@proxy.scrapeless.com:8000"
}
target_url = "https://httpbin.org/ip"
try:
# 設定したプロキシを使用してリクエストを送信
response = requests.get(target_url, proxies=proxies, timeout=10)
response.raise_for_status()
# サーバーから返されたIPアドレスを表示
print("成功!あなたのリクエストは以下を経由しました:")
print(response.json())
except requests.exceptions.RequestException as e:
print(f"エラーが発生しました: {e}")
このスクリプトを実行すると、返されるIPアドレスはあなたのローカルマシンではなく、レジデンシャルプロキシネットワークに属するはずです。
無料プランでAPIキーを取得: app.scrapeless.com
高度なパターン
セッション管理とIP保持
多くのスクレイピングシナリオでは、ログインフローをナビゲートしたり、ページネートされたリストをスクレイピングしたりする際に、複数のリクエストで同じIPアドレスを維持する必要があります。これを「スティッキーセッション」と呼びます。
ほとんどのレジデンシャルプロキシプロバイダー(Scrapelessを含む)は、ユーザー名にセッションIDを追加してIPローテーションを制御できるようにします。
python
import requests
import random
import string
# ランダムなセッションIDを生成
session_id = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
# ユーザー名にセッションIDを追加
PROXY_USER = f"your_username-session-{session_id}"
PROXY_PASS = "your_password"
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@proxy.scrapeless.com:8000"
proxies = {
"http": proxy_url,
"https": proxy_url
}
# リクエストセッションオブジェクトを使用して、クッキーやヘッダーを保持
session = requests.Session()
session.proxies.update(proxies)
# 同じセッションを使用して複数のリクエストを送信する場合、同じIPを使用します
response1 = session.get("https://httpbin.org/ip")
response2 = session.get("https://httpbin.org/ip")
print(response1.json())
print(response2.json()) # response1と同じIPが表示されるはずです
地理ターゲティング
価格データや地域の検索結果などのローカライズされたコンテンツをスクレイピングする際には、特定の国や都市のプロキシが必要です。通常、プロキシユーザー名にターゲットの位置を指定できます。
python
# アメリカのプロキシをターゲットにする
PROXY_USER = "your_username-country-us"
proxy_url = f"http://{PROXY_USER}:your_password@proxy.scrapeless.com:8000"
トラブルシューティング
住宅プロキシを使用する際に、一般的な問題に直面することがあります。
-
認証エラー (407 プロキシ認証が必要): ユーザー名とパスワードを再確認してください。アカウントに十分な残高またはアクティブな帯域幅があることを確認してください。
-
接続タイムアウト: 住宅プロキシは実際のデバイスを通じてトラフィックをルーティングするため、時には接続が遅くなったりオフラインになったりすることがあります。リクエストのタイムアウト設定を増やしてください(例: Python
requestsでのtimeout=30)。 -
ブロックされたリクエスト (403 禁止または CAPTCHA): 住宅プロキシを使用していても、攻撃的なスクレイピングはブロックを引き起こす可能性があります。頻繁にIPを回転させ、現実的なユーザーエージェントを使用し、リクエスト間に遅延を追加していることを確認してください。
標準プロキシの限界
住宅プロキシはネットワーク層での身份を隠すのに効果的ですが、現代のウェブサイトはIPアドレスを超えたクライアント側の保護を導入しています。
ターゲットサイトが高度なJavaScriptチャレンジやブラウザフィンガープリンティングを使用している場合、またはクライアントサイドのコンテンツ(ReactやVueアプリケーションなど)をレンダリングする必要がある場合、Pythonの requests コールを住宅プロキシ経由でルーティングするだけでは不十分です。そのサイトは、リクエストが実際のブラウザから来ていないことを検出します。
ここで、Scrapeless Scraping Browser が必要になります。プロキシ、ヘッドレスブラウザ、フィンガープリンティング回避を個別に管理するのではなく、組み込みの住宅プロキシ回転を含むアンチ検出クラウドブラウザに全体の実行をオフロードできます。
python
from scrapeless import ScrapelessClient
client = ScrapelessClient(api_key="your_api_token_here")
# 米国の住宅プロキシでブラウザセッションを作成
session = client.browser.create(
proxy_country="US"
)
# ブラウザがJSレンダリング、フィンガープリンティング、プロキシ回転を処理します
print(f"セッション作成: {session.task_id}")
print(f"WebSocketエンドポイント: {session.browser_ws_endpoint}")
Scraping Browserは住宅プロキシをフルブラウザ環境と結合し、TLSフィンガープリンティング、クッキー管理、およびJavaScript実行を単一の管理されたサービスで処理します。
結論
住宅プロキシは、真剣なウェブスクレイピング操作のための重要な要件です。トラフィックを実際のユーザーIP経由でルーティングすることで、基本的なネットワークレベルのブロックを回避し、ローカライズされたデータに信頼性高くアクセスできます。単純なスクリプトを作成する場合でも、大規模なデータパイプラインを構築する場合でも、これらのプロキシを設定、回転、管理する方法を理解することが、リクエストの成功を左右します。Scrapelessは、195以上の国で90M以上のIPを使用した 住宅プロキシ を$1.80/GBから提供しています。詳細については完全な 価格 を確認してください。
AI搭載のデータパイプラインを構築する準備はできましたか?
コミュニティに参加して無料プランを取得し、パイプラインを構築している開発者とつながりましょう: Discord · Telegram。
無料のScraping Browserランタイムを受け取るために app.scrapeless.com にサインアップし、パイプラインが必要とするページに上記のパターンを適用してください。
よくある質問
住宅プロキシを使用したスクレイピングは合法ですか?
公開されているデータをスクレイピングすることは一般的に合法と見なされますが、法域によって異なります。ターゲットウェブサイトの利用規約を常に確認し、特定の使用例について不明な点がある場合は法的助言を求めてください。
ウェブスクレイピングにプロキシは必要ですか?
はい、ほとんどすべての本番用スクレイピングタスクで必要です。プロキシなしでは、ローカルIPアドレスはターゲットウェブサイトのセキュリティシステムによってすぐにレート制限されたり、恒久的に禁止されたりします。
WAFやアクセス拒否エラーにどう対処すればよいですか?
Webアプリケーションファイアウォール(WAF)に直面した場合、ターゲットの予想地域(例:米国のサイトには米国プロキシ)から高品質の住宅プロキシを使用していることを確認してください。また、特定のターゲットページに移動する前にサイトのホームページを読み込んでセッションをウォームアップしてください。
ウェブサイトのDOM構造が変更されたらどうすればよいですか?
DOMの回転は一般的なアンチスクレイピング手法です。ページ構造を定期的に再確認し、セレクタを厳密にする必要があります。data-* タグや内部JSONエンドポイントのような安定した属性に依存する方が、ハッシュ化されたCSSクラスをターゲットにするよりも効果的です。
同時リクエストは何件作成すべきですか?
レート制限やボット対策システムを引き起こさないように、並列処理は控えめにすることをお勧めします。良い目安は、並行実行につきホストごとに≤3ワーカーを維持することです。
AIエージェントなしでこれらのプロキシを使用できますか?
はい、提供されたプロキシの設定とコード例は、AIエージェントなしでエンドツーエンドで機能します。ただし、エージェントのワークフローに統合することは、耐障害性と適応性のあるデータパイプラインを構築するために推奨される方法です。
レジデンシャルプロキシとデータセンタープロキシの違いは何ですか?
データセンタープロキシはクラウドホスティングプロバイダーから提供されており、アンチボットシステムによって簡単に識別できます。レジデンシャルプロキシは、インターネットサービスプロバイダー(ISP)によって実際の住宅所有者に割り当てられたIPアドレスであり、検出されてブロックされるのがはるかに難しくなっています。詳細については、プロキシブラウザとはに関するガイドをご覧ください。
プロキシが技術的にどのように機能するかについてもっと学ぶにはどこに行けばいいですか?
基礎となるHTTPメカニズムについては、MDNプロキシドキュメントを読むか、関連するIETF RFCのHTTPルーティングを確認してください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



