メインコンテンツまでスキップ

HTTP / HTTPS プロキシ(明示手順)

ライブラリが発行する すべての HTTP 呼び出しを、プロセス共通のプロキシ経由にします。

対象例: search / item / guest PFAT / poller backends / purchase / Discord webhook / Gemini / webapp が使うクライアント。

1. いちばん簡単なやり方

import mercari

# ★ 最初に呼ぶ(Client 生成より前が安全)
mercari.set_proxy("http://127.0.0.1:8080")

c = mercari.MercariClient() # dry_run=False でライブ時にプロキシ使用
result = c.search(keyword="iPhone", category_id=3833, sort="新しい順")
print(result.get("mode"), len(result.get("items") or []))

認証付きプロキシ:

mercari.set_proxy("http://user:password@proxy.example.com:3128")

2. クライアント生成時

c = mercari.MercariClient(proxy="http://127.0.0.1:8080")
print(c.auth_status()["proxy"])
# {
# "enabled": true,
# "http": "http://127.0.0.1:8080",
# "https": "http://127.0.0.1:8080",
# "trust_env": false
# }

proxy= は内部で set_proxy と同じ プロセス全体 設定になります。

3. 環境変数

export HTTP_PROXY=http://127.0.0.1:8080
export HTTPS_PROXY=http://127.0.0.1:8080
# export NO_PROXY=localhost,127.0.0.1
import mercari
mercari.apply_proxy_from_env() # 必須: 明示的に読む
c = mercari.MercariClient()

または:

mercari.configure_proxy(trust_env=True)

4. HTTP / HTTPS で別プロキシ

mercari.configure_proxy(
http="http://proxy-for-http:8080",
https="http://proxy-for-https:8080",
)

HTTPS 先へも通常は HTTP プロキシ + CONNECT です(URL は http://... で指定)。

5. 解除

mercari.clear_proxy()
# または
mercari.set_proxy(None)

6. CLI / ポーラ

mercari --proxy http://127.0.0.1:8080 --live search -k iPhone -c 3833

python -m mercari.poller --proxy http://127.0.0.1:8080 --once -c 3833

# 高度な condition JSON + プロキシ
mercari --proxy http://127.0.0.1:8080 --live search \
--condition-json ./cond.json

7. webapp で使う

import mercari
mercari.set_proxy("http://127.0.0.1:8080")
# その後
# python -m webapp.app

または:

from webapp.app import create_app
from mercari import MercariClient

app = create_app(client=MercariClient(proxy="http://127.0.0.1:8080"))

仕組み(内部)

mercari.set_proxy(url)


urllib.request.ProxyHandler({http, https})


mercari.http.urlopen(...) ← client / backends / items / guest / ...

dry_run=True のときは ネットワークしない のでプロキシは使いません。
ライブ検索でプロキシを確認してください。

注意

項目内容
スコーププロセス全体(複数 Client で共有)
パスワード表示auth_status()["proxy"] では user:pass*** マスク
SOCKS標準ライブラリのみでは未対応(HTTP プロキシ URL を想定)
証明書企業 SSL インターセプトは OS/Python の CA 設定が別途必要

トラブル

  1. 繋がらない → プロキシ URL に http:// スキームを付けた。127.0.0.1:8080 だけでも自動で http:// が付きます。
  2. プロキシを通っていないdry_run になっていないか。c.auth_status()["proxy"]["enabled"]True か。
  3. 401/403 → プロキシの問題ではなくメルカリ側ゲートのことが多い(DPoP ゲストは別途)。

関連: dry_run · 高度な検索 · ゲスト認証