En el web scraping clásico, los desarrolladores pasan horas escribiendo gestores de rotación: es necesario cargar una lista de 1000 IPs, validar cada una, excluir las bloqueadas y asegurarse de que las IPs no se repitan.
En CyberYozh App hemos cambiado las reglas del juego. No necesitas una lista de proxies. Necesitas una sola dirección que cambie la IP automáticamente por ti. Toda la magia de la configuración no ocurre en el código, sino en nuestro Generador de credenciales (disponible para proxies residenciales rotativos).
En esta guía, analizaremos cómo configurar la rotación automática y las sesiones Sticky en Python en solo 3 minutos, utilizando nuestros proxies residenciales.
🛠 Parte 1. Preparación en CyberYozh App
Antes de abrir PyCharm, entremos al área de cliente. Necesitamos obtener los accesos correctos. En la sección «Mis proxies», haz clic en el botón «Generar credenciales».

Fig. 1. Botón "Generar credenciales" (creds) en el área de cliente.
Aquí es donde gestionas la lógica de comportamiento del proxy. Tenemos 3 modos que cambian cómo se comportará el proxy en tu código:
IP Aleatoria (Random /
-res-any): Cada nueva solicitud = Nueva IP. Ideal para monitoreo de precios y recolección de datos.Sesión corta (Targeting): La IP se mantiene hasta 1 minuto. Útil para trabajos específicos en una ciudad o estado concreto.
Sesión larga (Long /
-resfix): La IP se te asigna por un periodo de hasta 6 horas (Sticky Session). Ideal para iniciar sesión en sitios web sin que se cierre la sesión.

Fig. 2. Opción de selección de tipo de sesión en el generador: aleatoria, corta y larga.

Fig. 3. Botón de generación de datos para la conexión.
⚠️ Detalle importante sobre los puertos: A diferencia de otros servicios, hemos separado los puertos para mayor estabilidad:
Para requests (HTTP/HTTPS) utiliza el puerto 5959.
Para clientes SOCKS5 utiliza el puerto 9595.
👉 Puedes leer más sobre la rotación para proxies residenciales aquí.
💻 Parte 2. Escenario «Scraping»: Auto-rotación (Random IP)
Objetivo: Realizar 10 solicitudes a un sitio web de modo que cada vez el sitio nos vea como un usuario nuevo. Antes necesitarías una lista de 10 proxies. Con CyberYozh App, solo necesitas una línea con el prefijo -res-any.
import requests
# Datos del Generador (Modo Random IP)
# ¡Presta atención al puerto 5959 para HTTP!
PROXY_HOST = "51.77.190.247"
PROXY_PORT = "5959"
PROXY_USER = "pcJcWhGag4-res-any" # El prefijo -res-any activa la rotación
PROXY_PASS = "tu_contraseña"
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
proxies = {
"http": proxy_url,
"https": proxy_url
}
url = "https://httpbin.org/ip" # Sitio que mostrará nuestra IP
print("--- Iniciando scraping con rotación ---")
for i in range(5):
try:
# Cada vez que se llama al mismo enlace, CyberYozh entregará una IP nueva
response = requests.get(url, proxies=proxies, timeout=10)
current_ip = response.json()['origin']
print(f"Solicitud {i+1}: Tu IP externa -> {current_ip}")
except Exception as e:
print(f"Error: {e}")
🚀 Parte 3. Escenario «Cuentas»: Sesiones Sticky (Long Session)
Objetivo: Iniciar sesión en un sitio y navegar por las páginas internas durante 30 minutos sin cambiar de IP, para no recibir un baneo por actividad sospechosa.
En el generador de CyberYozh App selecciona «Sesión larga». El sistema te dará un usuario con un token único (por ejemplo, ...-resfix-us-nnid-9d016...). Mientras uses este usuario, la IP será invariable (hasta por 6 horas).
import requests
# Datos del Generador (Modo Long Session)
# El usuario ahora es largo, ya que incluye el ID de sesión
PROXY_USER = "pcJcWhGag4-resfix-us-nnid-9d016abcd"
PROXY_PASS = "tu_contraseña"
PROXY_HOST = "51.77.190.247"
PROXY_PORT = "5959"
proxy_url = f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
# Utilizamos requests.Session para mantener cookies y encabezados
session = requests.Session()
session.proxies = {
"http": proxy_url,
"https": proxy_url
}
# Imitamos a un navegador
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."
})
print("--- Trabajando en una sola sesión ---")
# Paso 1. Entramos a la principal (obtenemos IP)
r1 = session.get("https://httpbin.org/ip")
ip1 = r1.json()['origin']
print(f"Paso 1: Nuestra IP es {ip1}")
# Paso 2. Hacemos algo útil (la IP debe seguir siendo la misma)
r2 = session.get("https://httpbin.org/ip")
ip2 = r2.json()['origin']
print(f"Paso 2: Nuestra IP es {ip2}")
if ip1 == ip2:
print("¡Éxito! La sesión se mantiene, puedes trabajar de forma segura con la cuenta.")
else:
print("¡Atención! La IP ha cambiado (revisa la configuración del generador).")
📱 Parte 4. Proxies móviles (Private 4G/LTE): Controlando el módem mediante código
Con los proxies residenciales rotativos es sencillo: llamas a un enlace y nuestro sistema te asigna una IP nueva del pool. Con los proxies móviles privados (Private) la mecánica es diferente. Tienes un módem USB real. Para cambiar la IP, ese módem debe reiniciarse físicamente (reconectarse a la antena de telefonía).
En CyberYozh App, para los puertos privados (canales), proporcionamos un enlace API especial. Si se accede a él, el módem se reiniciará.
Detalle principal: El cambio de IP en los proxies móviles requiere tiempo (10-20 segundos). Si tu script no sabe esperar, fallará con un error de tipo ConnectionError.

