Ir al contenido
Guides 3 min de lectura 705 vistas

Usando Proxy en Dart/Flutter

Configuración de Proxy en Dart y Flutter: HttpClient, dio, SOCKS5, y Peculiaridades de Trabajar con Proxies en Aplicaciones Móviles.

Usando Proxy en Dart/Flutter

Uso de Proxies en Dart/Flutter

Proxies en Dart/Flutter

Dart es un lenguaje de programación para aplicaciones Flutter. Trabajar con proxies en Dart se realiza a través del HttpClient estándar y bibliotecas populares (dio, http).

HttpClient Estándar

Proxy HTTP

import 'dart:io';

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

  // Configuración del proxy
  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();
}

Con Autenticación

import 'dart:io';

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

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

  // Manejo de la autenticación del proxy
  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();
}

Conexión Directa (Sin Proxy)

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

Enrutamiento Condicional

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

Biblioteca Dio

Dio es la biblioteca HTTP más popular para Flutter.

Instalación

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

Proxy HTTP con Dio

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

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

  // Configuración del proxy a través del adaptador HttpClient
  (dio.httpClientAdapter as IOHttpClientAdapter).createHttpClient = () {
    final client = HttpClient();
    client.findProxy = (uri) {
      return "PROXY proxy_ip:8080";
    };
    // Para certificados autofirmados (pruebas)
    client.badCertificateCallback = (cert, host, port) => true;
    return client;
  };

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

Con Autenticación

(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;
};

Proxy SOCKS5

Vía socks5_proxy

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

void main() async {
  // Creando un cliente SOCKS5
  final proxy = SocksTCPClient.connect(
    [ProxySettings(InternetAddress("proxy_ip"), 1080,
      password: Password("username", "password"))],
    InternetAddress("93.184.216.34"), // IP de destino
    80,
  );

  // Usar el socket para solicitudes HTTP
}

Vía Proxy del Sistema con SOCKS

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

Nota: El HttpClient estándar en Dart solo soporta PROXY (HTTP) y DIRECT. Para SOCKS, se requieren bibliotecas de terceros.

Especificidades de Flutter

Configuración de Android

Android requiere la configuración de network_security_config.xml para trabajar con proxies HTTP de texto claro:

<!-- 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>

Configuración de iOS

Para iOS, los proxies funcionan a través de la configuración del sistema URLSession. Una aplicación Flutter utiliza automáticamente el proxy del sistema.

Variables de Entorno

En modo de depuración, los proxies se pueden configurar mediante variables:

// Vía argumentos de lanzamiento
// flutter run --dart-define=HTTP_PROXY=http://proxy_ip:8080

Rotación de Proxies

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)];
  };

  // Las solicitudes usarán diferentes 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();
}

Manejo de Errores

try {
  final request = await client.getUrl(uri);
  final response = await request.close();
  // manejar respuesta
} on SocketException catch (e) {
  print("Error de conexión: $e");
} on HttpException catch (e) {
  print("Error HTTP: $e");
} on HandshakeException catch (e) {
  print("Error TLS/SSL: $e");
} catch (e) {
  print("Error inesperado: $e");
}

Conclusión

Dart y Flutter proporcionan herramientas básicas pero suficientes para trabajar con proxies HTTP. Para escenarios avanzados (SOCKS5, autenticación), utiliza Dio con un adaptador HttpClient personalizado. Al desarrollar aplicaciones Flutter, considera las características específicas de la plataforma Android e iOS.

Actualizado: 06.03.2026
Volver a la categoría

Leer también

Guides 2 min

Proxy para Nike SNKRS: Consigue lanzamientos limitados y múltiples entradas con GProxy

Usa proxies residenciales o móviles para Nike SNKRS para participar en sorteos con múltiples cuentas, superar los límites de IP y hacer cop de drops limitados sin baneos. Qué tipo elegir y cómo configurarlo.

Guides 2 min

Cómo configurar un proxy en iPhone (Wi-Fi y SOCKS5)

Configura un proxy en iPhone mediante los ajustes nativos de Wi-Fi (HTTP/HTTPS) o una aplicación de proxy como Shadowrocket para SOCKS5 y cobertura celular. Configuración paso a paso en iOS y las limitaciones que debes conocer.

Guides 3 min

Proxy para Tinder: Cuentas Múltiples y Evitar Bloqueos

Usa proxies móviles o residenciales para Tinder para gestionar múltiples perfiles y evitar shadowbans de IP. Por qué el móvil gana, cómo configurarlo y por qué un proxy por sí solo no cambiará tu ciudad.

Guides 2 min

Proxy para StockX: Monitoree precios y gestione cuentas

Usa proxies residenciales, ISP o móviles para StockX para monitorear precios, manejar múltiples cuentas y hacer cop de drops sin baneos. Aquí tienes qué tipo elegir y cómo configurarlo.

Guides 3 min

Proxy para la API de OpenAI: acceso, límites de velocidad y configuración

Enrute la OpenAI API a través de un proxy residencial o ISP para acceder a regiones compatibles, esquivar límites de tasa 429 e aislar cuentas. Qué proxy usar más ejemplos de configuración en Python.

Guides 1 min

Aquí tienes las traducciones:

Configurando Proxy en Cypress para Pruebas E2E

Pruebe nuestros proxies

20,000+ proxies en 100+ países del mundo

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