Integración

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

Compatible con todas las bibliotecas HTTP de Python, incluyendo requests, aiohttp, httpx y urllib3
Rotación automática de IP por solicitud, por sesión (sid) o mediante sesiones persistentes configurables (ttl)
Soporte completo para los protocolos de proxy HTTP y SOCKS5
Compatible con Python 3.7+ y todos los principales frameworks de scraping como Scrapy y BeautifulSoup
Soporte de geolocalización, selecciona proxies de más de 195 países mediante parámetros de nombre de usuario simples
No se requiere ningún SDK adicional; configura Shifter usando variables de entorno de proxy estándar o ajustes en línea

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

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).

Comenzar

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.

Prueba Shifter gratisConfiguración en minutos. Cancela cuando quieras.