Ir al contenido
Guides 2 min de lectura 689 vistas

Usando Proxies en Kotlin

Configuración de proxy en Kotlin: OkHttp, Ktor, API de Proxy de Java, SOCKS5 y autenticación para aplicaciones Android y JVM.

Usando Proxies en Kotlin

Uso de Proxies en Kotlin

Proxies en Kotlin

Kotlin se ejecuta en la JVM y tiene acceso completo a la API de Java para trabajar con proxies. Además, las bibliotecas populares de Kotlin (OkHttp, Ktor) proporcionan sus propias APIs convenientes para configurar proxies.

OkHttp (Recomendado)

OkHttp es el cliente HTTP más popular para Kotlin/Android.

Proxy HTTP

import okhttp3.OkHttpClient
import okhttp3.Request
import java.net.InetSocketAddress
import java.net.Proxy

val proxy = Proxy(
    Proxy.Type.HTTP,
    InetSocketAddress("proxy_ip", 8080)
)

val client = OkHttpClient.Builder()
    .proxy(proxy)
    .build()

val request = Request.Builder()
    .url("https://httpbin.org/ip")
    .build()

client.newCall(request).execute().use { response ->
    println(response.body?.string())
}

Proxy SOCKS5

val proxy = Proxy(
    Proxy.Type.SOCKS,
    InetSocketAddress("proxy_ip", 1080)
)

val client = OkHttpClient.Builder()
    .proxy(proxy)
    .build()

Autenticación

import okhttp3.Authenticator
import okhttp3.Credentials
import okhttp3.Route

val proxyAuthenticator = Authenticator { _: Route?, response: okhttp3.Response ->
    val credential = Credentials.basic("username", "password")
    response.request.newBuilder()
        .header("Proxy-Authorization", credential)
        .build()
}

val client = OkHttpClient.Builder()
    .proxy(proxy)
    .proxyAuthenticator(proxyAuthenticator)
    .build()

Cliente Ktor

Ktor es un framework asíncrono de JetBrains, nativo de Kotlin.

Proxy HTTP

import io.ktor.client.*
import io.ktor.client.engine.okhttp.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import java.net.InetSocketAddress
import java.net.Proxy

val client = HttpClient(OkHttp) {
    engine {
        proxy = Proxy(
            Proxy.Type.HTTP,
            InetSocketAddress("proxy_ip", 8080)
        )
    }
}

suspend fun main() {
    val response: HttpResponse = client.get("https://httpbin.org/ip")
    println(response.bodyAsText())
    client.close()
}

Con Motor CIO

import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.request.*
import io.ktor.client.statement.*

val client = HttpClient(CIO) {
    engine {
        proxy = io.ktor.client.engine.ProxyBuilder.http("http://proxy_ip:8080")
    }
}

SOCKS a través de Ktor

val client = HttpClient(OkHttp) {
    engine {
        proxy = Proxy(
            Proxy.Type.SOCKS,
            InetSocketAddress("proxy_ip", 1080)
        )
    }
}

API de Proxy de Java

La API estándar de Java funciona en Kotlin:

import java.net.HttpURLConnection
import java.net.InetSocketAddress
import java.net.Proxy
import java.net.URL

val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("proxy_ip", 8080))
val url = URL("https://httpbin.org/ip")
val connection = url.openConnection(proxy) as HttpURLConnection

// Аутентификация
val encoded = java.util.Base64.getEncoder()
    .encodeToString("user:pass".toByteArray())
connection.setRequestProperty("Proxy-Authorization", "Basic $encoded")

connection.inputStream.bufferedReader().use { reader ->
    println(reader.readText())
}

Rotación de Proxies

import okhttp3.OkHttpClient
import okhttp3.Request
import java.net.InetSocketAddress
import java.net.Proxy

data class ProxyConfig(val host: String, val port: Int, val user: String, val pass: String)

val proxies = listOf(
    ProxyConfig("proxy1", 8080, "user", "pass"),
    ProxyConfig("proxy2", 8080, "user", "pass"),
    ProxyConfig("proxy3", 8080, "user", "pass"),
)

fun getClient(proxyConfig: ProxyConfig): OkHttpClient {
    val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(proxyConfig.host, proxyConfig.port))
    return OkHttpClient.Builder()
        .proxy(proxy)
        .proxyAuthenticator { _, response ->
            val credential = okhttp3.Credentials.basic(proxyConfig.user, proxyConfig.pass)
            response.request.newBuilder()
                .header("Proxy-Authorization", credential)
                .build()
        }
        .build()
}

fun fetchWithRotation(url: String): String? {
    val proxy = proxies.random()
    val client = getClient(proxy)
    val request = Request.Builder().url(url).build()
    return try {
        client.newCall(request).execute().use { it.body?.string() }
    } catch (e: Exception) {
        println("Failed with ${proxy.host}: ${e.message}")
        null
    }
}

Consideraciones Específicas de Android

Proxies del Sistema Android

En Android, puedes usar proxies del sistema:

val proxyHost = System.getProperty("http.proxyHost")
val proxyPort = System.getProperty("http.proxyPort")?.toIntOrNull()

NetworkSecurityConfig

Para trabajar con proxies en Android 7+, necesitas configurar network_security_config.xml para permitir el tráfico en texto claro (si el proxy es HTTP).

Retrofit + Proxy

val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("proxy_ip", 8080))
val okHttpClient = OkHttpClient.Builder().proxy(proxy).build()

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .client(okHttpClient)
    .addConverterFactory(GsonConverterFactory.create())
    .build()

Tiempos de Espera y Configuraciones

import java.util.concurrent.TimeUnit

val client = OkHttpClient.Builder()
    .proxy(proxy)
    .connectTimeout(10, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .retryOnConnectionFailure(true)
    .build()

Conclusión

Kotlin ofrece varias formas de trabajar con proxies: OkHttp para simplicidad y rendimiento, Ktor para un enfoque asíncrono basado en corrutinas, y la API estándar de Java para compatibilidad. Para el desarrollo de Android, OkHttp + Retrofit es el estándar de la industria. Todas las opciones soportan proxies HTTP y SOCKS5 con autenticación.

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.