IPFLY — огляд проксі-сервісу

Вступ

IPFLY — китайський проксі-сервіс, що працює на міжнародному ринку. Бренд належить компанії Chengdu Zhihui Lantu Technology Co., Ltd., штаб-квартира якої розташована в Ченду, одному з великих технологічних центрів Китаю. Нинішній домен IPFLY.net зареєстрований у березні 2023 року, тому публічну історію сервісу можна впевнено простежити як мінімум із цього часу.

IPFLY — проксі-сервіс, що пропонує резидентські, статичні ISP та серверні проксі для різних сценаріїв використання: від роботи з браузерними профілями до автоматизації та збору даних.

За даними IPFLY, резидентська мережа сервісу налічує понад 90 мільйонів IP-адрес і охоплює більше ніж 190 країн і регіонів. Для резидентських проксі доступні геотаргетинг, ротація IP та sticky sessions, а для завдань, де потрібна постійна IP-адреса, можна використовувати статичні ISP або Datacenter-проксі.

Сервіс підтримує HTTP, HTTPS і SOCKS5, а однією з найцікавіших технічних особливостей є заявлена підтримка UDP через SOCKS5. У цьому огляді ми не обмежимося описом можливостей IPFLY і окремо перевіримо передачу UDP-трафіку на практиці.

Для роботи з антидетект-браузерами IPFLY пропонує стандартне підключення за адресою сервера, портом, логіном і паролем, а також власні інструкції з інтеграції з AdsPower, DICloak, BitBrowser та іншим програмним забезпеченням. Ми додатково перевірили проксі IPFLY у Afina, Dolphin Anty, GeeLark і Vision.

Далі розглянемо типи проксі IPFLY, можливості керування IP, інтеграції, експорт даних і результати нашого тестування SOCKS5 з UDP.

Послуги IPFLY

IPFLY пропонує три основні типи проксі:

  • резидентські проксі;
  • статичні ISP-проксі;
  • серверні (Datacenter) проксі.

Резидентські проксі

Резидентські проксі IPFLY використовують IP-адреси інтернет-користувачів із різних країн та регіонів.

За даними провайдера, резидентська мережа налічує понад 90 мільйонів IP-адрес і охоплює понад 190 країн та регіонів.

Доступний вибір IP за країною, регіоном і містом, а також таргетинг за ASN. Для завдань, де необхідно деякий час зберігати один IP, передбачені sticky sessions.

Резидентські проксі підходять для:

  • збору відкритих даних;

  • моніторингу цін і сайтів;

  • перевірки регіональної видачі та контенту;

  • автоматизованих запитів;

  • роботи з сайтами, чутливими до IP-адрес дата-центрів.

При виборі такого проксі важливо враховувати, що розмір усієї мережі не означає однакову кількість доступних адрес у кожній країні чи місті. Якщо потрібна конкретна географія, її краще попередньо перевірити.

Статичні ISP-проксі

ISP-проксі об’єднують постійний статичний IP з адресним простором інтернет-провайдера.

IPFLY заявляє для цієї категорії виділені IP з реальним ISP ASN, підтримку HTTP(S) і SOCKS5 та відсутність обмежень за обсягом трафіку.

На відміну від резидентських проксі з ротацією, адреса тут не змінюється при кожному новому підключенні. Тому ISP-проксі зручні там, де потрібне тривале використання одного IP.

Наприклад, їх можна розглядати для постійних профілів антидетект-браузерів та інших завдань, у яких небажана часта зміна мережевого оточення.

Серверні проксі

Datacenter-проксі використовують IP-адреси дата-центрів. IPFLY пропонує виділені статичні серверні IP з підтримкою HTTP, HTTPS та SOCKS5.

Для цієї категорії також заявлено необмежений трафік.

Серверні проксі зазвичай мають сенс для автоматизації, моніторингу та регулярних запитів до ресурсів, які нормально працюють з IP дата-центрів.

Переваги IPFLY

До сильних сторін IPFLY можна віднести поєднання кількох типів проксі в одному сервісі. Користувач може вибрати між ротацією великого пулу резидентських адрес і постійними ISP або Datacenter IP залежно від завдання.

