KYC不要 — 身分証明書も自撮りも書類も不要。暗号通貨で支払い: BTC, USDT, USDC, ETH, SOL, LTC · $25からチャージ
言語: 日本語
プロキシを購入

ガイド · Python

PythonでUSプロキシを使う:requests、httpx、Scrapy、Playwright

米国の州、市、ZIPコードターゲティング、ローテーション、スティッキーセッション、リトライ、レート制限を備えた、最も多くのスクレイパーが使う4つのPythonツール向けの動作コード。

最終更新: · 著者 StatesideIP

クイックアンサー

Pythonで米国プロキシをどう使う?

StatesideIPは、KYC不要の米国レジデンシャルプロキシと4Gモバイルプロキシのプロバイダーで、Python用米国プロキシを1つのゲートウェイgw.statesideip.com経由で提供します。HTTP/HTTPSはポート7777、SOCKS5はポート7778です。場所情報はユーザー名に入れ、例としてUSERNAME-country-us-state-nyのように指定します。レジデンシャルトラフィックは2026年10月時点で$0.52/GBから開始。KYC不要—本人確認書類、セルフィー、書類提出は不要。暗号通貨で支払い可能。

Python用接続詳細

ゲートウェイホストgw.statesideip.com
HTTP/HTTPSポート7777
SOCKS5ポート7778
ユーザー名の形式USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}
プロトコルHTTP、HTTPS(CONNECT)、SOCKS5
ローテーションリクエストごとに新しいIP、または同じIPを維持するスティッキーセッション
スティッキーセッション1〜120分、ttlパラメータでセッションごとに設定
ここで使われるテストエンドポイントhttps://api.ipify.org?format=json
価格$0.52/GBから; $1.50(1 GB向け)
KYC不要および支払いKYC不要 — ID不要、自撮り不要、書類不要。暗号通貨で支払い。

Pythonで米国プロキシを使う前に何が必要ですか?

Python 3、pip、そしてStatesideIPのユーザー名とパスワードが必要です。セットアップは5ステップで完了します。

  1. 小規模プランを購入

    1 GBプランは価格ページ]で$1.50の料金で、BTC、USDT、USDC、ETH、LTC、またはSOLで支払えます。

  2. 認証情報をコピーしてください

    確認済みの暗号通貨残高からプランを購入すると、認証情報がすぐにダッシュボードに表示されます。以下のコードはそれらをUSERNAMEとPASSWORDとして書き込みます。

  3. ライブラリをインストールする

    ブラウザの例ではまずpip install requests httpx scrapy playwrightを実行し、次にplaywright install chromiumを実行します。

  4. ユーザー名を作成

    必要なターゲティングセグメントだけを追加してください。例えばUSERNAME-country-us-state-tx-city-houston。値はすべて小文字で、スペースはアンダースコアにします。

  5. 出口IPを確認する

    プロキシ経由でhttps://api.ipify.org?format=jsonをリクエストしてください。返されるIPはターゲットサイトに見える米国のIPです。

Python requestsで米国プロキシを使うには?

proxies引数のhttpとhttpsの両方に同じプロキシURLを渡します。HTTPSターゲットでもプロキシURLのhttp://スキームは維持してください:ゲートウェイはCONNECTでHTTPSトンネルを開きます。SOCKS5の場合はrequests[socks]をインストールしsocks5h://を使い、DNSルックアップも米国側で行います。

requests: ニューヨークの回転IP、その後SOCKS5
import requests

HOST = "gw.statesideip.com"
USER = "USERNAME-country-us-state-ny"  # rotating New York State IP
PASSWORD = "PASSWORD"

proxy = f"http://{USER}:{PASSWORD}@{HOST}:7777"
r = requests.get("https://api.ipify.org?format=json",
                 proxies={"http": proxy, "https": proxy}, timeout=30)
print(r.json())

# SOCKS5 (pip install "requests[socks]"); socks5h resolves DNS through the proxy
socks = f"socks5h://{USER}:{PASSWORD}@{HOST}:7778"
r = requests.get("https://api.ipify.org?format=json",
                 proxies={"http": socks, "https": socks}, timeout=30)
print(r.json())

リクエストごとにIPを回転させるべき?それとも固定セッションを使うべき?

独立したページ取得にはリクエストごとに回転させ、1つのIPを維持すべきタスクには固定セッションを使います。sessionセグメントなしのユーザー名はリクエストごとに新しいIPを取得します。session-{id}とttl-{minutes}を追加すると1〜120分、ttlパラメータでセッションごとに設定の間は1つのIPを維持します。

  • 回転: 検索結果のチェックやカタログ価格の確認など、多数の米国IPに分散させる場合。
  • 固定: 自サイトの複数ページフロー、例えばカートからチェックアウトまでのQAテスト。

