# プロキシ経由のSSL WRONG_VERSION_NUMBER：解決策

> [SSL: WRONG_VERSION_NUMBER]は通常、plain HTTPプロキシポートでhttps://のプロキシURLを使った場合に起こります。PythonやNodeでの一行解決法です。

- URL: https://crawlrelay.com/ja/docs/errors/ssl-wrong-version-number/
- 最終更新: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

クライアントのTLSエラー：各ツールでの正確なメッセージ、考えられる原因の順序、効果的な修正方法。

**クイックアンサー — プロキシでのSSL: WRONG_VERSION_NUMBERとは何を意味していますか？**

**[SSL: WRONG_VERSION_NUMBER]** はほぼ常に、クライアントが平文で応答するものに対してTLSハンドシェイクを開始したことを意味します。一般的な原因は、plain HTTPプロキシポートを指す`https://`のプロキシURLです。CrawlRelayでは、HTTPとHTTPS共にゲートウェイアドレスの前に`http://`を書きます。サイト自身のHTTPSはトンネル内で問題なく動作します。

## SSL: WRONG_VERSION_NUMBERを一目で理解する

| 属性 | 値 |
| --- | --- |
| エラー | SSL: WRONG_VERSION_NUMBER |
| タイプ | クライアントのTLSエラー |
| 送信元 | TLSに対応していない相手側でのTLSライブラリエラー |
| 定義されている場所 | TLS 1.3: RFC 8446; HTTP proxy CONNECT: RFC 9110, section 9.3.6 |
| 再試行しますか？ | いいえ。それは設定ミスです。 |
| まず確認すること | プロキシURLのスキームを確認してください。 |

## SSL: WRONG_VERSION_NUMBERとは何ですか？

TLSはハンドシェイクレコードから始まります。返ってきたバイトがHTTP応答ならばTLSライブラリはバージョン番号が意味不明と判断し停止します。Pythonは`WRONG_VERSION_NUMBER`を報告し、正確な文言はOpenSSLバージョンとクライアントで異なります。

プロキシURLのスキームはクライアントがプロキシとどう通信するかを決めます。`http://`はプロキシに対して平文HTTPで接続し、続けて`CONNECT`トンネルとウェブサイトとのTLSを行います。`https://`はプロキシ自体とTLS通信を行い、プロキシポートがTLSを期待する場合に機能します。

## SSL: WRONG_VERSION_NUMBERはPython、curl、Node.js、ブラウザではどのように表示されますか？

同じ失敗でもツールごとに異なる表示になります。ログ検索用のメッセージは以下の通りです：

- **Python requests / urllib3 2.x:** `SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number'))` を `ProxyError` でラップしています
- **httpx:** `httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number`
- **curl:** `curl: (35) ... wrong version number` （plain proxy用に`-x https://`を指定した場合）
- **Node.js:** エラーメッセージ内の`EPROTO ... wrong version number`

## SSL: WRONG_VERSION_NUMBERの原因は何ですか？

最も可能性が高いのは次の通りです：

- **プロキシアドレスの前に`https://`を付け、plain HTTPのポートを使っている**。これが最も多い原因です。
- **TLSを期待するプロバイダからの設定のコピー&ペースト**
- **ポート80の`https://`やTLS期待ポートの`http://`などプロキシ以外のURLに使う**
- **コードが継承する`HTTPS_PROXY=https://...`のような環境変数**

## SSL: WRONG_VERSION_NUMBERを段階的に診断するには？

1. コードが使うプロキシURLを表示しスキームを確認してください。
2. 環境にある`HTTPS_PROXY`と`ALL_PROXY`を調べてください。
3. 下のcurlテストを`-x http://`で実行し機能するか確認してください。
4. curlは動くがコードが動かないなら、コードまたは環境がまだ`https://`を使っています。

*curlで失敗したURLをテストする（HTTPポート、詳細表示）*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## SSL: WRONG_VERSION_NUMBERをどう修正しますか？

- **プロキシURLには必ず`http://`を使う**： `{"http": "http://...", "https": "http://..."}` 
- **TLS検証をオンのままにしてください。修正はスキームであり`verify=False`ではありません。**
- **環境変数の修正をスクリプト内での上書きではなく行う。**

## SSL: WRONG_VERSION_NUMBERの後に再試行すべきですか？

このエラーは決して再試行しないでください。同じ方法で必ず失敗します。1文字の設定ミスの修正です。

## SSL: WRONG_VERSION_NUMBERはCrawlRelayにどう関係しますか？

CrawlRelayのHTTPポートはHTTPSサイトを`CONNECT`トンネルで運ぶplain HTTPプロキシポートです。TLSはクライアントとサイト間のトンネル内で終端し、ゲートウェイは`https://`のプロキシURLを必要としません。

ゲートウェイ：`gw.crawlrelay.com`、ポート7777（HTTP、HTTPSはCONNECT経由）、ポート7778（SOCKS5）。ユーザー名形式：`USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`。関連情報：[SSL証明書検証失敗](https://crawlrelay.com/ja/docs/errors/ssl-certificate-verify-failed/) · [プロキシに接続できません](https://crawlrelay.com/ja/docs/errors/cannot-connect-to-proxy/) · [Pythonガイド](https://crawlrelay.com/ja/docs/python/)。

## SSL: WRONG_VERSION_NUMBER：開発者がよく尋ねる質問

### http://のプロキシURLを使うと通信は暗号化されないのでしょうか？

HTTPSサイトには不要です。`http://`スキームはプロキシとの短いCONNECT交換（認証情報を含む）だけをカバーし、その後クライアントはトンネル内でサイトと直接TLS通信します。plain `http://`サイトはプロキシの有無にかかわらず暗号化されません。

### urllib3のアップグレード後にこれが起きたのはなぜですか？

urllib3 2.xはHTTPSプロキシをサポートしており、`https://`プロキシURLを文字通り受け入れ、プロキシとTLSを開始します。古い環境は誤ったスキームで偶然動くことがありました。plain HTTPプロキシポートには必ず`http://`を書き、エラーを解消してください。

### エラーをなくすためにverify=Falseにすべきですか？

いいえ。認証チェックオフではスキームの誤りは直りません。またすべてのリクエストでの傍受リスクが増します。プロキシURLのスキームを直し、本番環境では検証をオンにしてください。

## 他のプロキシエラーのリファレンス

- [401 Unauthorized vs 407](https://crawlrelay.com/ja/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/ja/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/ja/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/ja/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/ja/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/ja/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/ja/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/ja/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/ja/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/ja/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/ja/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/ja/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/ja/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/ja/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/ja/docs/errors/ssl-wrong-version-number/)

**失敗ケースを網羅したドキュメント付きレジデンシャルプロキシ** $0.50/GB発のCrawlRelayレジデンシャルプロキシ、期限切れがないトラフィック。 [料金を見る](https://crawlrelay.com/ja/pricing/) · [クイックスタート](https://crawlrelay.com/ja/docs/)

---

CrawlRelay: CrawlRelayは開発者第一のレジデンシャルプロキシおよび4G/5Gモバイルプロキシの回転型サービスです：有効期限なしの使った分だけ支払うトラフィックを$0.50/GBから暗号通貨で購入、IDアップロード不要。KYC不要 — IDもセルフィーも書類も不要。暗号通貨で支払い可能。
