用于价格监控的移动代理
零售、旅游和电商平台的本地化非常激进:您看到的价格、币种、库存状态和配送时效,都取决于请求看起来来自哪里。同时,这些网站的限流也很严格。两者叠加意味着:依赖单一固定 IP 的调价系统会悄无声息地出错——而一个按时送达的错误价格,看起来和正确价格一模一样。
问题所在:悄无声息的过期数据,而不是明显的报错
真正让您亏钱的不是 403——403 是看得见的。真正的问题是那些返回 200、内容却是缓存价、默认地区价或未登录价的页面,因为网站判断您的 IP 不是真实买家。解析器运行正常,仪表盘一片绿,而您的调价引擎却在依据一个任何顾客都不会看到的数字做决策。运营商 IP 会被当作真实买家对待,因为它们本来就像买家——这正是此类业务转向移动代理池的根本原因。
如果您遇到过以下情况
- 竞争对手的价格几周都没变,而他们的网站上却每天都在变动。
- 您追踪的市场出现了错误的币种或错误的增值税处理。
- 到处都显示"缺货",因为库存查询按地区划分,而您的出口不在该地区。
- 爬取时间越长,验证码和拦截页出现得越频繁。
- 运费估算始终不显示,因为它依赖一个可信的邮政地理位置。
可运行的代码
只要 PROXY_URL 中填入真实的连接字符串,下面的每段代码都能直接运行。首次充值后,可在控制台复制您的连接字符串。
设置连接 URL
bashexport PROXY_URL="http://USERNAME-mbl-de-rot-auto10:[email protected]:7000"
# 替换国家参数(de -> fr、es、gb ……)即可切换市场。
# 代码的其他部分无需任何改动。Python — 一个礼貌且稳健的价格采集器
pythonimport os, time, random
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
PROXY = os.environ["PROXY_URL"]
session = requests.Session()
session.proxies = {"http": PROXY, "https": PROXY}
session.headers["User-Agent"] = (
"Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/125.0 Mobile Safari/537.36"
)
# 遇到 429/5xx 时退避并遵守 Retry-After,不要反复猛冲。
retry = Retry(
total=4,
backoff_factor=1.5,
status_forcelist=(429, 500, 502, 503, 504),
respect_retry_after_header=True,
allowed_methods=frozenset(["GET"]),
)
session.mount("https://", HTTPAdapter(max_retries=retry, pool_maxsize=20))
def fetch_price(url: str) -> str:
r = session.get(url, timeout=30)
r.raise_for_status()
# 防范静默过期问题:如果页面返回的
# 不是预期币种,就视为未命中,而不是一个价格。
if "€" not in r.text:
raise ValueError(f"unexpected currency for DE exit: {url}")
return r.text
for url in ["https://shop.example/p/1", "https://shop.example/p/2"]:
html = fetch_price(url)
print(len(html), url)
time.sleep(random.uniform(1.5, 4.0)) # 控制请求节奏币种断言是最关键的一行。它把代价高昂的静默失败变成了可见的失败。
Python — 需要购物车的会话级检查
python# 运费和税费通常要在商品加入购物车后才会显示,
# 因此整个流程必须在同一个 IP 上完成。请使用粘性会话:
# ...-mbl-de-sid-basket01-rot-sticky:PAK_KEY@...
import os, requests
s = requests.Session()
s.proxies = {"http": os.environ["PROXY_URL"], "https": os.environ["PROXY_URL"]}
s.post("https://shop.example/cart/add", data={"sku": "ABC", "qty": 1}, timeout=30)
quote = s.get("https://shop.example/cart/shipping", timeout=30).json()
print(quote["currency"], quote["total"], quote["eta_days"])每个并发购物车对应一个 -sid-。两个 worker 复用同一个 sid 会让它们共用同一个购物车。
应该使用哪种轮换模式
-rot-auto10商品目录遍历是典型的轮换场景:大量相互独立的读取,彼此之间无需保持状态,而且您也不想耗尽单个 IP 的请求额度。auto10 大约每 10 分钟为您分配一个新的运营商 IP,无需任何编排即可把长时间的爬取分散到大量出口上。请配合真实的请求节奏——每次请求之间随机间隔一两秒——因为轮换带来的是余量,而不是全速爬取的许可。
何时选择其他模式
| 模式 | 适用场景 |
|---|---|
| sticky | 任何跨多个请求的操作:加入购物车以查看运费、登录后的批发价、多步骤结账报价。每个并发 worker 使用一个 -sid-。 |
| auto30 | 低频监控——每天或每小时遍历几百个 SKU——较慢的 IP 更替已绰绰有余。 |
| hard | 需要在长时间会话中固定设备,并希望获得 IP 池所能提供的最严格保证。 |
预计带宽用量
只抓取 HTML 时,价格监控成本很低;需要渲染时则成本高昂。影响账单最大的因素就是是否使用浏览器——而对大多数零售网站来说,您并不需要。
| 任务类型 | 单次用量 | 每 GB 可完成 |
|---|---|---|
| 商品页,仅 HTML(requests/httpx) | 150–400 KB | 约 2,600–7,000 页 |
| 分类/列表页,仅 HTML | 300–700 KB | 约 1,500–3,500 页 |
| 内部价格 JSON/GraphQL 接口 | 5–40 KB | 约 26,000–200,000 次调用 |
| 对 JS 密集型商品详情页做完整浏览器渲染 | 2–5 MB | 约 200–520 页 |
在动手写基于浏览器的爬虫之前,先打开开发者工具的网络面板,找到页面本身用于获取价格和库存的 JSON 接口。大多数现代电商网站都有这样的接口,直接调用它,每次读取的成本比渲染整个页面低 50 到 200 倍。以上数据为真实零售网站的典型范围——请先对自己的目标计量,再确定月度预算。
| 带宽 | 价格 | 每 GB | 节省 |
|---|---|---|---|
| 1 GB | $7 | $7 | — |
| 5 GB | $35 | $7 | — |
| 10 GB | $68 | $6.80 | 3% |
| 25 GB | $150 | $6 | 14% |
| 50 GB | $283 | $5.66 | 19% |
| 100 GB | $500 | $5 | 29% |
适用国家
修改代理用户名中的一个参数即可切换国家——无需重新部署,也无需第二个账户。 IP 池规模因国家而异,也取决于您使用的是移动(mbl) 还是住宅(peer)IP 池;实时可用情况请查看各国家页面和您的控制台。
仅限合法用途
ProxyMobile 仅用于在您拥有或已获授权测试的系统上进行测量、质量保证和研究。购买带宽并不代表您获得了访问第三方系统的许可。您仍需自行遵守每个目标网站的服务条款、robots 指令和速率限制,以及适用于您的数据保护法律。
本场景的使用要求
- 只采集公开展示的价格。不要登录您没有账户的批发或贸易门户。
- 遵守目标网站的 robots 指令和任何公开的爬取速率指引。
- 积极使用缓存,只重新抓取真正发生变化的内容。每晚重新爬取静态目录,您要付费,别人要承担负载。
- 商品页附带的个人数据——卖家姓名、评论者身份——不属于价格监控的范围,不要顺带采集。
任何套餐均严禁
- 禁止撞库、盗用账户,或任何冒充他人进行身份验证的行为。
- 禁止绕过您未获授权测试的访问控制、付费墙或安全措施。
- 禁止收集您没有合法依据处理的个人数据。
- 禁止产生合理运营方会视为拒绝服务攻击的负载——请限速,遇到 429 时退避,并遵守 Retry-After。
用于欺诈、入侵或批量滥用的账户将被终止且不予退款,我们会配合有效的法律程序。完整条款请参阅我们的可接受使用政策。
价格监控常见问题
为什么用机房代理会拿到过期或错误地区的价格?
因为网站会在渲染前对 IP 进行地理定位和分类。云服务器 IP 段通常会收到缓存的默认地区页面、未登录价格,或仍返回 HTTP 200 的软拦截。解析器无法分辨,所以问题表现为数据错误,而不是报错。
应该用浏览器还是普通 HTTP 请求?
只要数据在 HTML 里,或在页面调用的 JSON 接口中,就用普通请求——每次读取大约便宜 10 到 200 倍。只有当价格确实需要客户端执行 JS 才能显示时,才使用浏览器。
运费只在结账时才显示,怎么追踪?
使用粘性会话,让整个购物车流程都走同一个 IP。在用户名中加入每个 worker 独立的 -sid- 和 -rot-sticky,然后在该会话上执行加购和运费报价步骤。
遍历一次商品目录需要多少带宽?
仅抓取 HTML 商品页时,每 GB 大约可抓取 2,600 到 7,000 页。如果网站提供价格 JSON 接口,同样 1 GB 往往能完成数万次读取。
监控竞争对手的价格合法吗?
在大多数司法辖区,采集公开展示的价格是常见的商业行为,但具体情况取决于您所在地区、目标网站的条款以及您使用数据的方式。我们要求您遵守每个目标的条款及适用法律;我们无法就您的具体方案提供法律建议。
相关指南
用您自己的目标网站试一试
本页的带宽估算是如实给出的参考范围,而非承诺——唯一重要的数字,是您的目标网站实际消耗的流量。首次充值额外赠送 $2,足够您在确定预算之前,先实际计量一次运行。
