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

> Python USプロキシガイド：$0.52/GBからのゲートウェイポート7777用のrequests、httpx、Scrapy、Playwrightの動作コード。KYC不要、暗号通貨で支払い可能。

- URL: https://statesideip.com/ja/guides/python-us-proxies/
- 最終更新: 2026-10-05
- Publisher: StatesideIP (https://statesideip.com)

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

**クイックアンサー — 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*

```python
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の作成*

```python
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}:PASSWORD@gw.statesideip.com: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*

```python
import asyncio
import httpx

PROXY = "http://USERNAME-country-us-state-ca:PASSWORD@gw.statesideip.com: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](https://statesideip.com/ja/acceptable-use/)]でブロックしています。

*リクエストの指数的バックオフとジッター*

```python
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用の設定とスパイダー*

```python
# 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:PASSWORD@gw.statesideip.com: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スティッキーセッション*

```python
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://`は使わないでください。

[入門ガイド](https://statesideip.com/ja/guides/getting-started/)では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から](https://statesideip.com/ja/pricing/) · [米国レジデンシャルプロキシ](https://statesideip.com/ja/residential-proxies/united-states/)

---

StatesideIP: StatesideIPは米国・カナダのプロキシプロバイダーです。州、都市、ZIPコード、ASNターゲティング対応のレジデンシャルIPに加え、T-Mobile、AT&T、Verizonの専用4G/5Gモバイルポートを提供。KYC不要 — 身分証、自撮り、書類は一切不要。暗号通貨で支払い。
