快速解答
如何在 Python 中使用美国代理?
StatesideIP,一家无需 KYC 的美国住宅代理和4G 移动代理提供商,通过一个网关提供 Python 美国代理:gw.statesideip.com,HTTP/HTTPS 端口为 7777,SOCKS5 端口为 7778。位置信息放在用户名中,例如 USERNAME-country-us-state-ny。住宅代理流量起价为 US$0.52/GB,截至 2026 年 10 月。无需 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 |
| 价格 | 来自 US$0.52/GB;US$1.50 用于 1 GB |
| KYC 和支付 | 无需 KYC — 无需身份证、无需自拍、无需文件。使用加密货币支付。 |
使用 Python 访问美国代理前需要准备什么?
你需要 Python 3、pip,以及一个StatesideIP用户名和密码。设置分五步完成。
购买小套餐
1 GB 计划在价格页面]售价为 US$1.50,支持 BTC、USDT、USDC、ETH、LTC 或 SOL 支付。
复制你的凭证
从已确认的加密货币余额购买套餐后,凭证会立即显示在您的仪表板中。以下代码将凭证写为
USERNAME和PASSWORD。安装库
先运行
pip install requests httpx scrapy playwright,再运行playwright install chromium以启动浏览器示例。构建用户名
只添加您需要的定位细分,例如
USERNAME-country-us-state-tx-city-houston。值为小写,空格用下划线替代。检查出口 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 查询也会在美国端完成。
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 还是保持会话粘性?
独立页面抓取时每次请求轮换 IP,需要保持同一 IP 的任务则使用粘性会话。没有 session 细分的用户名每次请求都会获得新 IP。添加 session-{id} 和 ttl-{minutes} 可为 1 到 120 分钟,通过 ttl 参数按会话设置 保持同一 IP。
- 轮换: 搜索结果检查或目录价格检查,分布在多个美国 IP 上。
- 粘性: 自己网站上的多页流程,如购物车到结账的 QA 测试。
轮换网关通常按连接分配出口 IP。如果多个请求共用一个 IP,说明客户端复用了连接;新的 requests.get() 调用且无 Session 会打开新连接。
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 同时发送大量请求?
用一个 httpx.AsyncClient 作为 proxy 参数,并用 asyncio.Semaphore 限制并发请求数。每个目标站点初始并发约 5 个请求。错误率低时再提高限制。
下面示例禁用了 keep-alive,每个请求都打开新连接以获得新 IP。使用粘性会话时请移除该行。新版 httpx 支持 proxy=;旧版的 proxies= 参数在 httpx 0.28 中被移除。
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 端口。
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 中使用美国代理?
在 meta["proxy"] 中为每个请求设置代理,用户名和密码包含在 URL 内。Scrapy 内置代理中间件会将其转换为 Proxy-Authorization 头。保持 ROBOTSTXT_OBEY = True,并让 AutoThrottle 在网站响应慢时减缓爬取速度。
# 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 使用美国代理?
启动浏览器时传入包含服务器、用户名和密码的 proxy 字典。浏览器每页加载多个文件,建议使用粘性会话:一次页面浏览保持一个美国 IP。每个新任务使用新的会话 ID。
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 代理认证失败: 用户名或密码错误,或细分拼写错误。与
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 美国代理:常见问题解答
我应该用哪个 Python 库配合美国代理?
简单脚本用 requests,同时发起大量请求用 httpx,完整爬取用 Scrapy,需要执行 JavaScript 的页面用 Playwright。四者均可通过 StatesideIP 网关在 gw.statesideip.com 端口 7777 使用。用户名格式相同,可设置美国州、市或邮编。
如何在 Python 中每次请求都获取新的美国 IP?
用户名中省略 session 段,例如 USERNAME-country-us-state-ga。StatesideIP 会在每次请求时分配新的 IP。确保客户端每次都建立新连接:调用 requests.get() 时不使用 Session,或在 httpx 中禁用 keep-alive。否则多次请求可能共用同一 IP。
如何在整个任务中保持相同的美国 IP?
在用户名中添加 session-{id} 和 ttl-{minutes},例如 USERNAME-country-us-zip-10001-session-job42-ttl-30。带有该会话 ID 的所有请求会在你设置的 ttl 时间内保持同一 IP。StatesideIP 的粘性会话最长持续 1 到 120 分钟,通过 ttl 参数按会话设置。住宅代理连接可能提前断开,请在代码中做好重试。
我可以在 Python 中使用 SOCKS5 代理吗?
可以。安装 requests[socks],或 httpx 用 httpx[socks],并使用端口 7778 的 socks5h:// URL。h 让 DNS 查询通过代理,访问美国网站时表现如同美国用户。HTTP 和 HTTPS 在端口 7777 可用,无需额外包。
通过 StatesideIP 我能同时发送多少请求?
初始对每个目标站点保持约 5 个并发请求,错误率低时逐步提高。大多数限制来自目标站点,注意状态码 429 并适当降速。住宅代理基于家庭连接,响应速度比数据中心慢。针对邮编或 ASN 目标时并发应更低。
我需要 KYC 才能获取 Python 脚本的凭证吗?
不需要。凭证随账户提供,无需身份验证:账号登录;电子邮箱可选。支持加密货币支付(BTC、USDT、USDC、ETH、LTC 或 SOL)。然后将用户名和密码粘贴到上面代码中的 USERNAME 和 PASSWORD 占位符。无免费试用——使用 1 GB 套餐测试,从最低充值额支付;剩余部分保留在余额中(永不过期,不可退款)。
获取适用于 Python 代码的美国代理凭证
来自 US$0.52/GB 的住宅代理流量,支持州、市、邮编和 ASN 定向。无需 KYC —— 无身份证、无自拍、无文件。支持加密货币支付。