ウェブスクレイピングにおけるプロキシとVPNの比較: なぜVPNはスケールで停滞するのか

VPNとプロキシはどちらもIPを隠しますが、それだけで共通点は終わりです。スクレイピングにおいては、どちらかが数分で停滞します。なぜそうなるのか、その数学的根拠と使用すべきものを紹介します。

表面的には、VPNとプロキシは同じことを行います: 両方ともあなたの本当のIPを別のものに置き換えます。しかし、その類似性は見た目だけです。内部では、彼らは正反対の仕事のために作られています - VPNは1つの接続で1人の人間を数時間保護し、プロキシネットワークは数千の短命なリクエストをサポートし、それぞれが異なる訪問者のように見えます。ウェブスクレイピングにおいて、その違いは決定的です。これは、ウェブスクレイピングにおけるプロキシとVPNの比較の正直な比較であり、VPNが正確にどこで失敗するかを示す算数です。

アンチボットエンジンが実際に測定するもの

ウェブサイトはあなたがリクエストを送信する理由を気にしません - 彼らはパターンを評価します。3つのシグナルが支配します: IPごとのリクエスト頻度、IPの評判と履歴、時間経過における行動の一貫性。VPNと回転プロキシをこれら3つに対して評価すると、結果は意見の問題ではなく、計算の問題です。

意図的に控えめなスクレイパーを考えてみましょう: 1秒あたり1ページ、1分で60ページ。VPNの背後では、ターゲットは60秒以内に単一のIPからの60リクエストを目にします - ほぼすべてのレート制限の閾値を超えているため、CAPTCHA、403、または完全な禁止を受けます。回転する住宅プロキシの背後では、同じ60リクエストが60の異なるIPから出てきます、それぞれが単一の訪問をする通常のユーザーのように見えます。閾値は超えられません。同じ作業量、逆の結果 - そしてボリュームが増えるにつれてそれはさらに分岐します。

1つのVPN IPからの60リクエストがブロックされるのに対し、60の回転プロキシIPに分散された60リクエストが通過する図
リスクエンジンはIPごとのリクエストをカウントします。VPNはそれらを集中させます; 回転プロキシはそれらを薄く広げます。

なぜVPNはリスクを集中させるのか

VPNはオペレーティングシステムレベルで動作し、デバイスからのすべてのパケットを1つの暗号化トンネルを介して1つの出口にルーティングします。それはプライバシーを求める人には最適ですが、スクレイパーには不向きです。それはセッションごとに静的または半静的なIPを提供し、サーバーを切り替えることはトンネルを壊して再構築することを意味し、リクエスト間でそれをクリーンに行うことはできません。さらに悪いことに、商業VPNは共有サーバーを広告しています: 数百または数千のユーザーが同じアドレス範囲を通じて退出し、それらはデータセンターIPとしてカタログ化され、主要なサイトによってスコアリングされ、制限されます。無料のVPNは極端なケースです - ほぼ完全に悪用されたデータセンター範囲で、即座にフラグが立てられ、ブロックされます。

VPNが強調する暗号化もスクレイピングには無駄です。HTTPSはすでにリクエストペイロードをエンドツーエンドで暗号化しています; VPNの追加のAESレイヤーはCPUの負荷と遅延を増加させるだけで、IPの評判を改善することはありません。大量収集においては、スループットと一貫性が暗号強度を常に上回ります - これが真剣なデータパイプラインがVPNを完全にスキップする理由です。特に電話ベースのプラットフォームについて検討している場合は、私たちのモバイルプロキシとVPNの比較がさらに詳しく説明しています。

なぜプロキシはそれを分散させるのか

プロキシはアプリケーション層で動作するため、あなたが指示したトラフィックのみをルーティングします - そして同じスクリプト内で異なるリクエストを異なる出口にルーティングすることができます。その粒度がゲームの全てです。回転ゲートウェイは、大規模なプールを横断してリクエストごとに新しいIPを提供するため、IPごとのカウンターは決して上昇しません。スティッキーセッションは、フロー(ログイン、マルチステップカート)が必要なときに1つのアイデンティティを保持し、それから解放します。暗号化の負担なし、HTTPとSOCKS5が同じエンドポイントで、使用量に応じてスケールする価格設定。プロキシはワークフローを保護し、VPNはユーザーを保護します。スクレイピングには前者が必要です。IPローテーションが重要な理由に関する私たちの入門書はそのメカニズムをカバーしています。

import requests

# Per-request geo control - impossible to do cleanly with a VPN
GATE = "gate.quantumproxies.io:8000"

def fetch(url, country):
    # the exit country is selected right in the proxy username
    proxy = f"http://USER-country-{country}:PASS@{GATE}"
    return requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=20)

# Same script, three markets, three exit countries - one endpoint
for cc in ("us", "de", "jp"):
    r = fetch("https://example.com/pricing", cc)
    print(cc, r.status_code)