Fig. 4. Enlace para el cambio de dirección IP en la tarjeta de un proxy móvil dedicado (Private).
Implementación de la función Reboot (Cambio de IP)
Escribamos una función que llame al enlace API y ponga el script en pausa mientras el módem busca una nueva antena.
import requests
import time
# --- AJUSTES DEL PANEL DE CYBERYOZH APP ---
MOBILE_PROXY = "http://LOGIN:PASS@IP:PORT" # Tus datos de acceso
ROTATION_LINK = "https://app.cyberyozh.com/api/v1/..." # Enlace del campo «Enlace para cambio de dirección IP»
def change_mobile_ip(api_link):
"""
Función para reiniciar el módem móvil.
"""
print(f"♻️ Iniciando cambio de IP...")
try:
# 1. Enviamos la señal de reinicio
r = requests.get(api_link)
if r.status_code == 200:
print("✅ Comando aceptado por el módem.")
else:
print(f"⚠️ Error de API: {r.status_code}")
return False
# 2. MOMENTO CRÍTICO: Esperamos el reinicio
# El módem necesita tiempo para cortar la conexión y buscar una antena nueva.
# Normalmente son entre 10 y 20 segundos.
wait_time = 15
print(f"⏳ Esperando {wait_time} seg. a que el módem se reconecte...")
time.sleep(wait_time)
return True
except Exception as e:
print(f"Error al solicitar a la API: {e}")
return False
# --- EJEMPLO DE USO ---
proxies = {"http": MOBILE_PROXY, "https": MOBILE_PROXY}
# Paso 1. Trabajamos con la IP actual
try:
ip_old = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10).json()['origin']
print(f"IP antigua: {ip_old}")
except:
print("El proxy no está disponible todavía o hay un error de red.")
# Paso 2. Cambiamos la IP (si recibimos ban o terminamos el ciclo)
change_mobile_ip(ROTATION_LINK)
# Paso 3. Comprobamos la IP nueva
try:
# Importante: aquí puede saltar un error si 15 seg. no fueron suficientes.
# Lo ideal es añadir un ciclo de reintentos (como en la Parte 3).
ip_new = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10).json()['origin']
print(f"IP nueva: {ip_new}")
except Exception as e:
print("El módem aún no se ha levantado, intenta aumentar time.sleep()")
💡 Truco: Passive OS Fingerprint (Suplantación de huella)
Para los usuarios de planes Private en CyberYozh App está disponible una función genial: Passive OS Fingerprint. Si estás haciendo scraping de la versión móvil de un sitio (como Instagram o TikTok), el sitio web verifica los encabezados TCP/IP. Sería extraño que tu User-Agent diga "Soy un iPhone" pero los paquetes de red digan "Soy un Windows Server".
Para aumentar la confianza, sincroniza los encabezados en Python:
headers = {
# ¡Este User-Agent debe coincidir con el ajuste de Fingerprint en el panel de CyberYozh!
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X)..."
}
# Si en el panel está activado el perfil "iOS" y envías este encabezado —
# para el sitio web parecerás un usuario de iPhone 100% real con internet LTE.
⚠️ Advertencia importante para proxies Shared
Si has comprado el plan Proxies móvilesShared (Compartidos), el código anterior con el enlace API no funcionará.
Por qué: En un módem compartido hay otras personas. Si lo reinicias, se quedarán sin internet.
Cómo trabajar: Simplemente realiza las solicitudes en un bucle
while True. El sistema cambiará la IP automáticamente mediante un temporizador (cada 5-10 minutos). Solo tienes que gestionar los errores de conexión en los momentos del cambio.
👉 Puedes leer más sobre los proxies móviles aquí.
🛡 Parte 5. Errores frecuentes en la integración
Incluso con una herramienta tan cómoda, puede haber contratiempos. Aquí tienes los 3 problemas principales que llegan a nuestro soporte y cómo resolverlos en el código:
Error
ProxyErroro conexión reiniciada:Causa: Has confundido los puertos.
Solución: Verifica que en Python
requestsestés utilizando el puerto 5959 (HTTP). El puerto 9595 es solo para clientes SOCKS (como Telegram o Proxifier); la libreríarequestsno gestiona SOCKS5 de forma estable sin módulos adicionales.
La IP cambia demasiado a menudo (en modo Sticky):
Causa: Estás usando el usuario
-res-anyen lugar del token generado.Solución: Vuelve al Generador, selecciona «Sesión larga» y copia la cadena completa del usuario con el token
nnid.
Authentication Failed:
Causa: Un espacio extra.
Solución: Al copiar desde el panel, a menudo se incluye un espacio invisible al final del usuario o la contraseña. La función
strip()en Python salvará tus nervios:PROXY_USER = "pcJcWhGag4-res-any ".strip() # Eliminará espacios
Conclusión
El uso de proxies residenciales rotativos y móviles privados de CyberYozh App te libra de la necesidad de escribir gestores de rotación complejos en tu código.
¿Necesitas scraping? Usa el prefijo
anyy obtén millones de IPs.¿Necesitas gestionar cuentas? Usa el prefijo
fixy obtén estabilidad.
👉 Pruébalo ahora mismo: Ve a la sección «Mis proxies», genera credenciales para proxies residenciales rotativos o usa el enlace para el cambio de IP en proxies móviles privados y ejecuta el código anterior.
