HTTP- и SOCKS-прокси в Axios для Node.js
Настройте HTTP-прокси в HTTP-адаптере Axios для Node или используйте SOCKS-агент, если выбранный IP относится к SOCKS-серверу.
HTTP-адаптер Axios для Node принимает объект 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 HTTP-адаптер Node использует 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 объекта прокси с данными, предоставленными оператором. Настройки аутентификации целевого сервера относятся к другой стороне.