Перейти до вмісту
Guides 3 хв читання 704 переглядів

Використання Проксі в Dart/Flutter

Налаштування Проксі в Dart та Flutter: HttpClient, dio, SOCKS5 та Особливості роботи з проксі в мобільних додатках.

Використання Проксі в Dart/Flutter

Використання проксі в Dart/Flutter

Проксі в Dart/Flutter

Dart — це мова програмування для додатків Flutter. Робота з проксі в Dart здійснюється через стандартний HttpClient та популярні бібліотеки (dio, http).

Стандартний HttpClient

HTTP Проксі

import 'dart:io';

void main() async {
  final client = HttpClient();

  // Proxy configuration
  client.findProxy = (uri) {
    return "PROXY proxy_ip:8080";
  };

  final request = await client.getUrl(
    Uri.parse("https://httpbin.org/ip")
  );
  final response = await request.close();

  await response.transform(utf8.decoder).forEach(print);
  client.close();
}

З автентифікацією

import 'dart:io';

void main() async {
  final client = HttpClient();

  client.findProxy = (uri) {
    return "PROXY proxy_ip:8080";
  };

  // Handling proxy authentication
  client.authenticate = (uri, scheme, realm) async {
    client.addProxyCredentials(
      "proxy_ip",
      8080,
      "realm",
      HttpClientBasicCredentials("username", "password")
    );
    return true;
  };

  final request = await client.getUrl(
    Uri.parse("https://httpbin.org/ip")
  );
  final response = await request.close();

  await response.transform(utf8.decoder).forEach(print);
  client.close();
}

Пряме з'єднання (без проксі)

client.findProxy = (uri) => "DIRECT";

Умовна маршрутизація

client.findProxy = (uri) {
  if (uri.host.contains("target-site.com")) {
    return "PROXY proxy_ip:8080";
  }
  return "DIRECT";
};

Бібліотека Dio

Dio — найпопулярніша HTTP-бібліотека для Flutter.

Встановлення

# pubspec.yaml
dependencies:
  dio: ^5.4.0
  dio_proxy_adapter: ^0.0.2  # for proxies

HTTP Проксі з Dio

import 'package:dio/dio.dart';
import 'dart:io';

void main() async {
  final dio = Dio();

  // Proxy configuration via HttpClient adapter
  (dio.httpClientAdapter as IOHttpClientAdapter).createHttpClient = () {
    final client = HttpClient();
    client.findProxy = (uri) {
      return "PROXY proxy_ip:8080";
    };
    // For self-signed certificates (testing)
    client.badCertificateCallback = (cert, host, port) => true;
    return client;
  };

  final response = await dio.get("https://httpbin.org/ip");
  print(response.data);
}

З автентифікацією

(dio.httpClientAdapter as IOHttpClientAdapter).createHttpClient = () {
  final client = HttpClient();
  client.findProxy = (uri) => "PROXY proxy_ip:8080";
  client.addProxyCredentials(
    "proxy_ip",
    8080,
    "",
    HttpClientBasicCredentials("user", "pass")
  );
  return client;
};

SOCKS5 Проксі

Через socks5_proxy

# pubspec.yaml
dependencies:
  socks5_proxy: ^1.0.4
import 'dart:io';
import 'package:socks5_proxy/socks_client.dart';

void main() async {
  // Creating a SOCKS5 client
  final proxy = SocksTCPClient.connect(
    [ProxySettings(InternetAddress("proxy_ip"), 1080,
      password: Password("username", "password"))],
    InternetAddress("93.184.216.34"), // target IP
    80,
  );

  // Use the socket for HTTP requests
}

Через системний проксі з SOCKS

client.findProxy = (uri) {
  return "SOCKS5 proxy_ip:1080";
};

Примітка: Стандартний HttpClient в Dart підтримує лише PROXY (HTTP) та DIRECT. Для SOCKS потрібні сторонні бібліотеки.

Особливості Flutter

