Desarrolladores

Proxies alojados

10 min de lecturaVer como Markdown ↗

Un proxy alojado envía el tráfico de una app a través de URnetwork cuando la app solo acepta un ajuste de proxy: curl, un script, un scraper o una app para el móvil como Shadowrocket. Esta guía muestra dónde encontrar la URL de un proxy en ur.io y cómo introducirla en los clientes más comunes.

Una nota sobre el alcance: un proxy alojado no tiene sesión sellada. Tu dispositivo cliente se ejecuta dentro del operador, que traduce el protocolo del proxy al de la red. Lo que se interpone entre el operador y tu tráfico es el diseño sin registros del proxy descrito en el modelo de amenazas, no un sellado. Los proveedores siguen sin saber quién eres. Cuando una app puede ejecutar URnetwork por sí misma, las apps y el SDK son el camino más privado.

Dos tipos de proxy

ur.io crea dos tipos de proxy que pueden usar los clientes de terceros:

Proxy HTTPSProxy SOCKS5
PlanTodos los planesUR Pro
URL en ur.iohttps://<token>.<host>:<port>socks5h://<token>:x@<host>:<port>
Dónde va el tokenEn el nombre de host, sin usuario ni contraseñaEn el usuario; la contraseña nunca se comprueba
El cliente debe admitirProxies HTTPS, que usan TLS hasta el proxySOCKS5 con usuario y contraseña
TransportaTráfico web: HTTP, y HTTPS mediante CONNECTConexiones TCP, y UDP mediante UDP associate

El proxy SOCKS5 no admite BIND y descarta los datagramas UDP de más de 2 KiB. ur.io también crea perfiles de WireGuard en UR Pro. Importa el archivo .conf descargado en una app de WireGuard; el resto de esta guía trata HTTPS y SOCKS5.

Obtén la URL de un proxy

  1. Inicia sesión en ur.io y abre Proxies (Proxies) (ur.io/app/proxies).
  2. Elige Crear proxy (Create proxy).
  3. Elige el tipo de proxy: HTTPS, SOCKS5 o WireGuard. SOCKS5 y WireGuard llevan una insignia Pro. En el plan gratuito, el botón de crear ofrece Pro primero.
  4. Elige una ubicación. Busca un país, una región o una ciudad, o deja Mejor disponible (Best available), que usa cualquier proveedor de la red. Las ubicaciones muestran cuántos proveedores tienen.
  5. Elige Create HTTPS proxy o Create SOCKS5 proxy. El nuevo proxy aparece con su URL.

Cada proxy HTTPS y SOCKS5 de la lista tiene Copiar URL (Copy URL), que copia la URL completa con su token, y ×, que elimina el proxy.

Lee la URL

Text
https://<token>.<host>:<port>
socks5h://<token>:x@<host>:<port>
  • <token> es el token del proxy, una larga serie de letras y dígitos. Es la única credencial del proxy, y no importa si las letras están en mayúsculas o minúsculas.
  • En la URL HTTPS, el token es la primera etiqueta del nombre de host. Introduce <token>.<host> como host del proxy, exactamente como lo muestra ur.io: el token del nombre es lo que te identifica.
  • En la URL SOCKS5, el token está entre socks5h:// y :x@. <host> va después de la @, y <port> después del último :.
  • La x es una contraseña de relleno. El proxy SOCKS5 nunca comprueba la contraseña, así que cualquier valor sirve. Algunos clientes solo envían el usuario cuando también hay una contraseña, entre ellos requests de Python, y la URL de ur.io lleva la x para ellos. Si un cliente pide el usuario y la contraseña por separado, dale el token y cualquier contraseña.
  • Conserva la h de socks5h. Permite que el proxy resuelva los nombres de host, de modo que las consultas salen a través del proveedor en lugar de desde tu equipo. Con socks5 a secas, curl resuelve primero los nombres en tu equipo.

Trata la URL como una contraseña. Cualquiera que la tenga puede usar el proxy, y el tráfico del proxy consume los datos de tu cuenta. Si una URL se filtra, elimina ese proxy en ur.io y el proxy dejará de aceptar su token. Después crea uno nuevo.

Comprueba que funciona con curl

Shell
# HTTPS proxy, on every plan
curl -x 'https://<token>.<host>:<port>' https://api.bringyour.com/my-ip-info

