# ProxyError：Pythonでの'Unable to connect to proxy'とNode.js

> requests.exceptions.ProxyError 「プロキシに接続できません」の説明：ネストされた原因（拒否、タイムアウト、DNS、407、502）を読み取り、適切な対処を行ってください。

- URL: https://crawlrelay.com/ja/docs/errors/cannot-connect-to-proxy/
- 最終更新: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

クライアントライブラリエラー（Python, Node.js）：各ツールでの正確なメッセージ、考えられる原因の順序、効果的な修正方法。

**クイックアンサー — プロキシでのCannot connect to proxy (ProxyError)とは何を意味していますか？**

**'Unable to connect to proxy'** はラッパーエラーです。Pythonのrequestsとurllib3はその中に本当の理由を入れます。最も内側の原因を読み取ってください。'Connection refused'やタイムアウトはホスト、ポート、またはネットワークの問題を意味し、'Failed to resolve'はDNS、'Tunnel connection failed: 407'は認証情報の問題を表しています。CrawlRelayではそれぞれ一行で解決できます。

## Cannot connect to proxy (ProxyError)を一目で理解する

| 属性 | 値 |
| --- | --- |
| エラー | Cannot connect to proxy (ProxyError) |
| タイプ | クライアントライブラリエラー（Python, Node.js） |
| 送信元 | プロキシと通信前または通信中のHTTPクライアント |
| 定義されている場所 | Library error; read the nested cause for the real reason |
| 再試行しますか？ | ネストされた原因に依存します |
| まず確認すること | 最も内側の例外を読み取ってください：拒否、タイムアウト、名前解決、またはステータスコード |

## Cannot connect to proxy (ProxyError)とは何ですか？

urllib3はプロキシに関する失敗ごとに`ProxyError`を発生させ、requestsがそれを渡します。役立つ情報はトレースバックの最後の長い行でプリントされるネストされた例外にあります。

Node.jsクライアントは異なる挙動を示し、プロキシのアドレスであることを言わずに`ECONNREFUSED`や`ETIMEDOUT`のようなソケットエラーを直接報告します。

## 'Cannot connect to proxy'はPython、curl、Node.js、ブラウザではどのように表示されますか？

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

- **拒否:** `ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))`
- **DNS:** `NameResolutionError(... Failed to resolve ...)` が `ProxyError` 内にあります
- **認証情報:** `OSError('Tunnel connection failed: 407 Proxy Authentication Required')`
- **ゲートウェイエラー:** `OSError('Tunnel connection failed: 502 Bad Gateway')`
- **Node.js:** `Error: connect ECONNREFUSED`, `ETIMEDOUT` または `ENOTFOUND` その後にプロキシのアドレスが続きます

## 'Cannot connect to proxy'の原因は何ですか？

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

- **プロキシURLのホストまたはポートが間違っている**
- **スキームの欠落:** `host:port` に `http://` がないと、一部のライブラリで予想外の解析になります。
- **ネットワークやサーバーでアウトバウンドトラフィックがブロックされている**
- **CONNECTステップで表面化する認証情報またはゲートウェイエラー** が同じ例外に包まれている
- **古いプロキシを指しコードを上書きする環境変数** のような `HTTPS_PROXY`

## 'Cannot connect to proxy'を段階的に診断するには？

1. 完全な例外を表示し、最後のネストされた原因を読み取ってください。
2. 何が設定されているかを見るために `requests.utils.get_environ_proxies(url)` または `HTTP_PROXY`, `HTTPS_PROXY` と `NO_PROXY` の変数を表示します。
3. 同じマシンから下のcurlテストを実行します。
4. 原因と以下の修正リストを照合します。

*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
```

## 'Cannot connect to proxy'をどう修正しますか？

- **拒否またはタイムアウト:** ホストとポートを修正するか、ゲートウェイへのアウトバウンドトラフィックを開放してください。
- **名前解決失敗:** マシンのDNSを確認し、`nslookup`でそのホストを試してください。
- **407:** 認証情報を修正しURLエンコードしてください。詳細は[407 Proxy Authentication Required](https://crawlrelay.com/ja/docs/errors/407-proxy-authentication-required/)を参照してください。
- **502または504:** 新しい出口で再試行してください。[502](https://crawlrelay.com/ja/docs/errors/502-bad-gateway/) と [504](https://crawlrelay.com/ja/docs/errors/504-gateway-timeout/)を参照。
- **望ましくない環境プロキシ:** requestsでの `session.trust_env = False` の設定か、変数をクリアしてください。

*Python：エンコードされた認証情報を使ってプロキシURLを作成する*

```python
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)
```

## 'Cannot connect to proxy'の後に再試行すべきですか？

タイムアウトや502、504などのゲートウェイエラーといったネットワークレベルの原因のみ再試行してください。拒否された接続、DNS失敗、407は設定を変えるまで繰り返されるため、エラー処理で致命的に扱います。

## Cannot connect to proxy (ProxyError)はCrawlRelayにどう関係しますか？

CrawlRelayの場合、プロキシURLは`http://USERNAME:PASSWORD@`の後に以下に記載のゲートウェイホストとHTTPポートが続き、HTTPもHTTPSも同じです。requestsの`http`と`https`キーには同じ`http://` 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: WRONG_VERSION_NUMBER](https://crawlrelay.com/ja/docs/errors/ssl-wrong-version-number/) · [407](https://crawlrelay.com/ja/docs/errors/407-proxy-authentication-required/) · [Python ガイド](https://crawlrelay.com/ja/docs/python/)。

## Cannot connect to proxy (ProxyError)：開発者がよく尋ねる質問

### 'Max retries exceeded with url'はプロキシでどういう意味ですか？

これはurllib3が再試行回数の上限に達したことを意味し、'Caused by'の箇所に本当の理由が続きます。プロキシの場合、その部分は通常ネストされた原因を伴うProxyErrorで、接続拒否、タイムアウト、名前解決失敗、あるいは407のようなトンネル状態です。

### なぜrequestsは私が設定していないプロキシを使うのですか？

requestsはデフォルトで`HTTP_PROXY`、`HTTPS_PROXY`、`NO_PROXY`の環境変数を読み取り、Windowsではシステムのプロキシ設定も読み込みます。残った値が期待を上書きします。`session.trust_env = False`を設定するか、プロキシを明示的に各リクエストに渡してください。

### プロキシアドレスの前にhttp://かhttps://を書きますか？

サイトがHTTPSでも、HTTPプロキシの場合は`http://`を書きます。スキームはクライアントがプロキシとどう通信するかを示します。`https://`と書くと新版urllib3はTLSでプロキシと通信を開始し、HTTPプロキシポートでSSLエラーになります。

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

- [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もセルフィーも書類も不要。暗号通貨で支払い可能。
