Bên trong quá trình khởi tạo libcurl sẵn có của ứng dụng và vòng đời easy-handle:

curl_easy_setopt(handle, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(handle, CURLOPT_PROXY, "127.0.0.1:1080");
curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
curl_easy_setopt(handle, CURLOPT_NOPROXY, "");
curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 5L);
curl_easy_setopt(handle, CURLOPT_TIMEOUT, 15L);

CURLPROXY_SOCKS5_HOSTNAME gửi tên máy chủ của đích theo đường SOCKS. CURLPROXY_SOCKS5 thay vào đó phân giải nó ở máy khách, nơi có thể dùng góc nhìn DNS của mạng khác. Một máy khách HTTP bằng C++ dùng libcurl không cần tự bắt tay SOCKS chỉ để chọn tuyến này. Đối với một điểm cuối công khai được phép, danh sách proxy SOCKS5 cung cấp các ứng viên máy chủ và cổng để thay thế trình lắng nghe loopback minh họa.

Giá trị CURLOPT_NOPROXY rỗng khiến việc kiểm tra proxy trở nên có chủ đích. Giữ nguyên các đường vòng dự kiến khi điều chỉnh theo chính sách ứng dụng thông thường. Các tùy chọn này chỉ ảnh hưởng đến handle này; thư viện và socket khác trong tiến trình không kế thừa chúng.

Kiểm tra giá trị trả về của việc đặt tùy chọn và truyền qua xử lý lỗi của ứng dụng. Việc không đạt tới hoặc thương lượng với SOCKS có thể xảy ra trước mọi phản hồi HTTP, vì vậy nó không cung cấp mã trạng thái trang web.

Thông tin đăng nhập proxy cần thiết dùng cài đặt xác thực proxy được hỗ trợ và cơ chế bí mật, tách biệt với đăng nhập của trang web. Giữ bật xác minh TLS: mở kết nối qua SOCKS không xác lập danh tính của dịch vụ HTTPS.

Bài viết liên quan