Конфігурація Android

Android вимагає налаштування network_security_config.xml для роботи з HTTP-проксі без шифрування (cleartext):

<!-- android/app/src/main/res/xml/network_security_config.xml -->
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

Конфігурація iOS

Для iOS проксі працюють через системні налаштування URLSession. Додаток Flutter автоматично використовує системний проксі.

Змінні середовища

У режимі налагодження проксі можна встановити за допомогою змінних:

// Via launch arguments
// flutter run --dart-define=HTTP_PROXY=http://proxy_ip:8080

Ротація проксі

import 'dart:io';
import 'dart:math';

final proxies = [
  "PROXY proxy1:8080",
  "PROXY proxy2:8080",
  "PROXY proxy3:8080",
];

final random = Random();

void main() async {
  final client = HttpClient();

  client.findProxy = (uri) {
    return proxies[random.nextInt(proxies.length)];
  };

  // Requests will use different proxies
  for (var i = 0; i < 10; i++) {
    final request = await client.getUrl(
      Uri.parse("https://httpbin.org/ip")
    );
    final response = await request.close();
    final body = await response.transform(utf8.decoder).join();
    print("Request $i: $body");
  }

  client.close();
}

Обробка помилок

try {
  final request = await client.getUrl(uri);
  final response = await request.close();
  // handle response
} on SocketException catch (e) {
  print("Connection error: $e");
} on HttpException catch (e) {
  print("HTTP error: $e");
} on HandshakeException catch (e) {
  print("TLS/SSL error: $e");
} catch (e) {
  print("Unexpected error: $e");
}

Висновок

Dart та Flutter надають базові, але достатні інструменти для роботи з HTTP-проксі. Для розширених сценаріїв (SOCKS5, автентифікація) використовуйте Dio з кастомним адаптером HttpClient. При розробці додатків Flutter враховуйте платформні особливості Android та iOS.

Оновлено: 06.03.2026
Назад до категорії

Читайте також

Guides 2 хв

Проксі для Nike SNKRS: купуйте лімітовані релізи та створюйте безліч акаунтів

Використовуйте residential або mobile проксі для Nike SNKRS, щоб брати участь у розіграшах з кількох акаунтів, обходити IP-ліміти та купувати лімітовані дропи без банів. Який тип обрати та як налаштувати GProxy.

Guides 2 хв

Як налаштувати проксі на iPhone (Wi-Fi та SOCKS5)

Налаштуйте проксі на iPhone через стандартні параметри Wi-Fi (HTTP/HTTPS) або додаток для проксі, як-от Shadowrocket, для SOCKS5 та стільникового зв'язку. Покрокове налаштування iOS та обмеження, про які варто знати.

Guides 3 хв

Проксі для Tinder: мультиакаунтинг та уникнення банів

Використовуйте мобільні або резидентські проксі для Tinder, щоб керувати кількома профілями та уникати IP shadowbans. Чому мобільні виграють, як усе налаштувати та чому сам по собі проксі не змінить ваше місто.

Guides 2 хв

Проксі для StockX: моніторинг цін та керування акаунтами

Використовуйте residential, ISP або mobile проксі для StockX, щоб моніторити ціни, керувати кількома акаунтами та купувати дропи без банів. Ось який тип обрати та як налаштувати GProxy.

Guides 3 хв

Проксі для OpenAI API: доступ, ліміти (Rate Limits) та налаштування

Маршрутизуйте OpenAI API через residential або ISP проксі, щоб отримати доступ до підтримуваних регіонів, уникнути 429 rate limits та ізолювати акаунти. Який проксі використовувати плюс приклади налаштування Python.

Guides 1 хв

Налаштування проксі в Cypress для E2E тестування

Налаштування проксі в Cypress: змінні HTTP_PROXY, cy-proxy-middleware та тестування геозалежного контенту.

Спробуйте наші проксі

20,000+ проксі в 100+ країнах світу

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.