無料プロキシとユーザーエージェントを理解する:基礎
無料プロキシは、モンマルトルの雲のように儚く、クライアントと広大なインターネットの架け橋として機能します。IPアドレスを隠蔽することで匿名性を確保したり、特定の制限を回避したりします。一方、ユーザーエージェントは、各HTTPリクエストに埋め込まれた微妙な署名であり、ブラウザ、デバイス、オペレーティングシステムの特性をサーバーにささやきます。まるで、訛りが育った地域を露呈するのと同じです。
これら二つの楽器を組み合わせるには、精密さが求められます。なぜなら、変装のハーモニーは繊細だからです。適切なオーケストレーションがあれば、デジタル監視装置に気づかれずにすり抜けることも可能です。
主な違いと使用例: 無料プロキシとユーザーエージェント
側面 | 無料プロキシ | ユーザーエージェント |
---|---|---|
目的 | IPをマスクし、ジオブロックを回避し、リクエストを分散する | さまざまなブラウザ/デバイスを模倣して検出を回避する |
実装 | ネットワーク層(IPルーティング) | アプリケーション層(HTTPヘッダー) |
検出リスク | 高(公開リスト、共有使用のため) | 中程度(指紋、まれな UA による) |
回転性 | 高(リクエスト/セッションごとにローテーション) | 高(リクエスト/セッションごとにローテーション) |
信頼できる無料プロキシの選択
信頼できる無料プロキシを探すことは、完璧なマドレーヌを探すことに似ています。つまり、希少で、つかの間で、ほろ苦いことが多いのです。
- 出典: 評判の良いアグリゲーターサイト 無料プロキシリスト, proxyscrape.com、 または スパイ.one 新しいプロキシ リストを提供します。
- 選考基準:
- 匿名性レベル: 「エリート」または「匿名」のプロキシを優先します。
- プロトコル: Web スクレイピングの場合は HTTP/HTTPS、より幅広いアプリケーションの場合は SOCKS5。
- レイテンシーと稼働時間: 定期的にテストしてください。プロキシは不安定であることが知られています。
サンプルプロキシリスト(CSV形式):
IPアドレス | ポート | プロトコル | 匿名 | 国 |
---|---|---|---|---|
51.158.68.68 | 8811 | ウェブ | エリート | フランス |
103.216.82.20 | 6667 | ウェブ | 匿名 | インド |
本物のユーザーエージェントのキュレーション
ユーザーエージェント文字列は、仕立ての良いスーツのように、状況に合致するものでなければなりません。使い古されたエージェントや時代遅れのエージェントは、自動化の弊害を招きます。
- 多様性: 次のようなソースから最近のユーザーエージェントを収集します。 WhatIsMyBrowser.com, ユーザーエージェントストリング.
- 回転: リクエストごとまたはセッションごとにユーザー エージェントを変更します。
- リアリズム: 可能な場合は、ユーザー エージェントをプロキシの地域に一致させます (例: フランス語のブラウザ ロケールを持つフランス語のプロキシ)。
サンプルユーザーエージェントリスト:
ブラウザ | ユーザーエージェント文字列の例 |
---|---|
Chrome(Windows) | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/123.0.0.0 Safari/537.36 |
Firefox(Mac) | Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) Gecko/20100101 Firefox/114.0 |
Safari(iOS) | Mozilla/5.0 (iPhone; CPU iPhone OS 16_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML、Gecko など) バージョン/16.0 Mobile/15E148 Safari/604.1 |
Pythonでプロキシとユーザーエージェントのローテーションを実装する
では、これらのスレッドを古典的なコードでまとめてみましょう。 リクエスト 図書館と ランダム 自発性のために。より壮大なオーケストラのために、 リクエスト-HTML または セレン 召喚される可能性があります。
ステップ1:リストを準備する
ランダムプロキシをインポートします。プロキシ = [ '51.158.68.68:8811', '103.216.82.20:6667' ] 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 13_4) Gecko/20100101 Firefox/114.0' ]
ステップ2: リクエストを作成する
インポートrequests def get_random_proxy(): proxy = random.choice(proxies) return { "http": f"http://{proxy}", "https": f"http://{proxy}" } def get_random_user_agent(): return random.choice(user_agents) url = "https://httpbin.org/get" for _ in range(5): proxy = get_random_proxy() user_agent = get_random_user_agent() headers = { "User-Agent": user_agent } try: response = request.get(url, headers=headers, proxies=proxy, timeout=10) print(response.json()) except Exception as e: print(f"リクエスト失敗: {e}")
ステップ3: 障害を適切に処理する
パリの夕焼けのように捉えどころのない無料プロキシは、予告なく消えてしまう可能性があります。障害を検出し、別のペアで再試行してください。
itertools から islice をインポートします。 def fetch_with_rotation(url, proxies, user_agents, max_attempts=10): attempts = 0 for _ in islice(range(max_attempts), max_attempts): proxy = get_random_proxy() user_agent = get_random_user_agent() headers = {"User-Agent": user_agent} try: response = requests.get(url, headers=headers, proxies=proxy, timeout=8) if response.status_code == 200: return response.json() except Exception: continue raise Exception("All proxy attempts failed.") # 使用例: result = fetch_with_rotation("https://httpbin.org/get", proxies, user_agents) print(result)
シームレスな統合のためのベストプラクティス
- プロキシとユーザーエージェントの調整: フランス語のプロキシの場合は、忠実度を高くするためにフランス語のロケール ユーザー エージェントを選択します。
- リクエストスロットリング: ランダムな遅延を挿入する(例:
時間.睡眠(ランダム.均一(2, 7))
)人間の行動を模倣します。 - ヘッダー拡張: 次のようなヘッダーを追加します
受け入れ言語
そしてリファラー
自動化と本物のブラウジングとの境界をさらに曖昧にします。 - セッション管理: 永続セッションを使用する(
リクエスト.セッション()
) は、Cookie とヘッダー、セッションごとまたはリクエストの論理グループごとにプロキシとユーザー エージェントをローテーションします。
リスクと制限
リスク | 説明 | 緩和 |
---|---|---|
プロキシブラックリスト | パブリックプロキシを頻繁に使用すると禁止される | 頻繁に回転させて使用前にテストしてください |
ユーザーエージェントフィンガープリンティング | サーバーはヘッダーの不一致を分析する可能性がある | 現実的で一貫性のあるヘッダーセットを使用する |
データプライバシー | 無料のプロキシはトラフィックを傍受したり操作したりする可能性がある | 機密情報を決して送信しない |
パフォーマンス | 無料プロキシは遅いか信頼性が低いことが多い | 遅延を監視し、障害時にスイッチを入れる |
例: 高度なヘッダー作成
ボードレールの詩のように優雅なリクエストは、あらゆる細部にまで調和していなければなりません。
ヘッダー = { "User-Agent": get_random_user_agent(), "Accept-Language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7", "Accept-Encoding": "gzip, deflate, br", "Referer": "https://www.google.fr/", "Connection": "keep-alive" }
要約表: 無料プロキシとユーザーエージェントを組み合わせる手順
ステップ | アクション |
---|---|
1. 集める | 新しいプロキシと最新のユーザーエージェント文字列を収集する |
2. 検証する | プロキシの稼働時間と速度をテストし、信頼性のためにユーザーエージェントをフィルタリングする |
3. 回転させる | リクエスト/セッションごとにプロキシとユーザーエージェントをランダム化する |
4. 強化する | リアリティを高めるために補足ヘッダーを追加する |
5. モニター | 失敗を検出し、新しいペアで再試行し、応答コードをログに記録します |
6. 尊重 | 検出を避けるために遅延を挿入し、周波数を制限する |
コメント (0)
まだコメントはありません。あなたが最初のコメントを投稿できます!