Không cần KYC — không cần ID, không selfie, không giấy tờ. Thanh toán bằng crypto: BTC, USDT, USDC, ETH, SOL, LTC
Ngôn ngữ: Tiếng Việt
Bắt đầu ngay

Tham khảo lỗi proxy · Lỗi trình duyệt và client

ProxyError: 'Không thể kết nối tới proxy' trong Python và Node.js

Lỗi thư viện client (Python, Node.js): thông báo chính xác trong từng công cụ, nguyên nhân có thể theo thứ tự, và cách sửa hiệu quả.

Cập nhật lần cuối: · 5 phút đọc

Trả lời nhanh

Cannot connect to proxy (ProxyError) nghĩa là gì với proxy?

'Không thể kết nối tới proxy' là lỗi bọc: requests và urllib3 của Python đưa nguyên nhân thật vào bên trong nó. Đọc nguyên nhân sâu nhất. 'Kết nối bị từ chối' hoặc hết thời gian chờ nghĩa là vấn đề với host, port hoặc mạng; 'Không phân giải được' nghĩa là DNS; 'Kết nối tunnel thất bại: 407' nghĩa là lỗi xác thực. Với CrawlRelay, mỗi lỗi này có cách sửa chỉ trong một dòng.

Cannot connect to proxy (ProxyError) nhìn nhanh

LỗiCannot connect to proxy (ProxyError)
LoạiLỗi thư viện client (Python, Node.js)
Gửi bởiClient HTTP của bạn, trước hoặc trong khi nói chuyện với proxy
Định nghĩa tạiLibrary error; read the nested cause for the real reason
Thử lại?Phụ thuộc nguyên nhân lồng nhau
Kiểm tra trước tiênĐọc ngoại lệ sâu nhất: bị từ chối, timeout, phân giải tên hoặc mã trạng thái

Cannot connect to proxy (ProxyError) nghĩa là gì?

urllib3 ném ra một ProxyError cho mỗi lỗi liên quan đến proxy, và requests sẽ truyền lỗi đó lên. Thông tin hữu ích nằm trong ngoại lệ lồng nhau, mà traceback hiển thị ở cuối dòng dài.

Các client Node.js hành xử khác nhau: họ báo lỗi socket trực tiếp, như ECONNREFUSED hoặc ETIMEDOUT, thường không nói rõ địa chỉ là proxy.

'Cannot connect to proxy' trông như thế nào trong Python, curl, Node.js và trình duyệt?

Cùng một lỗi nhưng hiển thị khác nhau trên mỗi công cụ. Đây là các thông báo bạn nên tìm trong nhật ký của mình:

  • Từ chối: ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))
  • DNS: NameResolutionError(... Failed to resolve ...) bên trong ProxyError
  • Xác thực: OSError('Tunnel connection failed: 407 Proxy Authentication Required')
  • Lỗi gateway: OSError('Tunnel connection failed: 502 Bad Gateway')
  • Node.js: Error: connect ECONNREFUSED, ETIMEDOUT hoặc ENOTFOUND, theo sau là địa chỉ proxy

Nguyên nhân gây ra 'Cannot connect to proxy' là gì?

Khả năng đầu tiên là:

  • Sai host hoặc port trong URL proxy.
  • Thiếu scheme: host:port không có http:// được phân tích theo cách bất ngờ bởi một số thư viện.
  • Bị chặn lưu lượng ra ngoài trên mạng hoặc server của bạn.
  • Lỗi xác thực hoặc gateway xuất hiện trong bước CONNECT, bọc trong cùng ngoại lệ.
  • Biến môi trường như HTTPS_PROXY trỏ tới proxy cũ và ghi đè mã của bạn.

