Jawaban cepat
Apa arti Cannot connect to proxy (ProxyError) dengan proxy?
'Tidak dapat terhubung ke proxy' adalah error pembungkus: requests dan urllib3 Python menyimpan alasan sebenarnya di dalamnya. Baca penyebab terdalam. 'Connection refused' atau timeout berarti masalah host, port, atau jaringan; 'Failed to resolve' berarti DNS; 'Tunnel connection failed: 407' berarti kredensial. Dengan CrawlRelay, masing-masing memiliki perbaikan satu baris.
Cannot connect to proxy (ProxyError) sekilas
| Kesalahan | Cannot connect to proxy (ProxyError) |
|---|---|
| Tipe | Kesalahan pustaka klien (Python, Node.js) |
| Dikirim oleh | Klien HTTP Anda, sebelum atau selama berbicara ke proxy |
| Didefinisikan dalam | Library error; read the nested cause for the real reason |
| Mencoba lagi? | Tergantung penyebab di dalamnya |
| Periksa pertama | Baca pengecualian terdalam: ditolak, timeout, penyelesaian nama, atau kode status |
Apa arti Cannot connect to proxy (ProxyError)?
urllib3 mengeluarkan satu ProxyError untuk setiap kegagalan yang melibatkan proxy, dan requests meneruskannya. Informasi berguna ada di pengecualian bersarang, yang cetak jejak errornya (traceback) tampilkan di akhir baris panjang.
Node.js klien berperilaku berbeda: mereka melaporkan error socket langsung, seperti ECONNREFUSED atau ETIMEDOUT, sering tanpa menyebut bahwa alamatnya adalah proxy.
Seperti apa 'Cannot connect to proxy' dalam Python, curl, Node.js, dan browser?
Kegagalan yang sama dicetak berbeda di setiap alat. Ini adalah pesan yang perlu dicari di log Anda:
- Ditolak:
ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused)) - DNS:
NameResolutionError(... Failed to resolve ...)di dalamProxyError - Kredensial:
OSError('Tunnel connection failed: 407 Proxy Authentication Required') - Error gateway:
OSError('Tunnel connection failed: 502 Bad Gateway') - Node.js:
Error: connect ECONNREFUSED,ETIMEDOUT, atauENOTFOUND, diikuti alamat proxy
Apa penyebab 'Cannot connect to proxy'?
Kemungkinan besar pertama:
- Host atau port salah dalam URL proxy.
- Skema hilang:
host:porttanpahttp://menghasilkan parsing yang mengejutkan di beberapa perpustakaan. - Traffic keluar terblokir di jaringan atau server Anda.
- Kredensial atau error gateway yang muncul saat langkah CONNECT, dibungkus dalam pengecualian yang sama.
- Variabel lingkungan seperti
HTTPS_PROXYyang menunjuk ke proxy lama dan menimpa kode Anda.
Bagaimana cara mendiagnosis 'Cannot connect to proxy' langkah demi langkah?
- Cetak pengecualian lengkap dan baca penyebab bersarang terakhir.
- Cetak variabel
requests.utils.get_environ_proxies(url)atauHTTP_PROXY,HTTPS_PROXYdanNO_PROXYuntuk melihat apa lagi yang dikonfigurasi. - Jalankan tes curl di bawah dari mesin yang sama.
- Cocokkan penyebab dengan daftar solusi di bawah.
# 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:[email protected]: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_URLBagaimana cara memperbaiki 'Cannot connect to proxy'?
- Ditolak atau timeout: perbaiki host dan port, atau buka traffic keluar ke gateway.
- Gagal resolve: periksa DNS di mesin; coba host dengan
nslookup. - 407: perbaiki dan URL-encode kredensial. lihat 407 Proxy Authentication Required.
- 502 atau 504: coba ulang pada exit baru. lihat 502 dan 504.
- Proxy lingkungan yang tidak diinginkan: setel
session.trust_env = Falsedi requests, atau bersihkan variabelnya.
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)Haruskah saya mencoba lagi setelah 'Cannot connect to proxy'?
Hanya ulangi penyebab tingkat jaringan yang bisa berubah: timeout dan error gateway seperti 502 atau 504. Koneksi ditolak, kegagalan DNS, atau 407 akan terus berulang sampai Anda mengubah konfigurasi, jadi anggap itu fatal dalam penanganan error Anda.
Bagaimana Cannot connect to proxy (ProxyError) berlaku untuk CrawlRelay?
Untuk CrawlRelay, URL proxy adalah http://USERNAME:PASSWORD@ diikuti host gateway dan port HTTP yang tertera di bawah, untuk target HTTP dan HTTPS sama-sama. Gunakan URL http:// yang sama untuk kunci http dan https di requests: skema menentukan protokol untuk proxy, bukan untuk situs web.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS melalui CONNECT) dan port 7778 (SOCKS5). Format username: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Terkait: SSL: WRONG_VERSION_NUMBER · 407 · Panduan Python.
Cannot connect to proxy (ProxyError): pertanyaan yang sering ditanyakan pengembang
Apa arti 'Max retries exceeded with url' dengan proxy?
Itu berarti urllib3 menyerah setelah habis jatah percobaan ulang, dan alasan sebenarnya muncul di bagian 'Caused by' pesan. Dengan proxy, bagian itu biasanya ProxyError dengan penyebab bersarang: connection refused, timeout, kegagalan resolve nama, atau status tunnel seperti 407.
Kenapa requests menggunakan proxy yang tidak saya konfigurasi?
requests secara default membaca variabel lingkungan HTTP_PROXY, HTTPS_PROXY dan NO_PROXY, dan di Windows juga membaca pengaturan proxy sistem. Nilai leftover lalu menimpa ekspektasi Anda. Setel session.trust_env = False, atau berikan proxies secara eksplisit di setiap permintaan.
Apakah saya harus menulis http:// atau https:// di depan alamat proxy?
Tulis http:// untuk proxy HTTP, meskipun situsnya menggunakan HTTPS. Skema menggambarkan bagaimana klien Anda berbicara ke proxy. Menulis https:// membuat versi urllib3 baru mulai TLS dengan proxy, yang gagal pada port proxy HTTP biasa dengan error SSL.
Kesalahan proxy lain dalam referensi ini
Kode status HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Kesalahan browser dan klien
Error koneksi dan TLS
Proxy residensial dengan dokumentasi yang membahas kasus kegagalan
Proxy residensial CrawlRelay dari US$0,50/GB, lalu lintas yang tidak pernah kedaluwarsa.