統合

Shifterと一緒に使用する Python

ShifterのレジデンシャルおよびISPプロキシを数分でPythonスクリプトに統合できます。requests、aiohttp、Scrapy、Seleniumおよびすべての主要なPython HTTPライブラリとシームレスに動作します。

クイックスタート

インストール

pip install requests

基本的な使い方

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", ...}

機能

requests、aiohttp、httpx、urllib3を含むすべてのPython HTTPライブラリで動作します。
リクエストごと、セッション(sid)ごと、または設定可能なスティッキーセッション(ttl)を介した自動IP ローテーション
HTTP および SOCKS5 プロキシプロトコルの両方を完全サポート
Python 3.7+ および Scrapy、BeautifulSoup などの主要なスクレイピングフレームワークと互換性あり
ジオターゲティング対応、シンプルなユーザー名パラメーターで195カ国以上のプロキシを選択可能
追加SDKは不要。標準のプロキシ環境変数またはインライン設定でShifterを設定できます

基本リクエスト

PythonのHTTPライブラリの中で最も人気のあるライブラリでShifterプロキシを使用する最もシンプルな方法です。ユーザー名に国、地域、都市、またはASNを直接指定し、`sid`を渡すことでリクエスト間で同じIPを維持できます。

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)}")

aiohttpを使用した非同期とスティッキーセッション

高パフォーマンスの非同期スクレイピングにはaiohttpを使用してください。ユーザー名に`sid-XXX`を追加してリクエスト間で同じIPを維持するか、`ttl-N`を使用してN秒間のタイムドスティッキーセッションを設定します。

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

Scrapy ミドルウェア

カスタムダウンローダーミドルウェアを使用して、ShifterプロキシをScrapyスパイダーに統合します。ユーザー名に`country-uk`、`region-bavaria`、`city-london`、`asn-7922`などのセレクターを追加してジオターゲティングを行い、`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

SeleniumブラウザオートメーションをShifterプロキシ経由でルーティングします。JavaScriptレンダリングされたページのスクレイピングに最適です。都市レベルのターゲティングと`sid`を組み合わせることで、ブラウザセッション全体を通じて同じIPを維持できます。

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()
FAQ

よくある質問

Shifter と Python の併用に関するよくある質問。

ShifterプロキシURLを使用してproxies dictionaryを任意のrequestsメソッドに渡してください。形式は次の通りです: 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"}。その後、requests.get(url, proxies=proxies)を呼び出してください。

はい。Shifterのproxyは、aiohttp、httpx、Twistedを含むすべての非同期PythonのHTTPライブラリと連携します。ライブラリのproxyパラメータを使用してproxy URLを指定してください。aiohttpの場合はsession.get()のproxy引数を使用し、httpxの場合はClientコンストラクタでproxiesを設定します。

ShifterのローテーティングプロキシゲートウェイはIPのローテーションを自動的に処理します。デフォルトではリクエストごとにローテーションし、セッションID(sid)または有効期限(ttl)で制御することもできます。追加のコードは不要です。

はい。ShifterをScrapyと統合するには、request.meta['proxy'] をShifterのプロキシURLに設定するシンプルなダウンローダーミドルウェアを作成します。そのミドルウェアをDOWNLOADER_MIDDLEWARESの設定に追加すると、すべてのScrapyリクエストが自動的にShifterのレジデンシャルプロキシ経由でルーティングされます。

はい。SeleniumのChromeまたはFirefox WebDriverを、ブラウザオプション経由でShifterをHTTPプロキシとして使用するように設定してください。Chromeの場合は、ChromeOptionsで--proxy-serverフラグを使用します。認証済みプロキシの場合は、ブラウザ拡張機能またはワイヤープロトコルを使用して認証情報を渡すことができます。

ShifterのプロキシはHTTPプロキシをサポートする全てのPythonバージョンで動作し、Python 3.7以上が対象です。プロキシはHTTPレベルで設定されるため、バージョンに関わらず全てのPython HTTPライブラリと互換性があります。お好みのHTTPクライアント以外に特別なSDKやパッケージは不要です。

始める

でShifterを使い始める Python

Shifterの2億500万以上のレジデンシャルプロキシを5分以内にPythonスクリプトに統合できます。柔軟なIPローテーション、ジオターゲティング、および主要なPythonライブラリとの完全な互換性を提供します。

Shifterを無料で試す数分でセットアップ完了。いつでもキャンセル可能。