「Kad vuk ovcu čuva, ne valja se čuditi kad namesane vune.」
(オオカミが羊を守っているとき、羊毛が消えても驚かないでください。) 大量スクレイピングの世界では、単一のプロキシにデータフローを委ねることは、群れを狼の手に委ねるようなものです。レート制限、CAPTCHA、IPアドレス制限といったデジタル羊飼いの策略を巧みにかわすには、サラエボのチェスマスターのように巧妙なプロキシ設定が必要です。
大規模スクレーパープロキシ設定の解剖
プロキシの種類:兵士の選択
プロキシタイプ | スピード | 匿名 | 料金 | 信頼性 | ユースケース例 |
---|---|---|---|---|---|
データセンター | 高い | 中くらい | 低い | 高い | 一括スクレイピング、非機密 |
居住の | メッド | 高い | 高い | 中くらい | Eコマース、スニーカー |
ISP(静的解像度) | 高い | 高い | 非常に高い | 非常に高い | チケット販売、信頼性の高いサイト |
携帯 | 低い | 非常に高い | 非常に高い | 低い | ソーシャルメディア、スパム対策 |
ボスニアの見解:
データセンタープロキシはユーゴスラビアのザスタバ車のようなもの。安価でどこにでもあるが、すぐに見分けられる。住宅用プロキシはイスタンブールのサラエボ車のように溶け込む。地元の人は気づかないが、コストは高い。
主要プロバイダー:
– データセンター: パケットストリーム, プロキシラック
- 居住の: オキシラボ, ルミナティ
– ISP: スマートプロキシ
- 携帯: プロキシLTE
IPローテーション:Kafanaシャッフル
ローテーションプロキシ 大量スクレイピングには不可欠です。ローテーションを行わないと、ボスニアのジョークに出てくる政治家よりも早くBANされる可能性があります。主な戦略は2つあります。
- リクエストごとのローテーション: リクエストごとに IP を変更します。
- 最適な用途: 攻撃的なサイトでのレート制限を回避する。
-
欠点: 一部のサイトではセッション クッキーが追跡され、セッションが中断されます。
-
セッションローテーション(スティッキー): セッション中は同じ IP を維持し、X 分/リクエストごとにローテーションします。
- 最適な用途: ログイン、ショッピング カート、または Cookie の保存を必要とするサイト。
例: Python + Requests でローテーション住宅プロキシを使用する
インポートリクエスト proxy = { 'http': 'http://user:[email protected]:10000', 'https': 'http://user:[email protected]:10000', } session = request.Session() session.proxies.update(proxy) resp = session.get('https://targetsite.com', timeout=10) print(resp.status_code)
リクエストごとに: ループの反復ごとにプロキシ辞書を変更します。
プロキシ管理アーキテクチャ
ボスニアのエンジニアのお気に入り:分散プロキシミドルウェア
アーキテクチャは通常、次の要素で構成されます。
- 中央プロキシマネージャー:
プロキシプール、禁止率、成功/失敗の統計を追跡します。状態にはRedisまたはPostgreSQLが使用されます。 - スクレーパー作業員:
マネージャーからプロキシ情報を取得し、結果を報告します。 - ローテーションゲートウェイ(オプション):
プロキシメッシュ または イカ ローカルローテーターとして。 - ヘルスチェッカー:
プロキシを ping し、遅い IP や禁止された IP をブラックリストに登録します。
プロキシ プールのサンプル Redis スキーマ:
鍵 | 値の型 | 説明 |
---|---|---|
プロキシ:アクティブ | セット | 現在アクティブなIPのリスト |
プロキシ:禁止 | セット | 最近禁止されたIP |
プロキシ:統計 | ハッシュ | IPごとの成功/失敗数 |
禁止事項の取り扱い: 「Bolje spriječiti nego liječiti」
ボスニアの諺にあるように、予防は治療に勝ります。
検出技術:
- HTTP ステータス監視:
403、429、またはキャプチャ = おそらく禁止。 - コンテンツハッシュ:
有効な HTML を装ったブロックを検出するための応答本文のハッシュ化。 - タイミング分析:
突然の速度低下 = ソフトバンの可能性。
自動禁止処理:
response.status_codeが[403, 429]の場合: # アクティブセットからプロキシを削除する redis.srem('proxies:active', current_proxy) redis.sadd('proxies:banned', current_proxy)
スケーリング:バルカン半島の混乱を起こさない並列処理
- スレッド/プロセス プール:
スクレイピー、 リクエストの同時実行 - 分散タスクキュー:
セロリ, RQ - Kubernetes デプロイメント:
各ポッドには独自のプロキシ割り当てが与えられ、環境変数によって管理されます。
例: Kubernetes ポッドでのプロキシの割り当て
apiVersion: v1 kind: Pod metadata: name: scraper-pod spec: containers: - name: scraper image: scraper:latest env: - name: PROXY_ADDRESS valueFrom: configMapKeyRef: name: proxy-pool key: proxy-address
プロキシ認証とセキュリティ
- ユーザー名/パスワード
ほとんどのプロバイダーは HTTP 基本認証を使用します。 - IPホワイトリスト:
特定の IP からのアクセスを許可するプロバイダーもあります。プロバイダーのダッシュボードでこれを設定します。
セキュリティのヒント:
ソースコードにプロキシ認証情報をハードコードしないでください。環境変数またはシークレット管理(ハシコープ・ボールト, AWS シークレットマネージャー).
代理人リストの衛生: 計画を立てる
- 定期的に検証:
X 分ごとにプロキシを ping します。 - デッド/禁止を削除:
プールから自動的にプルーニングします。 - ジオターゲティング:
より成功するには、対象サイトのユーザー ベースに一致するプロキシを使用します (例: 米国の電子商取引には米国のプロキシを使用します)。
検証スクリプトの例 (Python):
インポートrequests def is_proxy_alive(proxy_url): try: resp = request.get('https://httpbin.org/ip', proxies={'http': proxy_url, 'https': proxy_url}, timeout=5) return resp.status_code == 200 except Exception: return False
プロキシ プールのサイズ: あなたのオオカミには羊が何匹いますか?
ターゲットサイトの攻撃性 | 1分あたりのリクエスト数 | 推奨プロキシ数 |
---|---|---|
ロー(ニュース、ブログ) | 60歳未満 | 10-20 |
中規模(Eコマース) | 60~300 | 50-200 |
ハイ(スニーカー、チケット) | >300 | 300+ |
経験則:
禁止を回避するには、IP ごとに希望する RPM を安全な RPM で割ります。
ツールとフレームワーク
- スクレイピー: 組み込みプロキシ サポート、ミドルウェアのカスタマイズ。
- クローラ: スマートローテーションプロキシ API。
- プロキシブローカー: オープンソースのプロキシ収集。
- Gリクエスト: プロキシ サポートによる非同期リクエスト。
ボスニア戦争室:プロキシ設定例
シナリオ: 積極的なアンチボットを使用して、米国の小売業者から 100,000 件の製品ページをスクレイピングします。
- プロバイダー: 1,000 個の IP がローテーションする Oxylabs の住宅プロキシ。
- プロキシマネージャー: ライブ/禁止されたプロキシを追跡するための Redis DB。
- スクレーパー: 20 個の Dockerized Scrapy スパイダー (それぞれセッションごとにプロキシを使用)。
- 禁止検出: 403/429 およびコンテンツ フィンガープリンティング。
- スケーリング: Kubernetes を介してオーケストレーションされ、各ポッドにはシークレットを介してプロキシ資格情報が割り当てられました。
キーコマンド:
scrapy クロール製品 -s HTTP_PROXY=http://user:[email protected]:10000
パジ・ドブロ:
プロキシ プロバイダーの中には、牧草地に実際にいる羊の数よりも多くの羊を約束するプロバイダーもあるため、IP プールをテストせずにそのプロバイダーを信頼しないでください。
その他のリソース:
- Scrapy Proxy ミドルウェアのドキュメント
- リクエストによるプロキシのローテーション
- Oxylabsのプロキシ管理ガイド
- Luminati プロキシローテーター API
- GitHub: プロキシプール管理の例
モスタル橋の古参の警備員のように、適切に調整されたプロキシ設定は、機敏かつ堅牢で、常に次の動きに対応できる、最善の防御および攻撃ラインです。
コメント (0)
まだコメントはありません。あなたが最初のコメントを投稿できます!