อะแดปเตอร์ Node HTTP ของ Axios รับออบเจ็กต์พร็อกซี HTTP ที่มีโฮสต์และพอร์ตเป็นตัวเลข:

import axios from 'axios';

const response = await axios.get('https://example.com/', {
  adapter: 'http',
  proxy: {
    protocol: 'http',
    host: '203.0.113.10',
    port: 8080,
  },
  timeout: 15000,
});

console.log(response.status);

แทนที่จุดปลายสำหรับเอกสารด้วยรายการ HTTP จากบริการหรือรายการพร็อกซี HTTP ตัวอย่างใช้ Node ส่วน Axios ในเบราว์เซอร์เลือกพร็อกซีเครือข่ายของเบราว์เซอร์ผ่านตัวเลือกเหล่านี้ไม่ได้ ช่อง host รับที่อยู่โดยไม่มีสกีม URL

protocol ของออบเจ็กต์พร็อกซีอธิบายตัวรับฟังของมัน ใน Axios 1.21.0 อะแดปเตอร์ Node HTTP ใช้ CONNECT สำหรับเป้าหมาย HTTPS แล้วเจรจา TLS กับเซิร์ฟเวอร์ต้นทางผ่านอุโมงค์ รุ่นเก่าเคยใช้เส้นทางพร็อกซีต่างกัน ดังนั้นเวอร์ชันที่ติดตั้งจึงสำคัญ

URL SOCKS ต้องใช้ SOCKS agent

ออบเจ็กต์พร็อกซี HTTP ไม่ได้เลือก SOCKS ให้ใช้ agent ที่เข้ากันได้แทน:

npm install [email protected] [email protected]
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';

const agent = new SocksProxyAgent('socks5h://203.0.113.10:1080');

try {
  const response = await axios.get('https://example.com/', {
    adapter: 'http',
    httpAgent: agent,
    httpsAgent: agent,
    proxy: false,
    timeout: 15000,
  });
  console.log(response.status);
} finally {
  agent.destroy();
}

proxy: false ปิดการจัดการพร็อกซี HTTP ของ Axios สำหรับเส้นทางที่ SOCKS agent ให้มา การระบุ agent สำหรับทั้งปลายทาง HTTP และ HTTPS ครอบคลุมสองสกีม ที่นี่ socks5h มอบ DNS ของปลายทางให้ฝั่ง SOCKS เซิร์ฟเวอร์ที่เลือกต้องรองรับโปรโตคอลนั้น

อ่านความล้มเหลว

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

สำหรับพร็อกซี HTTP ที่ต้องยืนยันตัวตน ให้ใช้ช่อง auth ของออบเจ็กต์พร็อกซีกับข้อมูลรับรองจากผู้ดูแล การตั้งค่าการยืนยันตัวตนของปลายทางใช้กับอีกฝ่ายหนึ่ง

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