Respuesta rápida
¿Cómo uso un proxy ISP estático en el código?
Pasa la URL del proxy http://USERNAME:PASSWORD@IP:PORT (o socks5h:// para SOCKS5) a tu cliente HTTP: --proxy de curl, el argumento proxies de Python requests, o un agent en Node.js. PinnedIP alquila IPs ISP dedicadas de EE. UU. con ambos protocolos desde 2,03 US$ por 30 días (octubre de 2026); sin KYC, criptomonedas.
curl
curl admite ambos protocolos de forma nativa. socks5h hace que el proxy resuelva los nombres de host.
curl -s --proxy http://USERNAME:[email protected]:HTTP_PORT https://api.ipify.org?format=json
curl -s --proxy socks5h://USERNAME:[email protected]:SOCKS_PORT https://api.ipify.org?format=jsonPython (requests)
Instala requests (y requests[socks] para SOCKS5). Una sesión reutiliza la conexión, lo que es respetuoso con el destino y rápido.
import requests
PROXY = "http://USERNAME:[email protected]:8080" # or socks5h://...:SOCKS_PORT
session = requests.Session()
session.proxies = {"http": PROXY, "https": PROXY}
session.headers["User-Agent"] = "price-check/1.0 (contact: [email protected])"
response = session.get("https://api.ipify.org?format=json", timeout=20)
response.raise_for_status()
print(response.json()["ip"])
import itertools
import time
import requests
IPS = ["203.0.113.10", "203.0.113.11", "203.0.113.12"]
USER, PASSWORD, PORT = "USERNAME", "PASSWORD", 8080
URLS = ["https://example.com/", "https://example.org/"]
pool = itertools.cycle(IPS)
for url in URLS:
ip = next(pool)
proxy = f"http://{USER}:{PASSWORD}@{ip}:{PORT}"
r = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=20)
print(ip, url, r.status_code)
time.sleep(5) # keep a polite pace
Node.js
El módulo integrado fetch de Node no acepta una opción de proxy; usa ProxyAgent del paquete undici para proxies HTTP (Node 18 o posterior).
const { ProxyAgent, fetch } = require('undici');
const agent = new ProxyAgent('http://USERNAME:[email protected]:8080');
(async () => {
const res = await fetch('https://api.ipify.org?format=json', { dispatcher: agent });
const body = await res.json();
console.log(body.ip);
})();
¿Qué reglas se aplican a las solicitudes automatizadas?
Envía solicitudes a un ritmo que el sitio pueda soportar, identifica tu cliente cuando puedas, respeta robots.txt y los términos del sitio, y no recopiles datos personales que no tengas derecho a tratar. La banca en línea, los portales gubernamentales y de pago están bloqueados en todas las IP, al igual que los puertos SMTP 25, 465 y 587. La lista completa está en la política de uso aceptable.
Ejemplos de código: preguntas frecuentes
¿Por qué usar socks5h en lugar de socks5?
Con socks5h el proxy resuelve el nombre de host, así que las consultas DNS también pasan por la IP de EE. UU. Con socks5 tu propia máquina resuelve los nombres primero.
¿Por qué mi solicitud devuelve 407?
El proxy no recibió credenciales válidas. Comprueba el usuario y la contraseña, o añade tu propia IP a la lista de permitidas en el área de cliente y elimina las credenciales.
¿Puedo ejecutar muchas solicitudes en paralelo en una sola IP?
Sí, dentro del uso justo. Muchos sitios limitan las solicitudes por IP, así que distribuye el trabajo pesado entre varias IPs y mantén un ritmo respetuoso.