ภายในลิขิตการเริ่มต้น libcurl ที่มีอยู่ของแอปพลิเคชันและวงจรชีวิตของ 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 ส่งชื่อโฮสต์ของปลายทางไปตามเส้นทาง SOCKS CURLPROXY_SOCKS5 แทนที่จะแก้ชื่อนั้นที่ไคลเอนต์ ซึ่งอาจใช้มุมมอง DNS ของเครือข่ายอื่น ไคลเอนต์ HTTP ภาษา C++ ที่ใช้ libcurl ไม่จำเป็นต้องทำ SOCKS handshake ของตัวเองเพียงเพื่อเลือกเส้นทางนี้ สำหรับปลายทางสาธารณะที่ได้รับอนุญาต รายการพร็อกซี SOCKS5 มีผู้สมัครโฮสต์และพอร์ตเพื่อแทนที่ตัวรับฟัง loopback ตามตัวอย่าง

ค่า CURLOPT_NOPROXY ว่างทำให้การทดสอบพร็อกซีเป็นไปโดยเจตนา รักษาการข้ามที่ตั้งใจไว้เมื่อปรับให้เข้ากับนโยบายปกติของแอปพลิเคชัน ตัวเลือกเหล่านี้มีผลกับ handle นี้เท่านั้น ไลบรารีและซ็อกเก็ตอื่นในโปรเซสไม่ได้รับสืบทอด

ตรวจสอบค่าที่ส่งคืนของการตั้งค่าตัวเลือกและการรับส่งผ่านการจัดการข้อผิดพลาดของแอปพลิเคชัน ความล้มเหลวในการไปถึงหรือเจรจากับ SOCKS อาจเกิดขึ้นก่อนการตอบกลับ HTTP ใด ๆ จึงไม่ให้รหัสสถานะของเว็บไซต์

ข้อมูลรับรองพร็อกซีที่จำเป็นใช้การตั้งค่าการตรวจสอบสิทธิ์พร็อกซีที่รองรับและกลไกความลับ แยกจากการเข้าสู่ระบบของเว็บไซต์ เปิดการตรวจสอบ TLS ไว้: การเปิดการเชื่อมต่อผ่าน SOCKS ไม่ได้ยืนยันตัวตนของบริการ HTTPS

บทความที่เกี่ยวข้อง