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 аб’екта проксі з данымі, якія даў аператар. Налады аўтэнтыфікацыі мэты прызначаны іншаму боку.