เอเจนต์ที่รองรับ SOCKS สามารถสร้างการเชื่อมต่อปลายทางสำหรับไคลเอนต์ HTTPS หลักของ Node เมื่อมี socks-proxy-agent ในแอปพลิเคชัน:

const https = require('node:https');
const { SocksProxyAgent } = require('socks-proxy-agent');

const agent = new SocksProxyAgent('socks5h://proxy.example:1080');
const request = https.get('https://www.example.com/', {
  agent,
  signal: AbortSignal.timeout(15000),
}, (response) => {
  console.log(response.statusCode);
  response.on('error', console.error);
  response.resume();
});
request.on('error', console.error);

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

เลือกตำแหน่งที่จะแก้ชื่อปลายทาง

ในการจัดการ URL ของ socks-proxy-agent นั้น socks5h ปล่อยให้การแก้ชื่อโฮสต์ปลายทางเป็นของเส้นทางพร็อกซี ส่วน socks5 แก้ไขในเครื่อง สิ่งนี้สำคัญเมื่อชื่อมีอยู่เฉพาะบนเครือข่ายของพร็อกซี

URL ของ HTTPS รักษาอัตลักษณ์ของเว็บไซต์ เอเจนต์ทำการเจรจา SOCKS ก่อนที่ Node จะเริ่ม TLS ไปยังเว็บไซต์นั้น

สำหรับบริการที่ใช้ชื่อผู้ใช้/รหัสผ่าน ให้ใส่ข้อมูลรับรองใน URL ของพร็อกซีโดยใช้การเข้ารหัสองค์ประกอบ URI สำหรับอักขระที่สงวนไว้ เก็บ URL ทั้งหมดไว้นอกบันทึก หัวข้อ Authorization ของปลายทางเป็นของบัญชีเว็บไซต์

เอเจนต์นี้ทำงานกับ API คำขอ HTTP/HTTPS หลักของ Node fetch ของ Node ใช้อินเทอร์เฟซตัวส่ง ดังนั้นกำหนดค่าการรวม SOCKS ที่รองรับของไคลเอนต์นั้นแยกต่างหาก

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