Usa Shifter con Python
Integra los proxies residenciales e ISP de Shifter en tus scripts de Python en minutos. Compatible con requests, aiohttp, Scrapy, Selenium y todas las principales bibliotecas HTTP de Python.
Inicio rápido
Instalar
pip install requests Uso básico
import requests
proxy_url = "customer-USERNAME-country-us-sid-123ABC:PASSWORD@p.shifter.io:443"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
response = requests.get("https://ipinfo.io/json", proxies=proxies)
print(response.json())
# {"ip": "154.16.xxx.xxx", "city": "New York", "country": "US", ...} Características
Ejemplos
Requests básico
La forma más sencilla de usar los proxies de Shifter con la biblioteca HTTP más popular de Python. Establece el país, región, ciudad o ASN directamente en el nombre de usuario y pasa un `sid` para mantener la misma IP entre solicitudes.
import requests
PROXY_USER = "customer-USERNAME-country-us-sid-123ABC"
PROXY_PASS = "PASSWORD"
PROXY_HOST = "p.shifter.io"
PROXY_PORT = "443"
proxies = {
"http": f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}",
"https": f"http://{PROXY_USER}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}",
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(
"https://example.com",
proxies=proxies,
headers=headers,
timeout=30,
)
print(f"Status: {response.status_code}")
print(f"Content length: {len(response.text)}") Async con aiohttp y sesiones persistentes
Usa aiohttp para scraping asíncrono de alto rendimiento. Añade `sid-XXX` al nombre de usuario para mantener la misma IP entre solicitudes, o `ttl-N` para una sesión persistente temporizada de N segundos.
import aiohttp
import asyncio
import uuid
# sid pins the same IP for every request that shares this session id;
# ttl-300 keeps that IP for up to 300 seconds, then rotates.
session_id = uuid.uuid4().hex[:8]
PROXY_URL = (
f"customer-USERNAME-country-us-sid-{session_id}-ttl-300:"
f"PASSWORD@p.shifter.io:443"
)
async def fetch(session, url):
async with session.get(
url, proxy=PROXY_URL, timeout=aiohttp.ClientTimeout(total=30)
) as response:
return await response.text()
async def main():
urls = [
"https://example.com/login",
"https://example.com/dashboard",
"https://example.com/orders",
]
async with aiohttp.ClientSession() as session:
tasks = [fetch(session, url) for url in urls]
results = await asyncio.gather(*tasks, return_exceptions=True)
for url, result in zip(urls, results):
if isinstance(result, Exception):
print(f"Error fetching {url}: {result}")
else:
print(f"Fetched {url}: {len(result)} bytes")
asyncio.run(main()) Middleware de Scrapy
Integra los proxies de Shifter en tus spiders de Scrapy con un middleware de descarga personalizado. Aplica geolocalización añadiendo selectores como `country-uk`, `region-bavaria`, `city-london` o `asn-7922` al nombre de usuario, y fija la sesión con un `sid`.
# middlewares.py
class ShifterProxyMiddleware:
PROXY_USER = "customer-USERNAME-country-uk-sid-456DEF"
PROXY_PASS = "PASSWORD"
PROXY_HOST = "p.shifter.io"
PROXY_PORT = "443"
def process_request(self, request, spider):
request.meta["proxy"] = (
f"http://{self.PROXY_USER}:{self.PROXY_PASS}"
f"@{self.PROXY_HOST}:{self.PROXY_PORT}"
)
# settings.py
DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.ShifterProxyMiddleware": 350,
}
# spider.py
import scrapy
class ProductSpider(scrapy.Spider):
name = "products"
start_urls = ["https://example.co.uk/products"]
def parse(self, response):
for product in response.css(".product-card"):
yield {
"title": product.css("h2::text").get(),
"price": product.css(".price::text").get(),
"url": product.css("a::attr(href)").get(),
}
next_page = response.css("a.next-page::attr(href)").get()
if next_page:
yield response.follow(next_page, self.parse) Selenium WebDriver
Enruta la automatización del navegador con Selenium a través de los proxies de Shifter. Ideal para extraer páginas renderizadas con JavaScript. Combina la segmentación a nivel de ciudad con un `sid` para mantener la misma IP durante toda la sesión del navegador.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
PROXY_HOST = "p.shifter.io"
PROXY_PORT = "443"
PROXY_USER = "customer-USERNAME-country-us-city-newyork-sid-789GHI"
PROXY_PASS = "PASSWORD"
chrome_options = Options()
chrome_options.add_argument(
f"--proxy-server=http://{PROXY_HOST}:{PROXY_PORT}"
)
driver = webdriver.Chrome(options=chrome_options)
# Handle proxy authentication via browser extension or seleniumwire if needed
driver.get("https://example.com")
# Wait for dynamic content to load
wait = WebDriverWait(driver, 10)
element = wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".content"))
)
print(f"Page title: {driver.title}")
print(f"Content: {element.text[:200]}")
driver.quit() Preguntas frecuentes
Preguntas frecuentes sobre el uso de Shifter con Python.
Pasa un diccionario proxies a cualquier método de requests con la URL de tu proxy de Shifter. El formato es: proxies = {"http": "customer-USERNAME-country-us-sid-123ABC:PASSWORD@p.shifter.io:443", "https": "customer-USERNAME-country-us-sid-123ABC:PASSWORD@p.shifter.io:443"}. Luego llama a requests.get(url, proxies=proxies).
Sí. Los proxies de Shifter funcionan con todas las bibliotecas HTTP asíncronas de Python, incluyendo aiohttp, httpx y Twisted. Pasa la URL del proxy usando el parámetro proxy de la biblioteca. Para aiohttp, usa el argumento proxy en session.get(). Para httpx, configura los proxies en el constructor de Client.
La pasarela de proxies rotativos de Shifter gestiona la rotación de IPs de forma automática. Rota por solicitud de manera predeterminada, o contrólalo mediante ID de sesión (sid) o tiempo de vida (ttl). No se necesita código adicional.
Sí. Puedes integrar Shifter con Scrapy creando un middleware de descarga sencillo que establezca request.meta['proxy'] en la URL de tu proxy de Shifter. Añade el middleware a tu configuración de DOWNLOADER_MIDDLEWARES y cada solicitud de Scrapy se enrutará automáticamente a través de los proxies residenciales de Shifter.
Sí. Configura el WebDriver de Chrome o Firefox de Selenium para usar Shifter como proxy HTTP mediante las opciones del navegador. Para Chrome, usa el flag --proxy-server en ChromeOptions. Para proxies autenticados, puedes usar una extensión del navegador o el protocolo wire para pasar las credenciales.
Los proxies de Shifter funcionan con cualquier versión de Python que admita proxies HTTP, lo que incluye Python 3.7 y versiones superiores. El proxy se configura a nivel HTTP, por lo que es compatible con todas las bibliotecas HTTP de Python independientemente de la versión. No se requiere ningún SDK ni paquete especial más allá de tu cliente HTTP preferido.
Empieza a usar Shifter con Python
Integra los más de 205M de proxies residenciales de Shifter en tus scripts de Python en menos de 5 minutos. Rotación de IP flexible, geolocalización y compatibilidad total con todas las principales bibliotecas de Python.