购买返回 code 50301
检查 看 msg:它会说明是余额不足、该国家没有库存,还是密钥还没绑定 Proxy302 账号。
处理 充值,或换国家、换租期,然后用同一个批次标签重跑。库存每天变化,以下单页显示为准。
停止条件 充值了、有库存还是反复出现,把 msg 和订单号发给客服。
让脚本去买、去查、去交付一百个静态 IP,你的时间留给别的事。本文给出三个调用,以及每个指纹浏览器要注意的地方。
购买接口每次只给一个 IP,所以批量就是一个循环。循环必须在首次失败时停下(比如余额不足或没有库存),因为每次调用都会从钱包扣款。控制台的做法一样:「数量」填 1 到 100 时是逐个购买,遇到首次失败就停。
买完后,用列表接口取出所有有效的静态 IP 和它们的登录行。最后一步交给指纹浏览器,每家有自己的本地接口和限制,见下表。
| 项目 | AdsPower | 比特浏览器 |
|---|---|---|
| 地址在哪 | 默认 http://local.adspower.net:50325/,端口可能变,以 Local API 设置里显示的为准 | 文档里没有固定值:登录后在系统设置里取本地接口 URL |
| 存代理用哪个接口 | POST /api/v2/proxy-list/create,字段 type、host、port、user、password、remark | 我们读到的文档里没有单独的代理列表接口;代理写在窗口上,用 /browser/update,已有窗口用 /browser/proxy/update |
| 把代理挂到环境上 | POST /api/v2/browser-profile/create,用 user_proxy_config,或用 proxyid 引用已保存的代理(也可填 random) | POST /browser/update,proxyMethod 填 2,再填 proxyType、host、port、proxyUserName、proxyPassword;id 为空就是新建窗口 |
| 官方写明的限制 | Add proxy 一次最多 500 个;所有接口每秒 1 次 | 全部是 POST 加 body;新建窗口时有多个必填字段 |
数据来自各家官方文档,2026 年 11 月 15 日阅读;版本会变,用到某个字段前请再看一遍原页面。Proxy302 与 AdsPower 是正式合作伙伴;比特浏览器在这里只是第二个例子。
先给钱包充值,再到控制台的 API 密钥页面创建一个 API 密钥。密钥有 id 和 secret 两部分,别写进要提交的脚本里,放环境变量。
用下面的脚本,数量填 1。然后打开「我的资产」(控制台里放着你买到的全部东西的页面),确认这个 IP 在里面,协议也是你选的。
每次运行用一个新的批次标签。脚本中途停了,用同一个标签再跑一遍:已经用过的 key 不会再买第二次。
运行列表脚本,它会生成 proxies.txt,每个有效静态 IP 一行 host:port:username:password。
先导入一行,用它打开一个环境,在 https://ipinfo.io/json 看出口,没问题再导入其余的。一个账号固定用一个 IP。
import os, sys, requests
BASE = "https://proxy302.com/open_api/v3"
AUTH = (os.environ["P302_KEY_ID"], os.environ["P302_KEY_SECRET"]) # API key id and secret
def call(method, path, **kw):
body = requests.request(method, BASE + path, auth=AUTH, timeout=30, **kw).json()
if body.get("code") != 0: # every answer is HTTP 200; code 0 = success
raise SystemExit(f"{path}: code={body.get('code')} msg={body.get('msg')}")
return body["data"]
print(call("GET", "/user/users/wallet")) # balance in PTC
print(call("GET", "/proxy/payway/static_residential")) # plans: pick the payway_id of your term
COUNTRY_ID = 233 # United States; ids come from GET /proxy/area/country?name=...
PAYWAY_ID = int(sys.argv[1]) # plan id printed above
COUNT = int(sys.argv[2]) # keep it small the first time
BATCH = sys.argv[3] # one label per batch, e.g. nov15a
for i in range(COUNT):
data = call("POST", "/proxy/api/proxy/static/ip", json={
"country_id": COUNTRY_ID,
"payway_id": PAYWAY_ID,
"protocol": "http", # fixed per IP at purchase time
"is_data_center": False,
"idempotency_key": f"{BATCH}-{i:04d}", # same key on a retry = no second purchase
})
print(i, data["token_id"], data["host"], data["port"])
仅为示例。先设置 P302_KEY_ID 和 P302_KEY_SECRET,运行时带上套餐 id、一个小数量和批次标签,例如:python buy.py 12 1 nov15a。
import os, requests
BASE = "https://proxy302.com/open_api/v3"
AUTH = (os.environ["P302_KEY_ID"], os.environ["P302_KEY_SECRET"])
rows, cursor = [], None
while True:
params = {"page_size": 200, "status": 1, "sort_field": "created_on", "sort": "desc"}
if cursor:
params["cursor"] = cursor
body = requests.get(BASE + "/proxy/tokens/static/ip", params=params, auth=AUTH, timeout=30).json()
if body["code"] != 0:
raise SystemExit(body["msg"])
rows += body["data"]["data"]
cursor = body["data"].get("next_cursor")
if not body["data"].get("has_more") or not cursor:
break
with open("proxies.txt", "w", encoding="utf-8") as f:
for r in rows:
f.write(r["ads_proxy_url"] + "\n") # host:port:username:password
print(len(rows), "active static IPs written to proxies.txt")
仅为示例。ads_proxy_url 和分页字段在开发者 API 说明里有解释。
import requests
ADS = "http://local.adspower.net:50325" # the port can change: see Local API in the AdsPower settings
items = []
for line in open("proxies.txt", encoding="utf-8"):
host, port, user, pwd = line.strip().split(":", 3)
items.append({
"type": "http" if port == "2222" else "socks5", # Proxy302: HTTP on 2222, SOCKS5 on 3333
"host": host, "port": int(port), "user": user, "password": pwd,
"remark": "proxy302",
})
# AdsPower: at most 500 proxies per call and 1 request per second.
# Check the body shape against the Add proxy page and try with one line first.
print(requests.post(ADS + "/api/v2/proxy-list/create", json=items[:1], timeout=30).json())
示意代码。AdsPower 页面列出了字段但没有请求体示例,所以先发一行、看清返回,再发 500 个。
检查 看 msg:它会说明是余额不足、该国家没有库存,还是密钥还没绑定 Proxy302 账号。
处理 充值,或换国家、换租期,然后用同一个批次标签重跑。库存每天变化,以下单页显示为准。
停止条件 充值了、有库存还是反复出现,把 msg 和订单号发给客服。
检查 密钥 id 或 secret 写错了,或者把账号登录密码当成了 API 密钥。
处理 到 API 密钥页面创建密钥,用它的 id 和 secret 做 Basic 登录。
停止条件 别循环重试:错的密钥不会自己变好。
检查 重试时换了新的 idempotency_key。同一个 key 会重放之前的订单,新 key 就是一次新购买。
处理 像脚本里那样用「批次标签 + 序号」生成 key,不要用当前时间。
停止条件 下次运行前,先数一下「我的资产」里的行数。
检查 检查 Local API 是否开启、端口和设置里一致、频率没超过每秒 1 次、请求体符合 Add proxy 页面。
处理 先单独发一个代理看 msg;再按每组最多 500 个发送,调用之间留间隔。
停止条件 只有某一行失败,就把它的主机、端口和账号密码跟「我的资产」逐项核对。
静态 ISP IP 一天 US$0.50,30 天 US$7.99,约合每天 US$0.27,所有国家价格相同。机房 IP 一天 US$0.25,30 天 US$3.99。每个 IP 发放时只带一种协议:HTTP 对应 proxy.proxy302.com 的 2222 端口,SOCKS5 对应 3333 端口。控制台每单「数量」可填 1 到 100。自动续费是可选的,按单个 IP 设置;在控制台下单时默认开启,所以脚本买到的 IP 请核对这项设置,不想续费就在「我的资产」里关掉。没有免费试用,最小购买单位是一个 IP 一天。
能。开放 API 的静态 IP 接口每次调用从钱包买一个 IP,需要国家、套餐 id 和协议。完整接口列表在开发者文档里。
一个。count 和 format 参数属于动态代理的接口。静态 IP 要循环调用,或者用控制台下单页,「数量」填 1 到 100。
登录行,格式 host:port:username:password,大多数指纹浏览器粘贴代理时就接受这个顺序。大批量粘贴前,先在你的浏览器里核对顺序。
API 密钥在 API 密钥页面创建,和账号登录密码是两回事。每次调用都用它做 HTTP Basic 登录。
产品观察 · 确认日期:
站点的产品信息文件(数值于 2026 年 10 月 18-19 日对照控制台、后端和价格表核对):以美元计价(1 PTC = 1 美元)、租期、协议和端口、数量上限、没有免费试用。
官方文档 · 确认日期:
2026 年 11 月 15 日阅读:认证用 HTTP Basic,用户名是 API 密钥 id,密码是密钥 secret;所有接口都返回 HTTP 200,结果在 code、msg、data 里,code 为 0 才算成功;静态 IP 购买接口需要 country_id、payway_id、protocol 和 8-128 位的 idempotency_key;资产列表返回 ads_proxy_url,格式 host:port:username:password;错误码 50301 包含余额不足和没有库存。
官方文档 · 确认日期:
2026 年 11 月 15 日阅读:POST /api/v2/proxy-list/create,字段 type、host、port,可选 user、password、remark;一次最多添加 500 个代理;成功时返回 code 0 和代理 id 列表。页面没有给出请求体示例。
官方文档 · 确认日期:
2026 年 11 月 15 日阅读:POST /api/v2/browser-profile/create 必须有 group_id 和 fingerprint_config,并且 user_proxy_config 与 proxyid(已保存的代理 id,或 random)二选一。
官方文档 · 确认日期:
2026 年 11 月 15 日阅读:默认地址 http://local.adspower.net:50325/ 或 http://localhost:50325/,端口可能变化;所有接口的访问频率上限是每秒 1 次;在账号管理、设置、Local API 里开启。
官方文档 · 确认日期:
2026 年 11 月 15 日阅读:POST /browser/update 不传 id 是创建窗口,传 id 是修改;代理字段 proxyMethod(2 为自定义)、proxyType(noproxy、http、https、socks5)、host、port、proxyUserName、proxyPassword;/browser/proxy/update 可批量改代理。
官方文档 · 确认日期:
2026 年 11 月 15 日阅读:安装并登录浏览器后,在系统设置里取本地接口 URL;所有请求都是 POST,参数放在 body 里。
注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。