Размещённые прокси
Размещённый прокси направляет трафик приложения через URnetwork, когда приложение принимает только настройку прокси: curl, скрипт, скрейпер или мобильное приложение вроде Shadowrocket. В этом руководстве показано, где найти URL прокси на ur.io и как указать его в распространённых клиентах.
Одно замечание об области применения: у размещённого прокси нет запечатанного сеанса. Ваше клиентское устройство работает внутри оператора, который переводит протокол прокси в протокол сети. Между оператором и вашим трафиком стоит не запечатывание, а то, что прокси не ведёт журналов, как описано в модели угроз. Провайдеры по-прежнему не узнают, кто вы. Если приложение может само запускать URnetwork, приложения и SDK — более приватный путь.
Два вида прокси
ur.io создаёт два вида прокси, которыми могут пользоваться сторонние клиенты:
| HTTPS-прокси | SOCKS5-прокси | |
|---|---|---|
| Тариф | Любой тариф | UR Pro |
| URL на ur.io | https:// | socks5h:// |
| Где находится токен | В имени хоста, без имени пользователя и пароля | В имени пользователя; пароль никогда не проверяется |
| Клиент должен поддерживать | HTTPS-прокси, которые используют TLS до прокси | SOCKS5 с именем пользователя и паролем |
| Что передаёт | Веб-трафик: HTTP, и HTTPS через CONNECT | TCP-соединения, и UDP через UDP associate |
SOCKS5-прокси не поддерживает BIND и отбрасывает UDP-датаграммы больше 2 KiB. На UR Pro ur.io также создаёт профили WireGuard. Импортируйте скачанный файл .conf в приложение WireGuard; остальная часть руководства посвящена HTTPS и SOCKS5.
Как получить URL прокси
- Войдите на ur.io и откройте Прокси (Proxies) (ur.io/app/proxies).
- Выберите Создать прокси (Create proxy).
- Выберите тип прокси: HTTPS, SOCKS5 или WireGuard. У SOCKS5 и WireGuard есть значок Pro. На бесплатном тарифе кнопка создания сначала предлагает Pro.
- Выберите местоположение. Найдите страну, регион или город или оставьте Лучший доступный (Best available): он использует любого провайдера в сети. У каждого местоположения указано, сколько в нём провайдеров.
- Выберите Create HTTPS proxy или Create SOCKS5 proxy. Новый прокси появится вместе со своим URL.
У каждого HTTPS- и SOCKS5-прокси в списке есть Копировать URL (Copy URL): копирует весь URL вместе с токеном, и ×: удаляет прокси.
Как читать URL
https:// <token>. <host>: <port>
socks5h:// <token>: x@<host>: <port><token>— токен прокси, длинная последовательность букв и цифр. Это единственные учётные данные прокси, и регистр букв не важен.- В HTTPS-URL токен — первая метка имени хоста. Укажите
<token>.в качестве хоста прокси точно так, как его показывает ur.io: именно токен в имени выполняет вход.<host> - В SOCKS5-URL токен стоит между
socks5h://и:x@.<host>идёт после@, а<port>— после последнего:. x— пароль-заглушка. SOCKS5-прокси никогда не проверяет пароль, поэтому подойдёт любое значение. Некоторые клиенты отправляют имя пользователя, только если задан и пароль, в том числеrequestsв Python, и для них URL от ur.io содержитx. Если клиент запрашивает имя пользователя и пароль по отдельности, укажите токен и любой пароль.- Сохраните
hвsocks5h. С ней прокси сам разрешает имена хостов, так что DNS-запросы уходят через провайдера, а не с вашего компьютера. С обычнымsocks5curl сначала разрешает имена на вашем компьютере.
Обращайтесь с URL как с паролем. Любой, у кого он есть, может пользоваться прокси, а трафик прокси расходует данные вашего аккаунта. Если URL утёк, удалите этот прокси на ur.io, и прокси перестанет принимать его токен. Затем создайте новый.
Проверка с помощью curl
# HTTPS proxy, on every plan
curl -x 'https:// <token>. <host>: <port>' https:// api. bringyour.com/ my-ip-info
# SOCKS5 proxy, on UR Pro
curl -x 'socks5h:// <token>: x@<host>: <port>' https:// api. bringyour.com/ my-ip-info/my-ip-info отвечает адресом, с которого пришёл ваш запрос, и тем, где этот адрес находится. Через прокси это адрес провайдера в выбранном вами местоположении. Для HTTPS-прокси нужен curl 7.52 или новее.
Браузеры
Проще всего пустить браузер через прокси с помощью расширения URnetwork: оно само создаёт свой размещённый прокси и управляет им. См. Начало работы в браузере.
Чтобы вместо этого использовать прокси, созданный на ur.io, возьмите его HTTPS-URL. Chrome вообще не умеет отправлять имя пользователя SOCKS5. Настройки прокси операционной системы и ручные настройки прокси в Firefox, как правило, не могут описать HTTPS-прокси.
Chrome, Edge и другие браузеры на Chromium. Запустите браузер с прокси в командной строке. Благодаря отдельному каталогу профиля флаг работает, даже когда ваше обычное окно браузера открыто:
# macOS
open -na "Google Chrome" --args --user-data-dir= "$HOME/ urnetwork-proxy-profile" --proxy-server= "https:// <token>. <host>: <port>"
# Linux
google-chrome --user-data-dir= "$HOME/ urnetwork-proxy-profile" --proxy-server= "https:// <token>. <host>: <port>"
# Windows, in Command Prompt (Edge: msedge instead of chrome)
start chrome --user-data-dir= "%USERPROFILE%\urnetwork-proxy-profile" --proxy-server= "https:// <token>. <host>: <port>"Firefox. В ручных настройках Firefox нет поля имени пользователя для SOCKS и нет типа HTTPS-прокси, поэтому используйте однострочный файл автоматической настройки прокси (PAC). Сохраните это как urnetwork.pac:
function FindProxyForURL(url, host) {
return "HTTPS <token>.<host>:<port>";
}Затем откройте Настройки → Основные → Параметры сети → Настроить… (Settings → General → Network Settings → Settings…), выберите URL автоматической настройки прокси (Automatic proxy configuration URL), введите адрес файла, например file:/// или file:///, и нажмите ОК (OK). Чтобы отключить прокси, выберите Без прокси (No proxy) в том же окне.
Мобильные приложения: Shadowrocket и другие
Прокси-приложения для телефонов, например Shadowrocket на iOS, принимают SOCKS5-сервер в виде нескольких полей. Создайте SOCKS5-прокси на ur.io (UR Pro) и скопируйте его URL. В приложении добавьте сервер и заполните его по URL:
| Поле | Значение |
|---|---|
| Тип (Type) | SOCKS5 |
| Адрес, сервер или хост (Address) | <host>: часть между @ и последним : |
| Порт (Port) | <port>: цифры после последнего : |
| Пользователь или имя пользователя (User) | <token>: часть между socks5h:// и :x@ |
| Пароль (Password) | Любое значение, например x |
Сохраните сервер, выберите его и включите подключение. Для всего телефона приложение URnetwork для iOS или Android не требует прокси и обеспечивает более приватный путь.
Python
requests принимает оба вида прокси. Для SOCKS5 нужен дополнительный пакет socks (pip install "requests[socks]"), а в его URL нужен пароль-заглушка:
import requests
proxy = "https:// <token>. <host>: <port>" # HTTPS proxy, every plan
# proxy = "socks5h:// <token>: x@<host>: <port>" # SOCKS5 proxy, UR Pro
r = requests.get(
"https:// api. bringyour.com/ my-ip-info",
proxies={"http": proxy, "https": proxy},
timeout=30,
)
print(r.json()["info"]["ip"])httpx принимает те же URL; для SOCKS5 нужен pip install "httpx[socks]". aiohttp принимает HTTPS-прокси:
import asyncio
import aiohttp
import httpx
with httpx. Client(proxy= "https:// <token>. <host>: <port>") as client:
print(client.get("https:// api. bringyour.com/ my-ip-info").json())
async def main():
async with aiohttp. ClientSession() as session:
async with session.get("https:// api. bringyour.com/ my-ip-info", proxy= "https:// <token>. <host>: <port>") as r:
print(await r.json())
asyncio.run(main())Стандартный обработчик загрузок Scrapy не может получать страницы https:// через HTTPS-прокси: он останавливается с ошибкой «HTTPS proxies for HTTPS destinations are not supported». Загружайте такие страницы одной из библиотек выше.
Node.js
Для fetch передайте HTTPS-прокси в ProxyAgent из undici:
import { fetch, ProxyAgent } from "undici";
const dispatcher = new ProxyAgent("https:// <token>. <host>: <port>");
const res = await fetch("https:// api. bringyour.com/ my-ip-info", { dispatcher });
console.log(await res.json());Для node:https и библиотек, принимающих агент, используйте https-proxy-agent, а для SOCKS5 — socks-proxy-agent:
import https from "node:https";
import { HttpsProxyAgent } from "https-proxy-agent";
// import { SocksProxyAgent } from "socks-proxy-agent";
const agent = new HttpsProxyAgent("https:// <token>. <host>: <port>");
// const agent = new SocksProxyAgent("socks5h:// <token>: x@<host>: <port>");
https.get("https:// api. bringyour.com/ my-ip-info", { agent }, (res) => res.pipe(process. stdout));Другие программы: proxychains
В Linux proxychains-ng направляет соединения программы через SOCKS5-прокси (UR Pro), даже если у программы нет настройки прокси. Он работает за счёт предзагрузки библиотеки, поэтому не действует на статически скомпонованные программы, к которым относится большинство программ на Go. Первым прокси у него должен быть IP-адрес, а не имя хоста, поэтому сначала узнайте адрес:
dig +short <host>Сохраните файл конфигурации urnetwork.conf с этим адресом:
strict_chain
proxy_dns
[ProxyList]
socks5 <ip> <port> <token> xЗатем запускайте программы через него:
proxychains4 -f urnetwork.conf curl https:// api. bringyour.com/ my-ip-infoproxy_dns заставляет proxychains разрешать имена через прокси. Если позже соединения перестанут работать, узнайте адрес заново.
Ограничения
| Бесплатный тариф | UR Pro | |
|---|---|---|
| Активные прокси | 5 | 1 000 |
| Новые прокси в минуту | 5 | 20 |
Прокси, которые создаёт браузерное расширение, тоже учитываются. Ограничение останавливает только создание новых прокси: имеющиеся прокси продолжают работать, а удаление одного освобождает место для другого. Прокси остаётся, пока вы его не удалите; прокси, который не использовался около 30 дней, удаляется автоматически.
Уникальные IP выхода
Размещённый прокси обычно распределяет свои соединения между несколькими провайдерами, поэтому два ваших прокси могут выходить с одного и того же адреса. С уникальным IP выхода, на UR Pro, каждый прокси выходит через одного провайдера, чей адрес не использует ни один из ваших других прокси. Прокси сохраняет свой выход, пока этот провайдер остаётся исправным.
- Как включить: на странице «Прокси» отметьте Уникальный IP выхода (Unique exit IP) при создании прокси. Задайте Количество прокси (Number of proxies), чтобы создать до 20 за раз. В API добавьте
"unique_вexit": true proxy_config. - Ограничения: прокси с уникальным выходом учитываются в тех же ограничениях, что и любые другие: 1 000 активных и 20 новых в минуту.
- Что вы видите: у каждого прокси показано, где находится его выход (город, регион и страна) и с какого времени. IP-адрес выхода не показывается. Чтобы его увидеть, выполните проверку IP через прокси, например командами curl выше.
- Если провайдер выходит из строя: прокси автоматически получает новый уникальный выход и на это время показывает Замена выхода… (Replacing exit…). Число замен в час ограничено; сверх ограничения прокси ждёт и пробует позже. В API
"unique_заставляет прокси вместо этого ждать вас: он показывает Выход потерян (Exit lost), пока вы его не смените.exit_ replace": "manual" - Сменить выход (Rotate exit): даёт прокси новый уникальный выход. Выход прокси можно менять раз в минуту и до 60 раз в день. Если в местоположении нет другого свободного уникального выхода, прокси сохраняет текущий.
- Нет доступного уникального выхода: когда все исправные выходы в местоположении уже заняты вашими другими прокси, ur.io сообщает об этом и ничего не создаёт; попытка не учитывается в ваших ограничениях. Выберите другое местоположение или Лучший доступный.
Устранение неполадок
ur.io отказывается создать прокси. Он показывает причину (сообщения на английском). На бесплатном тарифе:
- «Your plan's limit of 5 active proxies is reached. Remove a proxy to create another, or upgrade to UR Pro for more.» (Достигнуто ограничение вашего тарифа в 5 активных прокси.) Удалите прокси, которыми больше не пользуетесь, или перейдите на Pro.
- «Your plan allows 5 new proxies a minute. Try again in a minute, or upgrade to UR Pro for more.» (Ваш тариф позволяет создавать 5 новых прокси в минуту.) Подождите минуту и попробуйте снова.
На UR Pro те же сообщения называют ограничения Pro и не предлагают перейти на другой тариф.
SOCKS5-прокси отклоняет вход. curl выводит одно из этих сообщений, а другие клиенты формулируют их по-своему:
User was rejected by the SOCKS5 server (1 1).Токен неверный или обрезан, либо прокси удалён. Скопируйте URL с ur.io заново.No authentication method was acceptable.Клиент не отправил имя пользователя. Укажите токен в качестве имени пользователя и пароль-заглушку, напримерx.
HTTPS-прокси отклоняет соединение. curl выводит CONNECT tunnel failed, response N, где N:
- 407: прокси не нашёл действительного токена. Скопируйте URL с ur.io заново и укажите весь
<token>.в качестве хоста прокси.<host> - 502: прокси больше не существует, например потому, что вы его удалили, или до цели не удалось достучаться.
- 403: адрес вызывающей стороны не входит в IP-привязку прокси. Она есть только у прокси, созданных через API с IP-привязкой.
Клиент, который получает пустой ответ или соединение, сразу закрывающееся, вероятно, говорит с прокси по обычному HTTP. Используйте URL https:// в клиенте, который поддерживает HTTPS-прокси.
Страницы загружаются медленно или по таймауту. Попробуйте Лучший доступный или местоположение с большим числом провайдеров. Трафик прокси расходует данные вашего аккаунта, поэтому аккаунт без оставшихся данных не может открывать новые соединения.
IP выхода меняется. Как и в приложениях, размещённый прокси распределяет свои соединения между несколькими провайдерами в своём местоположении. Адрес, который видит сайт, может меняться от одного соединения к другому. Чтобы закрепить за каждым прокси один IP выхода, создайте его с уникальным IP выхода на UR Pro.
Прокси не в том месте. Лучший доступный может выходить в любой стране. Выберите страну, регион или город при создании прокси. ur.io не может перенести уже существующий прокси: создайте новый в нужном месте, затем удалите старый.
Автоматизация через API
Страница «Прокси» вызывает API оператора: POST /network/ с proxy_config, где initial_ выбирает местоположение. В ответе proxy_ содержит https_, socks_ и auth_token. В socks_ из API нет имени пользователя: добавьте auth_token в качестве имени пользователя, как это делает ur.io. lock_ip_list из IP-адресов или подсетей ограничивает, кто может пользоваться прокси. Ограничения выше действуют и для API.
Для уникального IP выхода добавьте unique_exit в proxy_config:
{
"proxy_config": {
"unique_exit": true,
"initial_ device_ state": {
"location": { "connect_ location_ id": { "best_available": true } }
}
}
}Добавьте "unique_, чтобы при сбое провайдера прокси оставался на своём выходе, пока вы его не смените; по умолчанию используется "auto".
proxy_ в ответе содержит exit_id, country_code, region, city, exit_since и state (assigned, replacing или no_supply) выхода, state_reason, если он есть, и replace_mode. GET /network/ сообщает то же самое в поле exit каждого прокси, рядом с его proxy_client. Отказ с no_ означает, что в местоположении не осталось выхода, который ваши прокси ещё не используют. POST /network/ с client_id прокси переводит его на новый уникальный выход и возвращает новый exit; сверх ограничения на смену он отказывает с rate_limited, а когда другого свободного выхода нет — с no_. Он принимает вход вашей сети или ключ API.