วิธีตั้งค่าพร็อกซีใน Node.js (Axios และ Native Fetch)
อัปเดตเมื่อ:
ตัวเลือก proxy: { host, port } ในตัวของ Axios จะไม่ทำงานเมื่อเชื่อมต่อไปยังเป้าหมาย https:// เนื่องจากไม่ได้เปิดทันเนล HTTP CONNECT ดังนั้นเพื่อกำหนดเส้นทางคำขอ Node.js และ TypeScript ผ่าน HTTP(S) พร็อกซีที่ต้องยืนยันตัวตนของ VinaProxy ได้อย่างถูกต้อง ให้ส่ง HttpsProxyAgent (https-proxy-agent) ไปยัง Axios หรือใช้ตัวจ่ายคำขอ undici.ProxyAgent บนฟังก์ชัน fetch() ดั้งเดิมของ Node
new HttpsProxyAgent('http://user:pass@ip:port')- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
- 1 IP₫40,000
- 5+ IP₫35,000
- 10+ IP₫25,000
- 20+ IP₫25,000
- 50+ IP₫25,000
- 100+ IP₫25,000
- 200+ IP₫25,000
- 500+ IP₫25,000
- 1000+ IP₫22,000
- 2000+ IP₫20,000
เปรียบเทียบการตั้งค่าพร็อกซีระหว่าง Axios และ fetch() ใน Node.js
ทั้งสองแพ็กเกจรองรับสตริง URL มาตรฐานในรูปแบบ http://user:pass@ip:port จากแดชบอร์ด VinaProxy โดยตรง:
| ไคลเอนต์ HTTP | แพ็กเกจ NPM | ตัวอย่างโค้ดที่แนะนำ |
|---|---|---|
| Axios | npm i https-proxy-agent | axios.get(url, { httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port'), proxy: false }) |
Native fetch (Node 18+) | npm i undici | fetch(url, { dispatcher: new ProxyAgent('http://user:pass@ip:port') }) |
| Got | npm i hpagent | got(url, { agent: { https: new HttpsProxyAgent({ proxy: 'http://user:pass@ip:port' }) } }) |
การนำการเชื่อมต่อกลับมาใช้ใหม่ (Connection Pooling) และการจัดการหมดเวลาใน Node.js
- ต้องระบุ
proxy: falseควบคู่กับhttpsAgentใน Axios เสมอ เพื่อไม่ให้ Axios ดึงค่าจากตัวแปรสภาพแวดล้อมHTTP_PROXYของระบบปฏิบัติการ - สร้างอินสแตนซ์
HttpsProxyAgentหรือProxyAgentเพียงครั้งเดียวต่อหนึ่ง IP นอกลูป เพื่อนำซ็อกเก็ต TCP keep-alive กลับมาใช้ซ้ำได้อย่างมีประสิทธิภาพ - ส่งออกรายการพร็อกซี VinaProxy เป็น JSON Array โดยตรงผ่าน เครื่องมือแปลงรูปแบบพร็อกซี ของเรา
ขั้นตอนทีละขั้น
- 1
ติดตั้ง https-proxy-agent (หรือ undici)
รันคำสั่ง
npm install axios https-proxy-agentในโฟลเดอร์โปรเจกต์ Node.js ของคุณ - 2
สร้างอินสแตนซ์ HttpsProxyAgent
เริ่มต้นด้วย
const agent = new HttpsProxyAgent('http://user:pass@ip:port');โดยใช้ข้อมูลจาก VinaProxy - 3
ส่ง httpsAgent และ proxy: false ไปยัง Axios
เรียกใช้งาน
const res = await axios.get('https://vinaproxy.com/api/my-ip', { httpsAgent: agent, proxy: false, timeout: 10000 }); - 4
ตรวจสอบ IP ขาออก
พิมพ์ค่า
res.dataเพื่อยืนยันว่าการตอบกลับส่งผ่านหมายเลข IP พร็อกซีเฉพาะของคุณเรียบร้อยแล้ว
คำถามที่พบบ่อย
ทำไมตัวเลือก proxy: { host, port, auth } ดั้งเดิมของ Axios ถึงใช้งานกับ HTTPS ไม่ได้?
เพราะการตั้งค่าเริ่มต้นของ Axios จะส่งคำขอแบบ HTTP ธรรมดาโดยไม่ยอมเปิดทันเนล TLS แบบ HTTP CONNECT การเปลี่ยนมาใช้ httpsAgent: new HttpsProxyAgent('http://user:pass@ip:port') ร่วมกับ proxy: false จะแก้ไขปัญหานี้ได้อย่างสมบูรณ์
ใช้งานพร็อกซีร่วมกับคำสั่ง fetch() ดั้งเดิมใน Node.js 18/20/22 อย่างไร?
นำเข้า ProxyAgent จากแพ็กเกจ undici แล้วส่ง { dispatcher: new ProxyAgent('http://user:pass@ip:port') } ในออบเจกต์ตัวเลือกของ fetch()
สามารถแปลงรายการพร็อกซีเป็นไฟล์ JSON สำหรับ Node.js ได้หรือไม่?
ได้ นำรายการ ip:port:user:pass มาวางใน เครื่องมือแปลงรูปแบบพร็อกซี ฟรีของเรา แล้วเลือกเอาต์พุตเป็น JSON
เสริมความแข็งแกร่งให้แบ็กเอนด์และบอท Node.js ด้วย IP แบบคงที่ส่วนตัว
Dedicated IPv4 และ Static ISP พร็อกซีไม่จำกัดการใช้งาน ครอบคลุม 7 ประเทศทั่วโลก
ซื้อพร็อกซีสำหรับ Node.js