# SOCKS5 proxy, on UR Pro
curl -x 'socks5h://<token>:x@<host>:<port>' https://api.bringyour.com/my-ip-info

/my-ip-info responde con la dirección de la que vino tu solicitud y dónde está esa dirección. A través del proxy, es la dirección de un proveedor en la ubicación que elegiste. Los proxies HTTPS necesitan curl 7.52 o posterior.

Navegadores

La forma más sencilla de pasar un navegador por un proxy es la extensión de URnetwork, que crea y gestiona su propio proxy alojado. Consulta Primeros pasos en tu navegador.

Para usar en su lugar un proxy que creaste en ur.io, usa su URL HTTPS. Chrome no puede enviar ningún usuario SOCKS5. Los ajustes de proxy del sistema operativo y los ajustes manuales de proxy de Firefox por lo general no pueden describir un proxy HTTPS.

Chrome, Edge y otros navegadores Chromium. Inicia el navegador con el proxy en su línea de comandos. El directorio de perfil aparte hace que la opción funcione incluso con la ventana habitual del navegador abierta:

Shell
# macOS
open -na "Google Chrome" --args --user-data-dir="$HOME/urnetwork-proxy-profile" --proxy-server="https://<token>.<host>:<port>"

# Linux
google-chrome --user-data-dir="$HOME/urnetwork-proxy-profile" --proxy-server="https://<token>.<host>:<port>"

# Windows, in Command Prompt (Edge: msedge instead of chrome)
start chrome --user-data-dir="%USERPROFILE%\urnetwork-proxy-profile" --proxy-server="https://<token>.<host>:<port>"

Firefox. Los ajustes manuales de Firefox no tienen campo de usuario para SOCKS ni tipo de proxy HTTPS, así que usa un archivo de configuración automática de proxy (PAC) de una sola línea. Guarda esto como urnetwork.pac:

js
function FindProxyForURL(url, host) {
  return "HTTPS <token>.<host>:<port>";
}

Después abre Ajustes → General → Configuración de red → Configuración… (Settings → General → Network Settings → Settings…), elige URL de configuración automática del proxy (Automatic proxy configuration URL), introduce la dirección del archivo, por ejemplo file:///Users/you/urnetwork.pac o file:///C:/Users/you/urnetwork.pac, y elige Aceptar (OK). Para dejarlo, elige Sin proxy (No proxy) en el mismo cuadro de diálogo.

Apps para el móvil: Shadowrocket y otras

Las apps de proxy para el móvil, como Shadowrocket en iOS, configuran un servidor SOCKS5 mediante unos pocos campos. Crea un proxy SOCKS5 en ur.io (UR Pro) y copia su URL. En la app, añade un servidor y rellénalo a partir de la URL:

CampoValor
Tipo (Type)SOCKS5
Dirección, servidor o host (Address)<host>: la parte entre @ y el último :
Puerto (Port)<port>: los dígitos después del último :
Usuario o nombre de usuario (User)<token>: la parte entre socks5h:// y :x@
Contraseña (Password)Cualquier valor, por ejemplo x

Guarda el servidor, selecciónalo y activa la conexión. Para todo el teléfono, la app de URnetwork para iOS o Android no necesita proxy y es el camino más privado.

Python

requests acepta cualquiera de los dos proxies. SOCKS5 necesita el extra socks (pip install "requests[socks]"), y su URL necesita una contraseña de relleno:

python
import requests

proxy = "https://<token>.<host>:<port>"          # HTTPS proxy, every plan
# proxy = "socks5h://<token>:x@<host>:<port>"    # SOCKS5 proxy, UR Pro