同時実行性はVPNが単に競争できないところ

スケールとは単にリクエストを増やすことではなく、多くの場所から同時に行うことです。VPNはマシン全体を1つの出口を通してルーティングするため、10の同時ワーカーがすべて1つのIPと1つの地理を共有します; あなたはスループットを増やすのではなく、レート制限のリスクを増やしています。プロキシプールはそれぞれのワーカーが異なる出口を引き出すことを可能にするため、同時実行性は実際に速度をもたらします。これがVPNが手動のテストには適していても、実際の運用には役に立たない最大の理由です。

import concurrent.futures as cf
import requests

ROT = "http://USER:PASS@rotating.quantumproxies.io:8000"
urls = [f"https://example.com/item/{i}" for i in range(1, 101)]

def get(url):
    # each concurrent worker gets its own fresh exit IP
    r = requests.get(url, proxies={"http": ROT, "https": ROT}, timeout=20)
    return url, r.status_code

with cf.ThreadPoolExecutor(max_workers=20) as pool:
    for url, code in pool.map(get, urls):
        pass  # 100 pages, 100 IPs, all in parallel - a VPN can't do this

その勝利の形に注目してください: 同時実行性は、各ワーカーが異なるIPを保持しているためにのみスループットを増やします。10のワーカーを1つのVPN出口に向けると、10倍速くなったわけではなく、ターゲットに10倍のIPごとのリクエスト率を通知し、制限することを許してしまいます。並列性と回転はここでは実際に同じ機能であり、VPNはリクエストレベルでどちらも提供しません。

ネットワーク層、暗号化、IPローテーション、地理制御におけるVPNとプロキシの機能比較
VPNは個人のためのプライバシーツールであり、プロキシはパイプラインのためのデータツールです。彼らは代替品ではありません。

VPNが本当に問題ないとき

率直さは信頼を生むので、ここに正直な境界があります: 手で数ページを取得する場合、別の国からサイトがどのように見えるかを確認する場合、または迅速な一回限りのテストを行う場合、VPNは完全に適しており、セットアップが簡単です。自動化とボリュームが入る瞬間 - 同時ワーカー、数千ページ、複数のターゲット国、スケジュール - VPNの単一IPモデルはボトルネックになります。手動のタスクに過剰購入しないでください、しかし生産スクレイパーをVPNで出荷しないでください。あなたのフローが無状態のバーストと状態を持つセッションの両方を混在させる場合、スティッキーセッションと回転プロキシの比較に関する私たちのノートがステップごとに選択するのに役立ちます。

回転する住宅プロキシでスクレイパーをスケールアップする

よくある質問

ウェブスクレイピングにはプロキシとVPNのどちらが良いですか?

自動化されたものには、決定的にプロキシです。プロキシはアプリケーションレベルでルーティングし、リクエストごとにIPを回転させ、リクエストごとに地理を制御し、暗号化の負担がありません - したがって、スクレイパーは多くのIPに負荷を分散し、レート制限を下回ります。VPNはデバイス全体を1つの出口を通してルーティングし、リクエストを単一のIPに集中させ、スケールで速やかにブロックされます。

なぜ私のVPNはスクレイピング中にブロックされるのですか?

2つの理由があります。すべてのリクエストが1つの共有VPN IPから出てくるため、IPごとのリクエスト率がサイトの閾値を超えて急上昇します; そして商業VPNサーバーはアンチボットシステムがすでに認識し、スコアを下げるデータセンター範囲を使用しています。集中したボリュームとフラグが立てられたIPは、レート制限、CAPTCHA、または禁止の正確なレシピです。

VPNとプロキシを一緒に使用できますか?

技術的には可能ですが、スクレイピングには無意味です。プロキシの下にVPNをスタックすると、2つ目の仲介者、より多くの遅延と暗号化の負担が追加され、IPの評判や回転には何の利益もありません。プロキシはすでに必要なIPマスキングと地理を処理しています。どちらか一方を使用してください; データ収集にはプロキシです。

プロキシはVPNのようにトラフィックを暗号化しますか?

デフォルトではトランスポートレベルで暗号化しません - そしてスクレイピングにはそれで問題ありません、なぜならHTTPSはすでにリクエストとレスポンスのペイロードをエンドツーエンドで暗号化しているからです。VPNの追加の暗号化は主にCPUコストを追加します。プロキシ自体への接続を特に暗号化する必要がある場合は、HTTPSまたはSOCKS5プロキシを使用してください; ターゲットペイロードはTLSによって保護されています。

VPNとプロキシは異なる質問に答えます。「1人としてプライベートに閲覧するにはどうすればよいか?」 - VPN。「多くの場所からデータを収集し、ブロックされないようにするにはどうすればよいか?」 - プロキシ。2つを混同すると、スクレイパーは最初のレート制限で停止します。ツールを仕事に合わせるとスケールします。

スクレイピング用に構築された回転する住宅プロキシを入手する