Окремо варто відзначити:

  • понад 90 млн резидентських IP за даними IPFLY;

  • покриття понад 190 країн та регіонів;

  • вибір країни, регіону та міста;

  • таргетинг за ASN;

  • sticky sessions;

  • статичні ISP-проксі;

  • виділені Datacenter IP;

  • HTTP, HTTPS та SOCKS5;

  • підтримку UDP через SOCKS5;

  • інструкції з підключення до популярних антидетект-браузерів;

  • оплату через PayPal, банківські картки та USDT.

Наявність одразу резидентських, ISP та серверних проксі зручна ще й тим, що для різних проектів не обов’язково використовувати різних провайдерів.

Перевірка підтримки UDP через SOCKS5

На підтримці UDP через SOCKS5 в IPFLY варто зупинитися окремо.

Сама наявність SOCKS5 ще не означає, що проксі вміє передавати UDP. Деякі проксі-сервери підтримують SOCKS5 тільки для TCP-з’єднань.

IPFLY заявляє підтримку UDP. Зокрема, провайдер прямо згадує її у своїй документації при описі використання проксі для Telegram, включаючи голосові та відеодзвінки.

Технічно протокол SOCKS5 передбачає команду UDP ASSOCIATE, яка дозволяє клієнту передавати UDP-датаграми через проксі-сервер.

Це може бути важливо для додатків і протоколів, що використовують UDP, наприклад для голосового зв’язку та деяких сценаріїв роботи месенджерів.

При цьому підтримку UDP повинні забезпечувати не тільки самі проксі IPFLY, але й використовувана програма або клієнт. Якщо додаток вміє відправляти через SOCKS5 тільки TCP, наявність UDP на боці проксі ситуацію не змінить.

Звичайна перевірка IP через браузер також не підтверджує роботу UDP — вона показує тільки те, що з’єднання через проксі встановлено.

Щоб не обмежуватися заявою IPFLY, ми перевірили підтримку UDP самостійно. Для цього було підготовлено невеликий PHP-скрипт, який встановлює SOCKS5-з’єднання, виконує команду UDP ASSOCIATE, а потім відправляє через отриманий UDP-relay реальний DNS-запит до 1.1.1.1:53.

Таким чином перевіряється не тільки те, що проксі формально приймає команду UDP ASSOCIATE, але й фактична передача UDP-трафіку через SOCKS5.

Скрипт можна використовувати і для перевірки інших проксі-провайдерів — достатньо замінити адресу сервера, порт, логін і пароль.

php <<'PHP'
<?php
$proxy = "accel.ipflygates.com";
$port = 5001;
$user = "USERNAME";
$pass = "PASSWORD";

function readExact($s, $n) {$data = "";
    while (strlen($data) <$n) {
        $part = fread($s, $n - strlen($data));
        if ($part === false \vert{}\vert{}$part === "") {
            throw new Exception("Incomplete TCP response or timeout");
        }
        $data .=$part;
    }
    return $data;
}

function readAddress($s,$type) {
    switch ($type) {
        case 1: return inet_ntop(readExact($s, 4));
        case 3: return readExact($s, ord(readExact($s, 1)));
        case 4: return inet_ntop(readExact($s, 16));
        default: throw new Exception("Unknown address type");
    }
}

