Порт proxy
Отправляйте собственный трафик через выходные узлы FourA из любого клиента, поддерживающего proxy URL: браузера, утилиты загрузки или уже работающего скрапера. Порт proxy открывает туннель к указанному целевому узлу и передает байты в обе стороны, поддерживая то, что недоступно через JSON API: потоки, большие загрузки и полные сессии браузера.
Подключение
| Параметр | Значение |
|---|---|
| Host | proxy.foura.ai |
| Port | 34004 |
| Протокол | HTTP CONNECT с Basic authentication |
| Целевые порты | 443 и 80 |
Учетные данные создаются в панели управления. Создайте proxy-пользователя в разделе Proxy на боковой панели, чтобы получить сгенерированные имя пользователя и пароль. Они намеренно отделены от вашего API-ключа: рукопожатие proxy передается в открытом виде при каждом подключении, а данные proxy-пользователя можно ротировать без изменений в интеграции с API. См. Proxy Users.
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 https://example.com
import requests
proxy = "http://USERNAME:PASSWORD@proxy.foura.ai:34004"
r = requests.get("https://example.com", proxies={"https": proxy, "http": proxy})
print(r.status_code)
Этот порт поддерживает только CONNECT. Целевой https:// туннелируется любым клиентом. Обычный http:// работает, если ваш клиент также туннелирует его (curl: --proxytunnel); клиент, который вместо этого пересылает обычный request на proxy, получает 405 Method Not Allowed.
Опции передаются в username
Все параметры после учетных данных представляют собой список пар -key-value в произвольном порядке:
USERNAME-network-premium-country-de-session-a1
Значения указываются словами в нижнем регистре. Дефис внутри значения начинает новую опцию, поэтому -city-new-york считывается как две опции и отклоняется. Неизвестный ключ также отклоняется и никогда не игнорируется: опечатка в -contry-de вернет 400 со списком поддерживаемых ключей вместо отправки запроса не из той страны.
| Опция | Значения | Описание |
|---|---|---|
network |
shared (по умолчанию, псевдоним pool), premium (псевдоним residential) |
Из какой сети берется адрес. Shared, это собственные выходные узлы FourA, включенные в тариф. Premium, это домашние адреса, расходующие включенный в тариф премиум-трафик и дополнительно купленный объем. |
fallback |
premium (псевдоним residential), off |
Только для сети shared. Переход на премиум-узел, когда сеть shared не может обработать запрос. Отключено по умолчанию и срабатывает только при наличии премиум-трафика в тарифе и неизрасходованного лимита. |
country |
ISO 3166-1 alpha-2, повторяемый | Страна выхода, видимая целевому сервису. Повторите параметр для охвата нескольких стран: -country-de-country-fr. |
session |
от 1 до 32 букв, цифр или подчеркиваний | Соединения с одинаковым именем делят один адрес (sticky). Опустите параметр для получения нового адреса на каждое соединение (rotating). |
state |
слово | Регион. Только premium. |
city |
слово | Город. Только premium. |
asn |
число | Сеть, по номеру AS. Только premium. |
os |
windows, android, ios, mac |
Тип устройства, которому принадлежит адрес. Только premium. |
lifetime |
от 3 до 1440 |
Время удержания sticky премиум-адреса в минутах. Только premium. |
Каждая опция, кроме network, fallback и session, принимает значение any, которое сбрасывает сохраненное для пользователя proxy значение для этого конкретного соединения.
Три комбинации отклоняются со статусом 400 вместо частичного применения:
state,city,asn,osилиlifetimeв сети shared. Сеть shared выбирается только по стране и без более точной детализации; добавьте-network-premiumдля выбора города.-fallback-premiumвместе с-network-premium. Fallback не имеет смысла в той сети, на которую он должен переключать.- Более точный таргетинг при включенном fallback. Fallback может сработать или не сработать, поэтому указание города, которое может быть выполнено лишь иногда, отклоняется.
Сессии
В сети shared именованная сессия сохраняет один и тот же выходной узел до тех пор, пока вы продолжаете ее использовать, со скользящим десятиминутным окном. Если узел перестает работать, сессия переключается на другой узел вместо завершения с ошибкой. Браузер, работающий через этот порт, всегда должен передавать имя сессии: загрузка страницы открывает десятки соединений, и без сессии каждое из них пойдет с отдельного адреса.
В сети premium именованная сессия удерживает свой адрес в течение lifetime минут или в течение времени по умолчанию для сети, если значение не задано.
Сохраненные значения по умолчанию
Таргетинг, сохраненный для proxy-пользователя в панели управления, применяется к каждому соединению через него, поэтому имя пользователя может оставаться коротким. Любые параметры в имени пользователя имеют приоритет для конкретного соединения, а any сбрасывает значение до сохраненного. Сохраненное премиум-значение по умолчанию расходует средства только тогда, когда это разрешено вашим тарифом; в противном случае соединение обслуживается из общей сети, и туннель все равно открывается.
Заголовки CONNECT
Клиент, поддерживающий добавление заголовков в CONNECT-request, может передавать те же опции в виде заголовков. Заголовок имеет приоритет над аналогичной опцией в имени пользователя.
| Header | Same as |
|---|---|
X-Foura-Network |
-network- |
X-Foura-Fallback |
-fallback- (premium or off) |
X-Foura-Country |
-country-, comma-separated for several |
X-Foura-Session |
-session- |
X-Foura-State |
-state- |
X-Foura-City |
-city- |
X-Foura-Asn |
-asn- |
X-Foura-Lifetime |
-lifetime- |
curl -x http://USERNAME:PASSWORD@proxy.foura.ai:34004 \
--proxy-header "X-Foura-Country: de" \
https://example.com
Ответы
Открывающийся туннель возвращает 200 Connection established. Каждый отказ после проверки учетных данных содержит header X-Foura-Error с однострочным описанием причины, поэтому проверяйте этот header в первую очередь.
| Статус | Когда возвращается |
|---|---|
| 400 Bad Request | Некорректный request или параметр, который FourA не поддерживает. X-Foura-Error указывает параметр и допустимые значения. |
| 403 Forbidden | Целевой порт не обслуживается, цель не является публичным интернет-хостом, порт не входит в ваш тариф либо указан -network-premium, но на тарифе закончился премиум-трафик или нет доступа к премиум-сети. |
| 405 Method Not Allowed | Обычный request вместо CONNECT. |
| 407 Proxy Authentication Required | Учетные данные отсутствуют или неверны. Ответ никогда не уточняет, какая именно часть указана с ошибкой. |
| 408 Request Timeout | Клиент подключился, но ничего не отправлял в течение 15 секунд. |
| 431 Request Header Fields Too Large | Размер headers запроса CONNECT превысил 16 КБ. |
| 429 Too Many Requests | Превышен один из лимитов тарифа: одновременно открытые туннели, частота открытия туннелей в минуту или стандартный трафик за текущий расчетный период. Также возвращается при исчерпании емкости или лимита частоты подключений самого порта. Подробности указаны в X-Foura-Error. |
| 502 Bad Gateway | Для этой цели не найден рабочий выход за отведенное время либо собственный резолвер FourA не смог определить хост. В X-Foura-Error это разделяется на два разных сообщения. |
| 503 Service Unavailable | Прокси-порт выключен. |
Лимиты
- Лимиты одновременно открытых туннелей и открытий в минуту определяются вашим тарифом и считаются на весь аккаунт, а не на отдельного пользователя proxy: создание вторых учетных данных не удваивает лимит. Ваши показатели доступны на странице Usage & Limits.
- Поиск выхода занимает до 45 секунд, после чего порт завершает попытку с ошибкой 502. Сессия с уже назначенным выходом обычно подключается намного быстрее чем за секунду.
- Туннель без передачи байтов в обоих направлениях закрывается после двух минут простоя.
- При обновлении порта уже открытым туннелям дается чуть менее трех минут на завершение работы, после чего они закрываются, в то время как новые соединения продолжают открываться. При длительной загрузке или стриминге клиенту следует переподключиться после закрытия туннеля.
- Пользователь proxy, отключенный или удаленный в панели управления, перестает проходить аутентификацию в течение одной минуты.
Учет трафика
Байты, прошедшие через порт, учитываются в полосе пропускания на вашей странице Usage & Limits, а байты через премиум-выход дополнительно учитываются в объеме премиум-трафика: одни и те же байты отражаются в двух отчетах, но не суммируются между собой. При открытии туннеля трафик премиум-выходов, опробованных портом, но не использованных, также засчитывается как премиум-трафик. Неиспользованные попытки в общей сети не тарифицируются, а при неудачном открытии туннеля не списывается ничего.
Стандартный трафик, который может использовать порт, берется из вашего тарифного плана. В тарифах с оплатой кредитами порт имеет собственный включенный объем гигабайтов, и на странице Billing можно докупить еще; в тарифах с оплатой по трафику он расходует тот же пул, что и API. Когда этот лимит заканчивается, новые соединения отклоняются до сброса расчетного периода или покупки дополнительного объема, а письма об использовании сообщают точное время.
Когда лимит премиум-трафика исчерпан, три способа доступа к этой сети обрабатываются по-разному, и это сделано намеренно. Соединение, указывающее -network-premium, отклоняется с ошибкой 403 с соответствующим сообщением, поскольку клиент, явно запросивший платный ресурс и незаметно перенаправленный в другое место, продолжал бы делать запросы и ожидать премиум-строку, которая так и не появится. Fallback не применяется, а сохраненная у proxy user премиум-настройка по умолчанию понижается до общей сети, которая по-прежнему открывает туннель: ни в одном из этих случаев явного выбора платить за данное соединение не было.
См. также
- Proxy Users: создание proxy users и формирование строки подключения в панели управления
- Proxy Request: альтернатива через JSON API со встроенными повторными попытками и валидацией
- Reuse a Proxy Across Requests: сохранение единой точки выхода в JSON API
- Usage & Limits: пропускная способность и премиум-трафик в рамках вашего тарифа