回転ゲートウェイは通常、接続ごとに出口IPを割り当てます。複数のリクエストが同じIPを共有する場合、クライアントが接続を再利用しています。Sessionなしで新しいrequests.get()呼び出しは新しい接続を開きます。

回転および固定プロキシURLの作成
import uuid

def proxy_url(state=None, city=None, zip_code=None, session=None, ttl=10):
    parts = ["USERNAME", "country-us"]
    if state:
        parts.append(f"state-{state}")
    if city:
        parts.append(f"city-{city}")
    if zip_code:
        parts.append(f"zip-{zip_code}")
    if session:
        parts += [f"session-{session}", f"ttl-{ttl}"]
    user = "-".join(parts)
    return f"http://{user}:[email protected]:7777"

rotating = proxy_url(state="tx", city="houston")  # new IP per request
sticky = proxy_url(zip_code="10001", session=uuid.uuid4().hex[:8], ttl=30)  # one IP, 30 min

httpx asyncで多くのリクエストを同時に送るには?

proxy引数付きの1つのhttpx.AsyncClientを使い、同時リクエスト数はasyncio.Semaphoreで制限します。ターゲットサイトごとに約5リクエストの同時処理から始めて、エラー率が低い間だけ制限を上げてください。

以下の例ではkeep-aliveを無効にしているため、各リクエストは新しい接続を開き新しいIPを取得できます。固定セッションを使う場合はこの行を削除してください。最近のhttpxはproxy=を受け入れます。古いproxies=引数はhttpx 0.28で削除されました。

httpx: 最大20リクエスト、同時5件まで、カリフォルニアIP
import asyncio
import httpx

PROXY = "http://USERNAME-country-us-state-ca:[email protected]:7777"
URLS = ["https://api.ipify.org?format=json"] * 20

async def fetch(client, sem, url):
    async with sem:  # caps requests in flight
        r = await client.get(url)
        r.raise_for_status()
        return r.json()

async def main():
    sem = asyncio.Semaphore(5)
    limits = httpx.Limits(max_keepalive_connections=0)  # new connection, new IP
    async with httpx.AsyncClient(proxy=PROXY, limits=limits, timeout=30) as client:
        results = await asyncio.gather(*(fetch(client, sem, u) for u in URLS),
                                       return_exceptions=True)
    for res in results:
        print(res)

asyncio.run(main())

リトライ、バックオフ、レート制限はどう扱う?

一時的な失敗のみリトライし、試行ごとに待機時間を長くしランダムジッターを加えます。タイムアウト、接続エラー、ステータスコード429、500、502、503、504でリトライします。サイトがRetry-Afterヘッダーを送信した場合は尊重してください。407はユーザー名またはパスワードの誤りなので絶対にリトライしないでください。

各サイトのrobots.txtと利用規約を尊重し、リクエスト頻度は通常のブラウジングに近づけてください。StatesideIPは銀行、政府、決済ポータルおよびSMTPポートをAcceptable Use Policy]でブロックしています。

リクエストの指数的バックオフとジッター
import random
import time
import requests

RETRY_STATUS = {429, 500, 502, 503, 504}

def get_with_retries(url, proxies, attempts=5):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=proxies, timeout=30)
            if r.status_code == 407:
                raise RuntimeError("407: check USERNAME and PASSWORD")  # do not retry
            if r.status_code not in RETRY_STATUS:
                return r
            ra = r.headers.get("Retry-After", "")
            wait = int(ra) if ra.isdigit() else 2 ** attempt
        except (requests.ConnectionError, requests.Timeout):
            wait = 2 ** attempt
        time.sleep(wait + random.uniform(0, 1))  # backoff plus jitter
    raise RuntimeError(f"gave up on {url}")

ScrapyでUSプロキシを使うには?

リクエストごとにmeta["proxy"]でプロキシを設定し、URL内にユーザー名とパスワードを入れます。Scrapyの組み込みプロキシミドルウェアがそれらをProxy-Authorizationヘッダーに変換します。ROBOTSTXT_OBEY = Trueはそのままにして、サイトの応答が遅い場合はAutoThrottleでクロール速度を落としましょう。

Scrapy:マイアミIP用の設定とスパイダー
# settings.py
ROBOTSTXT_OBEY = True
CONCURRENT_REQUESTS_PER_DOMAIN = 4
AUTOTHROTTLE_ENABLED = True
RETRY_TIMES = 3
RETRY_HTTP_CODES = [429, 500, 502, 503, 504]

# spiders/ip_check.py
import scrapy

PROXY = "http://USERNAME-country-us-state-fl-city-miami:[email protected]:7777"