try {
    $tcp = @stream_socket_client("tcp://$proxy:$port", $errno,$errstr, 5);
    if (!$tcp) throw new Exception("TCP: $errstr");
    stream_set_timeout($tcp, 5);

    fwrite($tcp, "\x05\x01\x02");
    if (readExact($tcp, 2) !== "\x05\x02") {
        throw new Exception("Server did not select username/password authentication");
    }
    fwrite($tcp, "\x01".chr(strlen($user)).$user.chr(strlen($pass)).$pass);
    if (readExact($tcp, 2) !== "\x01\x00") {
        throw new Exception("Authentication failed");
    }

    fwrite($tcp, "\x05\x03\x00\x01".str_repeat("\x00", 6));
    $h = readExact($tcp, 4);
    if ($h[0] !== "\x05" \vert{}\vert{} $h[2] !== "\x00") {
        throw new Exception("Invalid SOCKS5 response");
    }
    if (ord($h[1]) !== 0) {
        throw new Exception("UDP ASSOCIATE: reply code ".ord($h[1]));
    }

    $relay = readAddress($tcp, ord($h[3]));
    $relayPort = unpack("n", readExact($tcp, 2))[1];
    if ($relay === "0.0.0.0" \vert{}\vert{} $relay === "::") {
        $peer = stream_socket_get_name($tcp, true);$relay = trim(substr($peer, 0, strrpos($peer, ":")), "[]");
    }
    if (!$relayPort) throw new Exception("Server returned UDP port zero");

    $host = strpos($relay, ":") !== false ? "[$relay]" : $relay;
    $udp = @stream_socket_client("udp://$host:$relayPort", $errno,$errstr, 5);
    if (!$udp) throw new Exception("UDP: $errstr");
    stream_set_timeout($udp, 5);

    // DNS A query for example.com sent through the UDP relay to 1.1.1.1:53.
    $id = random_bytes(2);
    $dns =$id.pack("nnnnn", 0x0100, 1, 0, 0, 0)
         . "\x07example\x03com\x00".pack("nn", 1, 1);
    $packet = "\x00\x00\x00\x01".inet_pton("1.1.1.1").pack("n", 53).$dns;

    fwrite($udp,$packet);
    $reply = fread($udp, 4096);
    if ($reply === false \vert{}\vert{} strlen($reply) < 4) {
        throw new Exception("No UDP response: UDP data transfer not confirmed");
    }
    if (substr($reply, 0, 3) !== "\x00\x00\x00") {
        throw new Exception("Invalid SOCKS5 UDP header or fragmented datagram");
    }

    $type = ord($reply[3]);
    switch ($type) {
        case 1: $offset = 10; break;
        case 4: $offset = 22; break;
        case 3:
            if (strlen($reply) < 5) throw new Exception("Response too short");
            $offset = 7 + ord($reply[4]);
            break;
        default: throw new Exception("Unknown UDP address type");
    }
    $answer = substr($reply,$offset);
    if (strlen($answer) < 12 || substr($answer, 0, 2) !==$id
        || !(ord($answer[2]) & 0x80)) {
        throw new Exception("No matching DNS response received");
    }

    echo "[OK] UDP is working: DNS response received through SOCKS5.\n";
} catch (Throwable $e) {
    echo "[FAIL] ".$e->getMessage()."\n";
    exit(1);
}
PHP

У нашому випадку тест завершився успішно:

[OK] UDP is working: DNS response received through SOCKS5.

Це підтверджує, що протестований проксі IPFLY дійсно передає UDP-трафік через SOCKS5: DNS-запит пройшов через UDP-relay, а відповідь було отримано назад через той самий проксі.

При цьому такий тест підтверджує саме працездатність UDP, але не оцінює якість з’єднання для голосового зв’язку або відеодзвінків. Для цього окремо потрібно вимірювати затримку, jitter, втрати пакетів і стабільність з’єднання.

Інтеграції з антидетект-браузерами

В IPFLY є окремий розділ з інструкціями щодо підключення проксі до стороннього програмного забезпечення. Серед відомих антидетект-браузерів представлені керівництва для AdsPower, DICloak та BitBrowser.

Але проксі IPFLY не прив’язані до цих браузерів. Підключення виконується стандартним способом: користувач вибирає тип проксі, після чого вказує сервер, порт і дані авторизації в налаштуваннях браузерного профілю.

Наприклад, в офіційній інструкції для AdsPower пропонується:

  1. Вибрати необхідний тип проксі та географію в IPFLY.
  2. Отримати параметри підключення в особистому кабінеті.
  3. Створити профіль в AdsPower.
  4. Вибрати HTTP, HTTPS або SOCKS5.
  5. Вказати сервер, порт, логін і пароль.
  6. Перевірити з’єднання та зберегти профіль.

Плюс такого підходу в тому, що проксі не прив’язані до спеціального розширення або власного браузера IPFLY. Їх можна використовувати в програмах, що підтримують відповідні протоколи та спосіб авторизації.

Ми додатково перевірили підключення IPFLY до Afina, Dolphin Anty, GeeLark та Vision.

