HTTP- і SOCKS-проксі в Axios для Node.js
Налаштуйте HTTP-проксі в Node HTTP-адаптері Axios або використовуйте SOCKS-агент, якщо обраний IP є SOCKS-вузлом.
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 з початковим сервером через тунель. Старі випуски використовували інші шляхи через проксі, тому встановлена версія важлива.
Для SOCKS URL потрібен SOCKS-агент
Об’єкт HTTP-проксі не обирає SOCKS. Використовуйте сумісний агент:
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-агент. Зазначення агента для HTTP- і HTTPS-цілей охоплює обидві схеми. Тут socks5h передає DNS цілі стороні SOCKS; обраний сервер має підтримувати цей протокол.
Розбір помилок
Помилка Axios може містити відповідь, якщо сайт повернув неуспішний статус. За відсутності відповіді перевірте код помилки й деталі з’єднання. Відсутній модуль, непідтримуваний протокол або несумісна версія Node можуть спричинити збій до того, як запит досягне вузла.
Для HTTP-проксі з автентифікацією використовуйте поле auth об’єкта проксі з даними оператора. Налаштування автентифікації цілі призначені іншій стороні.