class IpCheckSpider(scrapy.Spider):
    name = "ip_check"
    start_urls = ["https://api.ipify.org?format=json"]

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url, meta={"proxy": PROXY}, dont_filter=True)

    def parse(self, response):
        yield {"ip": response.json()["ip"]}

PlaywrightでUSプロキシを使うには?

ブラウザ起動時にサーバー、ユーザー名、パスワードを含むproxy辞書を渡します。ブラウザは1ページで多くのファイルを読み込むため、スティッキーセッションを使いましょう:1ページビューで1つのUS IPを維持します。新しいタスクごとに新しいセッションIDを使います。

Playwright:15分間のシカゴIPスティッキーセッション
import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(proxy={
            "server": "http://gw.statesideip.com:7777",
            "username": "USERNAME-country-us-state-il-city-chicago-session-pw1-ttl-15",
            "password": "PASSWORD",
        })
        page = await browser.new_page()
        await page.goto("https://api.ipify.org?format=json")
        print(await page.text_content("body"))
        await browser.close()

asyncio.run(main())

Pythonのプロキシリクエストが失敗する理由は?

ほとんどの失敗は認証情報の誤り、ターゲットが狭すぎる、またはクライアントが接続を再利用していることが原因です。

  • 407 Proxy Authentication Required: ユーザー名かパスワードが間違っているか、セグメントのスペルミスがあります。USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}と比較してください。
  • ZIPやASNターゲットでのタイムアウト: 狭すぎるフィルターは利用可能なIPを減らします。都市や州まで広げるかタイムアウトを延長してください。
  • 毎回同じIPになる: クライアントが接続を維持しています。keep-aliveを無効にするか、sessionセグメントを削除してください。
  • SSLエラー: プロキシURLにはhttp://を使い、https://は使わないでください。

入門ガイドではcurlとNodeについても解説しています。

Python用USプロキシ:よくある質問

PythonでUSプロキシを使うならどのライブラリ?

単純なスクリプトならrequests、同時に多数リクエストするならhttpx、フルクロールにはScrapy、JavaScriptが必要なページにはPlaywrightを使いましょう。4つともStatesideIPゲートウェイのgw.statesideip.comでポート7777を使います。同じユーザー名形式でUSの州、市、ZIPコードを指定可能です。

Pythonでリクエストごとに新しいUS IPを取得するには?

ユーザー名からsessionセグメントを外します。例えばUSERNAME-country-us-state-gaです。StatesideIPはリクエストごとに新しいIPを割り当てます。クライアントが毎回新しい接続を開くことを確認してください:Sessionなしでrequests.get()を呼ぶか、httpxでkeep-aliveを無効にします。そうしないと複数リクエストが同じIPを共有する可能性があります。

タスク全体で同じUS IPを維持するには?

ユーザー名にsession-{id}とttl-{minutes}を追加します。例えばUSERNAME-country-us-zip-10001-session-job42-ttl-30です。そのセッションIDを使うすべてのリクエストは、設定したttlまで1つのIPを維持します。StatesideIPのスティッキーセッションは1〜120分、ttlパラメータでセッションごとに設定続きます。家庭用回線は早期に切断されることもあるので、コード内でリトライを入れてください。

PythonでSOCKS5プロキシは使えますか?

はい。requests[socks]をインストールするか、httpx用にhttpx[socks]を入れて、ポート7778のsocks5h://URLを使います。hはDNSルックアップをプロキシ経由にするため、USサイトがUS訪問者のように解決されます。HTTPとHTTPSは追加パッケージなしでポート7777で動作します。

StatesideIPで同時にどれくらいリクエストを送れますか?

ターゲットサイトごとに約5リクエストから始め、エラーが少ないうちは上限を上げてください。ほとんどの制限はターゲットサイト側にあるため、ステータス429を監視して負荷を調整しましょう。レジデンシャルプロキシは家庭回線上にあるため、データセンターより応答が遅いことを想定してください。ZIPやASNターゲットでは同時接続数を控えめに。

Pythonスクリプト用の認証情報にKYCは必要?

いいえ。認証情報はアカウントに付属し、本人確認は不要です:アカウント番号でログイン、メールアドレスは任意。暗号通貨(BTC、USDT、USDC、ETH、LTC、SOL)で支払い可能。その後、上記コードのUSERNAMEとPASSWORDのプレースホルダーにユーザー名とパスワードを貼り付けてください。無料トライアルなし — 最低チャージ額から支払う1GBプランでお試しください。残額は残高に残ります(有効期限なし・返金不可)。

Pythonコード用のUSプロキシ認証情報を取得する

$0.52/GBのレジデンシャルプロキシトラフィック、州、市、ZIP、ASNターゲティング対応。KYC不要—身分証もセルフィーも書類もなし。暗号通貨で支払い可能。

$0.52/GBから · KYC不要

プロキシを購入