プロキシプロトコルの理解
接続するとき プロキシサーバー、クライアントがそのプロキシと通信するために使用するプロトコルは、どのようなトラフィックを処理できるか、暗号化の処理方法、およびそのオーバーヘッドを追加する量を決定します。 2つのドミナントプロトコルはHTTP(S)とSOCKS5です。
適切なプロトコルを選択すると、アプリケーションのパフォーマンス、互換性、セキュリティの姿勢に影響します。 このガイドは、両方のプロトコルを分解し、両側を比較し、各プロトコルを使用するときに表示します。
HTTPプロキシの仕組み
HTTPプロキシは、Webトラフィック用に特別に設計されています。 クライアントが HTTP プロキシを通じてリクエストを送信すると、プロキシは HTTP ヘッダーを読み込み、宛先 URL を理解し、リクエストをターゲット サーバーに転送します。 HTTPS トラフィックの場合、クライアントは CONNECT その後、ターゲットにTCPトンネルを確立するプロキシへの方法 - 暗号化されたTLSトラフィックは、プロキシがそれを検査することなくトンネルを通過します。
HTTPプロキシの主な特徴
- アプリケーション層の意識: プロキシは HTTP ヘッダとコンテンツを読み込み、変更、キャッシュできます
- ヘッダーの注入: HTTP プロキシは、ヘッダを追加できます。
X-Forwarded-Forしかし、品質プロバイダは匿名性のためにこれらをストリップ - 関係の再利用: HTTP/1.1 は、HTTP/2 のマルチプレックスで接続オーバーヘッドを削減します。
- 作り付けの証明: ユーザー名/パスワード認証
Proxy-Authorizationヘッダー - 広いサポート: HTTP クライアント、ブラウザ、ライブラリは HTTP プロキシをネイティブにサポートします。
# HTTP proxy with curl
curl -x http://USERNAME:PASSWORD@gate.proxyhat.com:8080 https://httpbin.org/ip
# Explicit CONNECT tunnel for HTTPS
curl --proxy http://USERNAME:PASSWORD@gate.proxyhat.com:8080 https://httpbin.org/ipSOCKS5の長所の仕事
SOCKS5(Socket Secure version 5)は、HTTP以下のトランスポートレイヤーで動作します。 通過するトラフィックを解釈しません。 代わりに、TCP(またはUDP)接続をターゲットに確立し、両方の方向で未加工バイトを中継します。 これにより、SOCKS5 プロトコルアグノスティック: HTTP、HTTPS、FTP、SMTP、DNS のルックアップ、その他の TCP/UDP プロトコルをプロキシできます。
SOCKS5の主要特性
- プロトコルアグノスティック: HTTP だけでなく、TCP や UDP トラフィックを処理する
- ヘッダーの修正無し: SOCKS5はアプリケーションレイヤーのコンテンツを理解していないため、ヘッダを追加または変更することはありません。
- UDP サポート: SOCKS5は、DNS、VoIP、ゲームに便利なUDPトラフィックを中継することができます
- 認証方法: no-auth、ユーザー名/パスワード、およびGSS-API認証をサポート
- DNSの決断制御: ローカルまたはプロキシ側(リモートDNS)でDNSのリゾリューションを実行できます。
# SOCKS5 proxy with curl
curl --socks5-hostname USERNAME:PASSWORD@gate.proxyhat.com:1080 https://httpbin.org/ip
# Using socks5h:// for remote DNS resolution
curl -x socks5h://USERNAME:PASSWORD@gate.proxyhat.com:1080 https://httpbin.org/ipHTTP対SOCKS5:詳細な比較
| スタッフ | HTTP プロキシ | SOCKS5 プロキシ |
|---|---|---|
| OSIレイヤー | 層 7 (適用) | 層 5 (セッション) |
| サポートされているプロトコル | HTTP、HTTPS | TCP/UDPプロトコル |
| ヘッダーの処理 | HTTPヘッダを読み取り/変更できます。 | ヘッダーの認識なし |
| UDPサポート | なし | お問い合わせ |
| DNSの解像度 | Proxy は CONNECT を解決します | ローカルまたはリモート(構成可能) |
| スピード | HTTPトラフィックの高速化 | 接続ごとのわずかなオーバーヘッド |
| キャッシュ | 可能(HTTPの場合) | できません。 |
| クライアントサポート | ユニバーサル | 現代のクライアント |
| ポートレート | 8080 (プロキシハート) | 1080 (ProxyHat) |
パフォーマンスの違い
関係構築
HTTPプロキシを使用して CONNECT TLS交渉が始まる前にトンネルを確立するために1つの余分円形の旅行を要求して下さい。 SOCKS5には、バージョン交渉、認証、および接続リクエストが若干長いハンドシェイクがあります。通常、ペイロード開始前に2〜3往復の往復です。
練習では、ほとんどのユースケースでは、違いが必須です。 数千もの短時間接続で高周波スクレイピングのシナリオが重要である場合、ここでは、HTTPプロキシは、コネクションの再利用によるわずかなエッジを持っています。
スループット
接続が確立されると、両方のプロトコルは最小限のオーバーヘッドを追加します。 SOCKS5には、ヘッダ検査や加工をゼロにしないため、大きな転写に余計な利点があります。 典型的なWebスクレイピングワークロードのために、しかし、スループットの違いは不可能です。
レイテンシー
のために ウェブスクレイピング、遅延は、プロトコルのオーバーヘッドではなく、ターゲットへのネットワーク距離によって支配されます。 使用方法 ジオターゲティングプロキシ 対象となるサーバーは、プロトコルの選択よりもはるかに重要である。
HTTPプロキシを使用する際
- ウェブスクレイピング: HTTP/HTTPS 経由でのみデータを収集する場合、HTTP プロキシは最も簡単で効率的な選択です。
- ブラウザの自動化: Puppeteer、Playwright、およびSeleniumは、すべてのクラスHTTPプロキシサポートを持っています
- API のデータ収集: REST および GraphQL API は HTTP ベースで、HTTP は自然な適合をプロキシします
- SERPの追跡: すべての検索エンジンのリクエストは HTTPS なので、HTTP プロキシのサポートは、必要なすべての機能です。
- 関係のプール: 効率的な接続を再利用したい時
HTTP プロキシによる Python の例
import requests
proxy = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
response = requests.get(
"https://httpbin.org/ip",
proxies={"http": proxy, "https": proxy},
timeout=15,
)
print(response.json())
HTTP プロキシによる Node.js の例
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent("http://USERNAME:PASSWORD@gate.proxyhat.com:8080");
const { data } = await axios.get("https://httpbin.org/ip", { httpsAgent: agent });
console.log(data);
SOCKS5のプロキシを使用するとき
- 非HTTPプロトコル: FTP転送、SMTPメール、またはカスタムTCPプロトコル
- DNS漏洩防止: DNS(リモートDNS)を解決するためにプロキシが必要な場合
socks5h://) - UDPの交通: UDP、ゲームプロトコルのテスト、またはリアルタイムストリーミング上のDNS
- 透明なプロキシ: 変更なしでトラフィックを中継する必要がある場合
- 混合プロトコルツール: 複数のプロトコルを同時に使用するアプリケーション
SOCKS5プロキシによるPython例
import requests
# Requires: pip install requests[socks]
proxy = "socks5h://USERNAME:PASSWORD@gate.proxyhat.com:1080"
response = requests.get(
"https://httpbin.org/ip",
proxies={"http": proxy, "https": proxy},
timeout=15,
)
print(response.json())
SOCKS5プロキシで例を行く
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
proxyURL, _ := url.Parse("socks5://USERNAME:PASSWORD@gate.proxyhat.com:1080")
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
}
resp, err := client.Get("https://httpbin.org/ip")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
生産の統合のために、探検して下さい Python SDK, ノードSDKまたは SDKについて 組み込みのリトライロジックとエラー処理のため。
セキュリティの考慮事項
暗号化
HTTP や SOCKS5 プロキシはデフォルトでプロキシ接続自体を暗号化します。 HTTPプロキシで、 CONNECT トンネルはTLSの交通不透明に渡します。 SOCKS5では、同じ原理が適用されます。 TLSは、お客様とプロキシの間ではなく、クライアントとターゲットサーバー間でエンドツーエンドです。
セキュリティの問題は、 ターゲット接続 HTTPS/TLS を使用します。 プロキシプロトコルは、ルーティングではなく暗号化を処理します。
DNSリーク
HTTP プロキシは、プロキシレベルで DNS を解決します。 CONNECT. SOCKS5は選択を提供します: socks5:// ローカルでDNSを解決する(潜在的な漏出) socks5h:// プロキシ(漏れなし)でDNSを解決します。 常に使用 socks5h:// 匿名性が重要であるとき。
認証
プロトコルはユーザ名/パスワード認証をサポートしています。 HTTP は認証情報を送信します Proxy-Authorization ヘッダ(Base64 エンコード)。 SOCKS5は独自の認証サブプロトコルを使用しています。 どちらの場合も、TLS を使用して、ターゲット接続のインターセプションからプロキシの認証情報を保護します。
主なテイクアウト: ウェブスクレイピングとほとんどのHTTPベースのタスクでは、HTTPプロキシを使用して、最高の互換性とパフォーマンスを提供します。 非HTTPプロトコルをプロキシする必要がある場合は、SOCKS5を選択し、UDPサポートを必要とするか、または細かなDNS解像度制御が必要な場合。
ProxyHat はプロトコルの両方をサポート
ProxyHat は HTTP と SOCKS5 の両方を同じゲートウェイからアクセス可能にします。 HTTP プロキシがポート上で実行 8080の と SOCKS5 港 ログイン, 両方 gate.proxyhat.com. あなたの資格情報, IPの回転設定と ジオターゲティングルール 同一のポートで動作します。 チェックイン プライシングプラン 細部および探検のため ドキュメント 統合ガイド用
よくある質問
SOCKS5はHTTPプロキシよりも高速ですか?
ウェブのトラフィックには意味がありません。 SOCKS5は1件あたりの処理が少ないが、差は無視できない。 HTTP プロキシは、接続再使用するため、Web のスクレイピングに実際に高速である可能性があります。
SOCKS5はウェブスクレイピングに使えますか?
はい、SOCKS5はウェブスクレイピングに最適です。 ただし、HTTP プロキシは HTTP のみのタスクを構成し、より広いライブラリ サポートを行うのが簡単です。
1つのプロトコルを選択する必要がありますか?
いいえ。 ProxyHatを使用すると、ポート1080でポート8080とSOCKS5の両方を同時に使用できます。 インフラストラクチャの各コンポーネントにどのコンポーネントにも適しています。
SOCKS5はHTTPよりもIPを隠していますか?
どちらのプロトコルもIPを同様に隠します。 重要な違いは、HTTP プロキシとは できます 転送ヘッダ(品質プロバイダーがいない)を追加し、SOCKS5にはプロトコルレベルでIPを漏洩させる仕組みはありません。