Для тесту використовувався проксі з такими параметрами:

  • IP: xxx.xxx.xxx.xxx`;
  • ISP: SkyQuantum Internet Service;
  • геолокація: Houston, Texas, US;
  • часовий пояс: America/Chicago.

У всіх чотирьох браузерах проксі вдалося додати та використовувати через стандартні налаштування профілю.

Експорт та імпорт проксі

У панелі IPFLY можна експортувати вибрані проксі в JSON та XLSX. Це особливо зручно при роботі не з однією адресою, а з великим списком проксі.

При цьому формат експортованого файлу не обов’язково збігається з шаблоном імпорту конкретного антидетект-браузера. У наших тестах готовий файл IPFLY не можна було безпосередньо імпортувати в Afina, Dolphin Anty та Vision, тому для перевірки ми додавали проксі вручну.

GeeLark підтримує імпорт проксі з XLSX, однак файл, експортований безпосередньо з IPFLY, у нашому випадку також не вдалося імпортувати без додаткової підготовки.

Серйозною проблемою це назвати не можна. Наявність експорту в JSON дозволяє досить легко перетворити список проксі на структуру, яку вимагає конкретний браузер: CSV, XLSX, текстовий список або інший шаблон імпорту. Особливо це зручно при автоматизації або роботі з великою кількістю адрес.

Тобто IPFLY надає самі дані у зручному структурованому вигляді, але для масового імпорту іноді знадобиться привести їх до формату конкретного антидетект-браузера.

Управління кількома проксі

У панелі IPFLY передбачені і групові операції з вибраними проксі. Наприклад, можна змінити порт одразу для кількох адрес.

При роботі з великою кількістю проксі це зручніше, ніж редагувати кожну адресу окремо, і доповнює можливості експорту даних.

За результатами нашої перевірки проксі IPFLY нормально працюють з Afina, Dolphin Anty, GeeLark та Vision. Для кількох профілів їх простіше додати вручну, а при масовій роботі можна використовувати експорт у JSON або XLSX і за необхідності перетворити дані під формат імпорту конкретного браузера.

Тарифи IPFLY

На момент перевірки на сайті IPFLY вказані такі стартові ціни:

Тип проксіЦіна від
Резидентські проксі$1 за ГБ
ISP-проксі$2,5 за IP
Datacenter-проксі$4,5 за IP

Це саме початкові ціни. Вартість залежить від вибраного пакета, кількості IP, трафіку та інших умов.

Для ISP та Datacenter на основному ціновому блоці вартість вказана за IP без достатньої інформації про термін оренди, тому сприймати ці цифри як вартість IP на місяць без перевірки конкретного тарифу не варто.

Серед доступних способів оплати IPFLY вказує PayPal, Visa та USDT.

Висновок

IPFLY — універсальний проксі-провайдер із трьома основними напрямами: резидентські, статичні ISP та серверні проксі.

Резидентська мережа цікава великим вибором геолокацій та можливістю керувати ротацією IP. Статичні ISP-проксі підходять для завдань, де потрібне тривале використання однієї адреси, а Datacenter-проксі надають більш традиційний варіант виділених серверних IP.

Окремою перевагою IPFLY є заявлена підтримка UDP через SOCKS5. Це особливо цікаво для програм, яким недостатньо звичайного TCP-проксі.

Також до плюсів сервісу можна віднести готові інструкції з інтеграції з антидетект-браузерами, підтримку кількох типів проксі в одному акаунті та можливість оплати через PayPal і USDT.

Перед покупкою великого пакета я б рекомендував почати з невеликого обсягу та перевірити потрібну країну, швидкість, стабільність IP і роботу проксі безпосередньо з тими сайтами або додатками, для яких вони купуються.

Контакти IPFLY

  • Сайт: ipfly.net
  • Компанія: Chengdu Zhihui Lantu Technology Co., Ltd. (成都智绘蓝图科技有限公司), Китай
  • Штаб-квартира: Ченду, провінція Сичуань, Китай, Tianfu Software Park
  • Дата реєстрації компанії: 11.05.2024

Мови: китайська та англійська. Сайт, документація та особистий кабінет мають англомовні версії.

Контактна інформація технічної підтримки

  • E-mail: [email protected], [email protected]
  • Онлайн-підтримка: доступна через сайт IPFLY, час роботи підтримки: 24/7, а для великих клієнтів — персональний менеджер.

Способи оплати: PayPal, Visa, USDT та Alipay.

Клієнти та партнери: IPFLY заявляє про понад 10 000 глобальних партнерів.

Карта сайту