В этом руководстве по прокси Axios будут рассмотрены следующие темы:
- Почему вы должны использовать прокси в Axios.
- Как установить HTTP, HTTPS или SOCKS прокси с помощью Axios.
- Как работать с аутентификацией и ротацией прокси.
Что такое Axios и почему вам нужен прокси?
Axios – один из самых распространенных HTTP-клиентов в экосистеме JavaScript. Он предлагает Promise-based, простой в использовании, интуитивно понятный API для выполнения HTTP-запросов и работы с пользовательскими заголовками, конфигурациями и cookies.
Зачем вам нужен прокси в Axios? Все просто! Направляя запросы через прокси, вы можете замаскировать свой IP-адрес, чтобы целевому серверу было сложнее вас идентифицировать и заблокировать. Этот дополнительный уровень конфиденциальности помогает сохранить целостность вашего приложения и избежать IP-запретов или ограничений. Вы можете достичь того же результата с помощью Fetch, как описано в нашем руководстве по прокси node-fetch.
Использование прокси в Axios
В этом разделе мы рассмотрим, как установить HTTP, HTTPS или SOCKS прокси в Axios.
Пререквизиты
Во-первых, вам нужно убедиться, что пакет axios
npm установлен. Добавьте его в зависимости вашего проекта с помощью:
npm install axios
В Node.js Axios нативно поддерживает HTTP и HTTPS прокси через конфигурацию прокси
. Так что если вы хотите использовать HTTP/HTTPS-прокси с Axios в Node.js-приложении, вы готовы к работе!
Если вы хотите использовать прокси не по протоколу HTTP/S, то вам следует обратиться к проекту Proxy Agents. Он предоставляет реализации http.Agent для интеграции Axios с прокси в различных протоколах. В деталях, различные библиотеки npm, предлагаемые проектом, классифицируются по протоколам:
- Прокси HTTP и HTTPS:
https-proxy-agent
- SOCKS, SOCKS5, и SOCKS4:
socks-proxy-agent
- PAC-*: pac-proxy-agent
Потрясающе! Вы готовы к установке прокси в Axios!
Прокси HTTP/HTTPS
Вот как должен выглядеть URL вашего прокси HTTP/HTTPS:
"<PROXY_PROTOCOL>://<PROXY_HOST>:<PROXY_PORT>"
Например, предположим, что это URL-адрес вашего HTTP-прокси:
"http://47.88.62.42:80"
Вы можете установить этот прокси в Axios следующим образом:
axios.get(targetURL, {
proxy: {
protocol: "http",
host: "48.88.62.42",
port: "80"
}
})
Как видите, все сводится к тому, чтобы разделить URL прокси на две части и правильно указать их в конфигурации прокси. Теперь Axios будет выполнять запрос к URL, переданному в качестве параметра, через указанный HTTP-прокси-сервер.
Давайте проверим, работает ли описанный выше подход с прокси Axios!
Получите URL-адрес HTTP- или HTTPS-прокси-сервера бесплатно в Интернете. Например, посмотрите на этот
Protocol: HTTP; IP Address: 52.117.157.155; Port: 8002
Полный URL прокси-сервера будет “http://52.117.157.155:8002″.
Чтобы убедиться, что прокси работает так, как ожидалось, вы можете обратиться к конечной точке /ip из проекта HTTPBin. Этот публичный API возвращает IP входящего запроса, поэтому он должен возвращать IP прокси-сервера.
Фрагмент сценария Node.js будет выглядеть так:
import axios from "axios"
async function testProxy() {
// perform the desired request through the HTTP proxy
const response = axios.get("https://httpbin.io/ip", {
proxy: {
protocol: "http",
host: "52.117.157.155",
port: "8002"
}
})
// print the result
console.log(response.data)
}
testProxy()
Выполните скрипт, и он должен записать в журнал:
{ "origin": "52.117.157.155" }
Это тот же IP, что и у прокси-сервера, что означает, что прокси-сервер работает, как и ожидалось, и ваш IP в безопасности!
К сожалению, при запуске скрипта вы не получите того же результата. Более того, он завершится с ошибкой. Почему? Потому что бесплатные прокси недолговечны и ненадежны! Вы можете использовать их в учебных целях, но не можете полагаться на них в реальном мире.
Предупреждение: Бесплатные прокси-сервисы ненадежны, медленны, допускают ошибки, жадны до данных и недолговечны. Избегайте их!
Решение? Премиальные прокси от Bright Data, лучшего провайдера на рынке. Подпишитесь и попробуйте наши надежные прокси бесплатно.
Прокси SOCKS
Если вы попытаетесь задать строку “socks” в поле протокола объекта proxy config, вы получите следующую ошибку:
AssertionError [ERR_ASSERTION]: protocol mismatch
// ...
{
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: 'dada:',
expected: 'http:',
operator: '=='
}
Это происходит потому, что Axios не поддерживает прокси SOCKS. Таким образом, для достижения желаемого результата требуется дополнительная зависимость.
Добавьте библиотеку socks-proxy-agent
npm в зависимости вашего проекта с помощью следующей команды:
npm install socks-proxy-agent
Этот пакет позволяет подключаться к прокси сервер SOCKS при выполнении HTTP или HTTPS запросов в Axios.
Затем импортируйте реализацию агента прокси сервера SOCKS из библиотеки:
const SocksProxyAgent = require("socks-proxy-agent")
Или, если вы являетесь пользователем ESM:
import { SocksProxyAgent } from "socks-proxy-agent"
Предположим, это URL-адрес вашего прокси SOCKS:
"socks://183.88.74.73:4153"
Обратите внимание, что протокол прокси может быть одним из значений: “socks”, “socks5”, “socks4”.
Сохраните его в переменной и передайте в конструктор SocksProxyAgent
:
const proxyURL = "socks://183.88.74.73:4153"
const proxyAgent = new SocksProxyAgent(proxyURL)
SocksProxyAgent()
инициализирует экземпляр http.Agent
для выполнения запросов HTTP/HTTPS через прокси URL.
Теперь вы можете использовать прокси SOCKS с Axios следующим образом:
axios.get(targetURL, {
httpAgent: proxyAgent,
httpsAgent: proxyAgent
})
httpAgent и httpsAgent определяют пользовательский агент, который будет использоваться при выполнении запросов HTTP и HTTPS, соответственно. Другими словами, запрос HTTP или HTTPS, выполняемый Axios, будет проходить через указанный прокси SOCKS. Аналогичным образом, вы можете использовать пакет https-proxy-agent
в качестве альтернативного способа установки HTTP/HTTPS прокси в Axios.
Соберите все вместе:
import axios from "axios"
import { SocksProxyAgent } from "socks-proxy-agent"
async function testProxy() {
// replace with the URL of your SOCKS proxy
const proxyURL = "socks://183.88.74.73:4153"
// define the HTTP/HTTPS proxy agent
const proxyAgent = new SocksProxyAgent(proxyURL)
// perform the request via the SOCKS proxy
const response = await axios.get("https://httpbin.io/ip", {
httpAgent: proxyAgent,
httpsAgent: proxyAgent
})
// print the result
console.log(response.data) // { "origin": "183.88.74.73" }
}
testProxy()
Перейдите по ссылке, чтобы посмотреть другие примеры настройки прокси SOCKS в Axios.
Прокси Axios: Расширенные сценарии использования
Теперь, когда вы знаете основы интеграции прокси Axios, вы готовы перейти к более сложным техникам.
Глобальная настройка прокси
Вы можете настроить прокси глобально, указав его непосредственно в экземпляре Axios:
const axiosInstance = axios.create({
proxy: {
protocol: "<PROXY_PROTOCOL>",
host: "<PROXY_HOST>",
port: "<PROXY_PORT>"
},
// other configs...
})
Или если вы являетесь пользователем Proxy Agents:
// proxy Agent definition ...
const axiosInstance = axios.create({
httpAgent: proxyAgent,
httpsAgent: proxyAgent
})
Все запросы, сделанные с помощью axiosInstance
, теперь будут автоматически проходить через указанный прокси.
Работа с аутентификацией через прокси в Axios
Чтобы предоставить доступ к премиальным прокси только платным пользователям, провайдеры защищают их с помощью аутентификации. Попытка подключиться к аутентифицированному прокси без имени пользователя и пароля приведет к ошибке 407 Proxy Authentication Required.
В частности, вот синтаксис URL-адреса аутентифицированного прокси:
[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]
Например, реальный URL для подключения к аутентифицированному прокси может быть таким:
http://admin:[email protected]:8391
В этом случае поле URL прокси будет таким:
- <
PROTOCOL>
:HTTP
<HOST>
:156.127.0.192
<PORT>
:8391
<USERNAME>
:admin
<PASSWORD>
:lK4w90MEe45YIkOpk
Для работы с аутентификацией через прокси в Axios вам достаточно указать имя пользователя и пароль в поле auth
прокси:
axios.get(targetURL, {
proxy: {
protocol: "http",
host: "156.127.0.192",
port: "8381",
auth: {
username: "admin",
password: "lK4w90MEe45YIkOpk"
}
}
})
Отлично! Это так же просто!
Если вы используете Proxy Agents, у вас есть два способа справиться с аутентификацией:
- Добавить учетные данные непосредственно в URL прокси:
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
- Установка параметров имени пользователя и пароля в объекте URL:
const proxyOpts = new URL("http://156.127.0.192:8391")
proxyOpts.username = "admin"
proxyOpts.password = "lK4w90MEe45YIkOpk"
const proxyAgent = new SocksProxyAgent(proxyOpts)
Те же подходы работают и с HttpsProxyAgent.
Настройка прокси с помощью переменных окружения
Другим способом глобальной настройки прокси в Axios является установка следующих переменных окружения:
HTTP_PROXY
: URL адрес прокси сервера, который будет использоваться для запросов HTTP.HTTPS_PROXY
: URL адрес прокси cервера, используемого для запросов HTTPS.
Например, установите их в Linux или macOS с помощью следующих команд:
export HTTP_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"
export HTTPS_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"
Когда Axios обнаруживает эти переменные окружения, он считывает из них настройки прокси, включая учетные данные для аутентификации. Установите для поля proxy
значение false
, чтобы Axios игнорировал эти переменные окружения. Помните, что вы также можете определить NO_PROXY
env как список доменов, разделенных запятыми, которые не должны проксироваться.
Обратите внимание, что этот же механизм работает и при использовании прокси в cURL.
Реализация ротационных прокси
Если вы будете использовать один и тот же прокси-сервер много раз, целевой сайт в конце концов заблокирует его IP-адрес. Чтобы этого не произошло, необходимо убедиться, что каждый запрос поступает с разных прокси-серверов. Простой способ добиться этого заключается в следующем:
- Определите список объектов, каждый из которых содержит информацию для подключения к разным прокси.
- Случайно выбирайте объект прокси перед каждым запросом.
- Настройте выбранный прокси в Axios.
Вышеописанный подход предполагает, что у вас есть доступ к пулу надежных прокси-серверов. Приобретение доступа к большому количеству серверов может стоить вам больших денег на оплату. Кроме того, интеграция этой логики в ваш код может быть громоздкой и шаблонной.
Именно здесь на помощь приходит Bright Data, предлагая ротационные прокси, которые автоматически меняют для вас IP-адреса! Вы получите доступ к прокси, которые предоставляют свежий IP-адрес каждый раз, когда вы подключаетесь. Эти прокси-серверы доступны в 195 странах, имеют исключительное время безотказной работы сети и гарантируют 99,9% успеха. Попробуйте ротационные прокси Bright Data!
Заключение
В этом руководстве по прокси в Axios вы узнали, зачем нужны прокси в Axios и как их использовать. Теперь вы знаете, как настроить прокси HTTP/HTTPS/SOCKS в Axios. Как видите, это занимает всего несколько строк кода!
Вы также поняли, что не стоит пользоваться бесплатными прокси-сервисами. Остается только выбрать, какого прокси-провайдера выбрать. Экономьте время и силы и выбирайте лучшего на рынке – Bright Data.
Bright Data контролирует лучшие прокси-серверы в мире, обслуживая компании из списка Fortune 500 и более 20,000 клиентов. Ее всемирная сеть прокси включает в себя:
- Прокси для дата-центров – Более 770 000 IP-адресов дата-центров.
- Резидентные прокси – Более 72 миллионов резидентных IP-адресов в более чем 195 странах.
- ISP прокси – Более 700 000 ISP IP-адресов
- Мобильные прокси – более 7 миллионов мобильных IP-адресов.
В целом, это одна из самых крупных и надежных прокси-сетей. Поговорите с одним из наших торговых представителей и узнайте, какой из продуктов Bright Data лучше всего подходит для ваших потребностей.
Кредитная карта не требуется