Tùy chọn --preproxy của curl kết nối tới proxy SOCKS trước khi tới proxy HTTP hoặc HTTPS. Nó hỗ trợ chuỗi cụ thể này, không phải danh sách tùy ý các máy chủ proxy.

Đường đi là máy khách → endpoint SOCKS → proxy HTTP → đích. Thay cả hai endpoint tài liệu trong lệnh:

curl --preproxy socks5h://203.0.113.10:1080 --proxy http://203.0.113.20:8080 --noproxy '' --connect-timeout 5 --max-time 20 --verbose https://example.com/

Dịch vụ SOCKS phải tới được địa chỉ và cổng của proxy HTTP. Sau đó proxy HTTP phải chấp nhận yêu cầu tới đích. Nếu proxy thứ hai dùng tên máy chủ, chế độ SOCKS đầu tiên quyết định nơi phân giải tên đó; endpoint dạng số tránh lần tra cứu này.

Tìm chặng bị lỗi

Trước tiên xác nhận yêu cầu qua từng endpoint riêng; với chặng HTTP dùng phép thử proxy HTTP có giới hạn thời gian. Dù cả hai hoạt động, đường kết hợp vẫn có thể lỗi vì proxy đầu tiên không tới được proxy thứ hai.

Đọc dấu vết chi tiết theo thứ tự kết nối. Lỗi SOCKS khi tới proxy thứ hai xảy ra trước quyết định của proxy HTTP chấp nhận hay từ chối CONNECT tới trang web. Ghi lại bắt tay nào thất bại.

Khi nào chặng bổ sung hữu ích

Cách bố trí này có thể hữu ích khi proxy HTTP được phép dùng có thể truy cập qua đường SOCKS. Nó cũng thêm một dịch vụ và tuyến mạng có thể lỗi hoặc gây trễ. Nối các endpoint từ danh sách proxy công cộng không bảo đảm độ tin cậy hay tính ẩn danh và vẫn đòi hỏi tin tưởng các bên xử lý kết nối.

--preproxy yêu cầu curl 7.52.0 trở lên; ứng dụng khác có thể không hỗ trợ cùng cách bố trí.

Bài viết liên quan