Hızlı cevap
Konut proxy ile Cannot connect to proxy (ProxyError) ne anlama gelir?
'Proxyye bağlanılamıyor' sarmalayıcı bir hatadır: Python'un requests ve urllib3 kütüphaneleri gerçek nedeni içinde taşır. En içteki nedeni okuyun. 'Bağlantı reddedildi' veya zaman aşımı, host, port veya ağ sorununu; 'Çözümlenemedi' DNS sorununu; 'Tünel bağlantısı başarısız: 407' ise kimlik bilgisi sorununu gösterir. CrawlRelay ile her biri için tek satırlık bir çözüm vardır.
Cannot connect to proxy (ProxyError) hızlı bakış
| Hata | Cannot connect to proxy (ProxyError) |
|---|---|
| Tür | İstemci kitaplığı hatası (Python, Node.js) |
| Gönderen | Proxy ile bağlantı kurmadan önce veya kurarken HTTP istemciniz |
| Tanımlandığı yer | Library error; read the nested cause for the real reason |
| Tekrar denemek ister misiniz? | İçteki nedeni bağlı olarak değişir |
| İlk kontrol | En içteki istisnayı okuyun: reddedildi, zaman aşımı, isim çözümleme veya bir durum kodu |
Cannot connect to proxy (ProxyError) ne anlama gelir?
urllib3, proxy ile ilgili her hata için bir ProxyError oluşturur ve requests bunu iletir. Faydalı bilgi, traceback'in uzun satır sonunda yazdırdığı iç içe geçmiş istisnede bulunur.
Node.js istemciler farklı davranır: genellikle doğrudan soket hatasını raporlarlar, mesela ECONNREFUSED veya ETIMEDOUT gibi, çoğunlukla adresin proksi olduğu belirtilmeden.
Python, curl, Node.js ve tarayıcılarda 'Cannot connect to proxy' nasıl görünür?
Aynı başarısızlık her araçta farklı şekilde görünür. Loglarınızda aramanız gereken mesajlar şunlardır:
- Reddedildi:
ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused)) - DNS:
NameResolutionError(... Failed to resolve ...)içindeProxyError - Kimlik Bilgileri:
OSError('Tunnel connection failed: 407 Proxy Authentication Required') - Geçit Hatası:
OSError('Tunnel connection failed: 502 Bad Gateway') - Node.js:
Error: connect ECONNREFUSED,ETIMEDOUTya daENOTFOUND, ardından proxy adresi
'Cannot connect to proxy' neden olur?
Öncelikle en olası sebep:
- Proksi URL'sinde Yanlış host veya port.
- Eksik protokol (scheme):
host:port'ninhttp://olmadan olması bazı kütüphaneler tarafından şaşırtıcı şekilde yorumlanır. - Ağınızda veya sunucunuzda Çıkış trafiğinin engellenmesi.
- CONNECT aşamasında ortaya çıkan kimlik bilgileri veya geçit hataları, aynı istisna içinde sarmalanır.
- Kodunuzu geçersiz kılan eski proxyyi işaret eden
HTTPS_PROXYgibi çevre değişkenleri.
'Cannot connect to proxy' nasıl adım adım teşhis edilir?
- Tam istisnayı yazdırın ve en son içteki nedeni okuyun.
- Yapılandırılmış olan
requests.utils.get_environ_proxies(url)veyaHTTP_PROXY,HTTPS_PROXYveNO_PROXYdeğişkenlerini yazdırın. - Aşağıdaki curl testini aynı makinede çalıştırın.
- Nedeni aşağıdaki çözüm listesiyle eşleştirin.
# 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_URL'Cannot connect to proxy' nasıl düzeltilir?
- Reddedildi veya zaman aşımı: host ve portu düzeltin ya da geçite giden çıkış trafiğini açın.
- Çözümlenemedi: makinedeki DNS'i kontrol edin;
nslookupile hostu deneyin. - 407: kimlik bilgilerini düzeltin ve URL kodlayın. 407 Proxy Authentication Required sayfasına bakın.
- 502 veya 504: yeni çıkışta tekrar deneyin. 502 ve 504 sayfalarına göz atın.
- İstenmeyen çevre proxy'si: requests'de
session.trust_env = Falseayarlayın veya değişkenleri temizleyin.
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' sonrası tekrar denenmeli mi?
Sadece değişebilen ağ düzeyi nedenleri tekrar deneyin: zaman aşımı ve 502 ya da 504 gibi geçit hataları. Reddedilen bağlantı, DNS hatası veya 407 yapılandırmayı değiştirene kadar tekrar eder, bu yüzden bunları hata yönetiminde kritik yapın.
Cannot connect to proxy (ProxyError) CrawlRelay için nasıl geçerli?
CrawlRelay için proxy URL'si, HTTP ve HTTPS hedefler için aşağıda listelenen geçit hostu ve HTTP portundan sonra gelen http://USERNAME:PASSWORD@'dir. requests'de http ve https anahtarlarında aynı http:// URL'sini kullanın: scheme, proxy ile konuşulan protokolü belirtir, web sitesine değil.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS CONNECT üzerinden) ve port 7778 (SOCKS5). Kullanıcı adı formatı: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. İlgili: SSL: WRONG_VERSION_NUMBER · 407 · Python rehberi.
Cannot connect to proxy (ProxyError): geliştiricilerin sorduğu sorular
Proxy ile 'Max retries exceeded with url' ne anlama gelir?
Bu, urllib3'ün tekrar deneme bütçesini aştığını ve gerçek nedenin mesajın 'Caused by' kısmında yer aldığını gösterir. Proxy kullanılırken, bu kısım genellikle ProxyError'dür ve içteki neden bağlantı reddi, zaman aşımı, isim çözümleme hatası veya 407 gibi tünel durumu olur.
requests neden benim yapılandırmadığım bir proxy kullanıyor?
requests varsayılan olarak HTTP_PROXY, HTTPS_PROXY ve NO_PROXY çevre değişkenlerini okur, ayrıca Windows'ta sistem proxy ayarlarını da alır. Kalan bir değer beklentilerinizi geçersiz kılar. session.trust_env = False'ü ayarlayın ya da proxyleri her istekte açıkça belirtin.
Proxy adresinin önüne http:// mı yoksa https:// mi yazmalıyım?
Sitede HTTPS kullanılsa bile HTTP proxy için http:// yazın. Scheme, istemcinizin proxy ile nasıl konuştuğunu belirtir. https:// yazmak, yeni urllib3 sürümlerinde proxy ile TLS başlatır; bu ise HTTP proxy portunda SSL hatasıyla başarısız olur.
Bu referanstaki diğer proxy hataları
HTTP durum kodları
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Tarayıcı ve istemci hataları
Bağlantı ve TLS hataları
Başarısızlık durumları için dokümanlı konut proxy'ler
$0,50/GB sitesinden süresi hiç bitmeyen CrawlRelay konut proxy