r = requests.get(
    "https://api.bringyour.com/my-ip-info",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
print(r.json()["info"]["ip"])

httpx acepta las mismas URL; SOCKS5 necesita pip install "httpx[socks]". aiohttp acepta el proxy HTTPS:

python
import asyncio

import aiohttp
import httpx

with httpx.Client(proxy="https://<token>.<host>:<port>") as client:
    print(client.get("https://api.bringyour.com/my-ip-info").json())


async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.bringyour.com/my-ip-info", proxy="https://<token>.<host>:<port>") as r:
            print(await r.json())

asyncio.run(main())

El gestor de descargas predeterminado de Scrapy no puede obtener páginas https:// a través de un proxy HTTPS: se detiene con «HTTPS proxies for HTTPS destinations are not supported». Obtén esas páginas con una de las bibliotecas anteriores.

Node.js

Para fetch, pasa el proxy HTTPS al ProxyAgent de undici:

js
import { fetch, ProxyAgent } from "undici";

const dispatcher = new ProxyAgent("https://<token>.<host>:<port>");
const res = await fetch("https://api.bringyour.com/my-ip-info", { dispatcher });
console.log(await res.json());

Para node:https y las bibliotecas que aceptan un agente, usa https-proxy-agent, o socks-proxy-agent para SOCKS5:

js
import https from "node:https";
import { HttpsProxyAgent } from "https-proxy-agent";
// import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new HttpsProxyAgent("https://<token>.<host>:<port>");
// const agent = new SocksProxyAgent("socks5h://<token>:x@<host>:<port>");

https.get("https://api.bringyour.com/my-ip-info", { agent }, (res) => res.pipe(process.stdout));

Otros programas: proxychains

En Linux, proxychains-ng envía las conexiones de un programa a través de un proxy SOCKS5 (UR Pro) incluso cuando el programa no tiene ajuste de proxy. Funciona precargando una biblioteca, así que no llega a los programas enlazados estáticamente, entre ellos la mayoría de los programas en Go. Su primer proxy debe ser una dirección IP, no un nombre de host, así que busca primero la dirección:

Shell
dig +short <host>

Guarda un archivo de configuración, urnetwork.conf, con esa dirección:

Text
strict_chain
proxy_dns
[ProxyList]
socks5 <ip> <port> <token> x

Después ejecuta los programas a través de él:

Shell
proxychains4 -f urnetwork.conf curl https://api.bringyour.com/my-ip-info

proxy_dns hace que proxychains resuelva los nombres a través del proxy. Si las conexiones dejan de funcionar más adelante, vuelve a buscar la dirección.

Límites

Plan gratuitoUR Pro
Proxies activos51.000
Proxies nuevos por minuto520

Los proxies que crea la extensión del navegador también cuentan. Un límite solo impide crear proxies nuevos: los proxies que tienes siguen funcionando, y eliminar uno deja sitio para otro. Un proxy se mantiene hasta que lo eliminas; uno que pasa unos 30 días sin usarse se elimina por ti.

IP de salida única

Un proxy alojado suele repartir sus conexiones entre varios proveedores, así que dos de tus proxies pueden salir por la misma dirección. Con una IP de salida única, en UR Pro, cada proxy sale a través de un único proveedor cuya dirección no usa ninguno de tus otros proxies. Un proxy conserva su salida mientras ese proveedor siga en buen estado.

  • Actívala: en la página Proxies, marca IP de salida única (Unique exit IP) al crear un proxy. Ajusta Número de proxies (Number of proxies) para crear hasta 20 a la vez. En la API, añade "unique_exit": true a la proxy_config.
  • Límites: los proxies con salida única cuentan para los mismos límites que cualquier otro proxy, 1.000 activos y 20 nuevos por minuto.
  • Lo que ves: cada proxy muestra dónde está su salida (ciudad, región y país) y desde cuándo. La dirección IP de la salida no se muestra. Para verla, consulta una comprobación de IP a través del proxy, por ejemplo con los comandos de curl de arriba.
  • Si el proveedor falla: el proxy obtiene automáticamente una nueva salida única y muestra Reemplazando la salida… (Replacing exit…) mientras tanto. Los reemplazos están limitados por hora; por encima del límite, un proxy espera y lo vuelve a intentar más tarde. En la API, "unique_exit_replace": "manual" hace que un proxy te espere: muestra Se perdió la salida (Exit lost) hasta que la cambies.
  • Cambiar salida (Rotate exit): da al proxy una nueva salida única. La salida de un proxy se puede cambiar una vez por minuto y hasta 60 veces al día. Si no queda libre otra salida única en la ubicación, el proxy conserva la que tiene.
  • No hay salida única disponible: cuando todas las salidas en buen estado de la ubicación ya las usan tus otros proxies, ur.io lo indica y no crea nada; el intento no cuenta para tus límites. Elige otra ubicación, o Mejor disponible.

Solución de problemas

ur.io se niega a crear un proxy. Muestra el motivo (los mensajes están en inglés). En el plan gratuito:

  • «Your plan's limit of 5 active proxies is reached. Remove a proxy to create another, or upgrade to UR Pro for more.» (Se alcanzó el límite de 5 proxies activos de tu plan.) Elimina los proxies que ya no uses, o pásate a Pro.
  • «Your plan allows 5 new proxies a minute. Try again in a minute, or upgrade to UR Pro for more.» (Tu plan permite 5 proxies nuevos por minuto.) Espera un minuto y vuelve a intentarlo.

En UR Pro, los mismos mensajes indican los límites de Pro y omiten la mejora de plan.

El proxy SOCKS5 rechaza el inicio de sesión. curl muestra uno de estos mensajes, y otros clientes los formulan a su manera:

  • User was rejected by the SOCKS5 server (1 1). El token es incorrecto o está incompleto, o el proxy se eliminó. Vuelve a copiar la URL de ur.io.
  • No authentication method was acceptable. El cliente no envió ningún usuario. Pon el token como usuario, con una contraseña de relleno como x.

El proxy HTTPS rechaza la conexión. curl muestra CONNECT tunnel failed, response N, donde N es:

  • 407: el proxy no encontró un token válido. Vuelve a copiar la URL de ur.io e introduce el <token>.<host> completo como host del proxy.
  • 502: el proxy ya no existe, por ejemplo porque lo eliminaste, o no se pudo llegar al destino.
  • 403: la dirección de quien llama está fuera del bloqueo de IP del proxy. Solo tienen uno los proxies creados mediante la API con un bloqueo de IP.

Un cliente que recibe una respuesta vacía, o una conexión que se cierra al instante, probablemente le habla HTTP sin cifrar al proxy. Usa la URL https:// en un cliente que admita proxies HTTPS.

Las páginas van lentas o agotan el tiempo de espera. Prueba Mejor disponible, o una ubicación con más proveedores. El tráfico del proxy consume los datos de tu cuenta, así que una cuenta sin datos restantes no puede abrir conexiones nuevas.

La IP de salida cambia. Igual que en las apps, un proxy alojado reparte sus conexiones entre varios proveedores de su ubicación. La dirección que ve un sitio puede cambiar de una conexión a la siguiente. Para mantener una IP de salida por proxy, créalo con una IP de salida única en UR Pro.

El proxy está en el lugar equivocado. Mejor disponible puede salir por cualquier país. Elige un país, una región o una ciudad al crear el proxy. ur.io no puede mover un proxy que ya tienes: crea uno nuevo en el lugar que quieras y después elimina el anterior.

Automatiza con la API

La página Proxies llama a la API del operador: POST /network/auth-client con una proxy_config, donde initial_device_state.location elige la ubicación. La proxy_config_result de la respuesta lleva https_proxy_url, socks_proxy_url y auth_token. La socks_proxy_url de la API no lleva usuario: añade auth_token como usuario, como hace ur.io. Una lock_ip_list de direcciones IP o subredes limita quién puede usar el proxy. Los límites anteriores también se aplican a la API.

Para una IP de salida única, añade unique_exit a la proxy_config:

JSON
{
  "proxy_config": {
    "unique_exit": true,
    "initial_device_state": {
      "location": { "connect_location_id": { "best_available": true } }
    }
  }
}

Añade "unique_exit_replace": "manual" para mantener un proxy en su salida cuando falle su proveedor, hasta que la cambies; el valor predeterminado es "auto".

La proxy_config_result.exit de la respuesta da el exit_id, country_code, region, city, exit_since y state (assigned, replacing o no_supply) de la salida, el state_reason cuando lo hay, y el replace_mode. GET /network/proxies informa de lo mismo como el exit de cada proxy, junto a su proxy_client. Un rechazo con no_unique_supply significa que a la ubicación no le queda ninguna salida que tus proxies no usen ya. POST /network/proxy/rotate-exit con el client_id del proxy lo mueve a una nueva salida única y responde con el nuevo exit; lo rechaza con rate_limited por encima del límite de cambios, o con no_unique_supply cuando no queda libre ninguna otra salida. Acepta el inicio de sesión de tu red o una clave de API.