Руководство
Как использовать HTTP- или SOCKS5-прокси в cURL, Python и Node.js
Автор: IPronix · Обновлено
Все прокси IPronix используют авторизацию по логину и паролю. У шлюзов резидентных, мобильных прокси и прокси дата-центров есть HTTP-порт и SOCKS5-порт; статический ISP IP работает в один момент времени либо по HTTP, либо по SOCKS5 (протокол переключается на странице заказа — IP и порт при этом не меняются). Статические ISP-прокси отображаются в разделе «Мои прокси» (My Proxies); резидентный, мобильный трафик и трафик дата-центров идёт через хост шлюза, а таргетинг (страна, регион, город, сессия) задаётся в учётных данных или в списке эндпоинтов из панели управления. В примерах ниже используются документационный адрес 203.0.113.10 и условные учётные данные — замените их своими.
1. Составьте URL прокси
Большинство инструментов принимают один URL прокси: схема, учётные данные, хост и порт. Используйте http:// с HTTP-портом и socks5h:// с SOCKS5-портом (на шлюзах трафика это разные порты; на статическом ISP IP сначала переключите протокол и используйте тот же порт). Буква h в socks5h означает, что DNS-запросы выполняет прокси, поэтому имя хоста целевого сайта не попадает к вашему локальному резолверу.
http://USER:PASS@203.0.113.10:8000
socks5h://USER:PASS@203.0.113.10:8001Если пароль содержит такие символы, как @, : или /, сначала закодируйте его для URL (encodeURIComponent в JavaScript, urllib.parse.quote в Python).
2. cURL
# HTTP proxy
curl -x http://USER:PASS@203.0.113.10:8000 https://api.ipify.org?format=json
# SOCKS5 proxy (DNS resolved by the proxy)
curl -x socks5h://USER:PASS@203.0.113.10:8001 https://api.ipify.org?format=jsonВ ответе будет IP-адрес, который видит сайт. Это должен быть IP прокси, а не ваш.
3. Python (requests)
import requests
proxy = "http://USER:PASS@203.0.113.10:8000"
proxies = {"http": proxy, "https": proxy}
r = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=30)
print(r.json())Для SOCKS5 установите дополнительный пакет SOCKS и смените схему:
# pip install "requests[socks]"
proxy = "socks5h://USER:PASS@203.0.113.10:8001"
proxies = {"http": proxy, "https": proxy}4. Node.js (axios)
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";
const agent = new HttpsProxyAgent("http://USER:PASS@203.0.113.10:8000");
const { data } = await axios.get("https://api.ipify.org?format=json", {
httpsAgent: agent,
proxy: false, // let the agent handle the proxy
});
console.log(data);Для SOCKS5 используйте вместо этого socks-proxy-agent:
import { SocksProxyAgent } from "socks-proxy-agent";
const agent = new SocksProxyAgent("socks5h://USER:PASS@203.0.113.10:8001");
const { data } = await axios.get("https://api.ipify.org?format=json", {
httpAgent: agent,
httpsAgent: agent,
proxy: false,
});5. Решение частых ошибок
- 407 Proxy Authentication Required: неверный логин или пароль либо спецсимвол в пароле не был закодирован для URL.
- Соединение сразу отклоняется или сбрасывается: порт и протокол не совпадают, например SOCKS5-URL указывает на HTTP-порт. Скопируйте порт для используемого протокола.
- Ошибка 407 на продукте с оплатой за трафик: проверьте, что пароль скопирован целиком, включая часть с таргетингом после ключа; неподдерживаемые страна, регион или город отклоняются.
- Запросы через трафик перестали работать: возможно, пакет израсходован. Проверьте остаток трафика в панели управления и докупите ещё.
- Статический ISP IP отображается как ожидающий: он ещё выдаётся и появится в заказе, как только будет готов.
Для статических ISP-прокси вы также можете проверить, отвечает ли прокси, и узнать его задержку с помощью кнопки ping на странице заказа.