Làm sao để chẩn đoán 'Cannot connect to proxy' từng bước?

  1. In ra đầy đủ ngoại lệ và đọc nguyên nhân lồng cuối cùng.
  2. In ra requests.utils.get_environ_proxies(url) hoặc các biến HTTP_PROXY, HTTPS_PROXY và NO_PROXY để xem còn cấu hình gì.
  3. Chạy thử curl bên dưới từ cùng máy.
  4. So sánh nguyên nhân với danh sách sửa lỗi bên dưới.
Kiểm tra URL bị lỗi với curl (cổng HTTP, chi tiết)
# 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

Làm sao để sửa 'Cannot connect to proxy'?

  • Từ chối hoặc hết thời gian: sửa host và port, hoặc mở lưu lượng ra ngoài đến gateway.
  • Không phân giải được: kiểm tra DNS trên máy; thử host với nslookup.
  • 407: sửa và mã hóa URL cho thông tin xác thực. Xem 407 Proxy Authentication Required.
  • 502 hoặc 504: thử lại với exit mới. Xem 502 và 504.
  • Proxy biến môi trường không mong muốn: đặt session.trust_env = False trong requests, hoặc xóa biến.
Python: tạo URL proxy với thông tin đăng nhập được mã hóa
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)

Có nên thử lại sau 'Cannot connect to proxy' không?

Chỉ thử lại với nguyên nhân tầng mạng có thể thay đổi: hết thời gian và lỗi gateway như 502 hoặc 504. Kết nối bị từ chối, lỗi DNS hoặc 407 sẽ lặp lại cho đến khi bạn thay đổi cấu hình, nên xử lý như lỗi nghiêm trọng.

Cannot connect to proxy (ProxyError) áp dụng thế nào với CrawlRelay?

Với CrawlRelay, URL proxy là http://USERNAME:PASSWORD@ theo sau là host gateway và port HTTP liệt kê dưới đây, dùng chung cho HTTP và HTTPS. Dùng URL http:// giống nhau cho cả khóa http và https trong requests: scheme xác định giao thức nói chuyện với proxy, không phải với website.

Gateway: gw.crawlrelay.com, cổng 7777 (HTTP, HTTPS qua CONNECT) và cổng 7778 (SOCKS5). Định dạng tên người dùng: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Tham khảo liên quan: SSL: WRONG_VERSION_NUMBER · 407 · Hướng dẫn Python.

Cannot connect to proxy (ProxyError): các câu hỏi thường gặp của lập trình viên

'Max retries exceeded with url' có nghĩa gì với proxy?

Nó nghĩa là urllib3 đã từ bỏ sau khi dùng hết số lần thử, và nguyên nhân thật sẽ nằm trong phần 'Caused by' của thông báo. Với proxy, phần đó thường là ProxyError có nguyên nhân lồng: kết nối bị từ chối, hết thời gian, lỗi phân giải tên hoặc trạng thái tunnel như 407.

Tại sao requests lại dùng proxy mà tôi không cấu hình?

requests mặc định đọc biến môi trường HTTP_PROXY, HTTPS_PROXY và NO_PROXY, và trên Windows nó còn đọc cài đặt proxy hệ thống. Giá trị còn sót lại sẽ ghi đè mong đợi của bạn. Gán session.trust_env = False hoặc truyền proxy rõ ràng ở mỗi yêu cầu.

Tôi có phải viết http:// hay https:// trước địa chỉ proxy?

Viết http:// cho proxy HTTP, dù website dùng HTTPS. Scheme mô tả cách client nói chuyện với proxy. Viết https:// khiến phiên bản urllib3 mới hơn bắt đầu TLS với proxy, gây lỗi SSL trên port proxy HTTP thường.

Các lỗi proxy khác trong tài liệu tham khảo này

Mã trạng thái HTTP

Lỗi trình duyệt và client

Lỗi kết nối và TLS

Proxy dân cư với tài liệu bao gồm các trường hợp lỗi

CrawlRelay proxy dân cư từ 0,50 US$/GB, lưu lượng không bao giờ hết hạn.

Từ 0,50 US$/GB · không cần KYC

Bắt đầu ngay