价格数据 · 11 个国家

用于价格监控的移动代理

零售、旅游和电商平台的本地化非常激进:您看到的价格、币种、库存状态和配送时效,都取决于请求看起来来自哪里。同时,这些网站的限流也很严格。两者叠加意味着:依赖单一固定 IP 的调价系统会悄无声息地出错——而一个按时送达的错误价格,看起来和正确价格一模一样。

问题所在:悄无声息的过期数据,而不是明显的报错

真正让您亏钱的不是 403——403 是看得见的。真正的问题是那些返回 200、内容却是缓存价、默认地区价或未登录价的页面,因为网站判断您的 IP 不是真实买家。解析器运行正常,仪表盘一片绿,而您的调价引擎却在依据一个任何顾客都不会看到的数字做决策。运营商 IP 会被当作真实买家对待,因为它们本来就像买家——这正是此类业务转向移动代理池的根本原因。

如果您遇到过以下情况

  • 竞争对手的价格几周都没变,而他们的网站上却每天都在变动。
  • 您追踪的市场出现了错误的币种或错误的增值税处理。
  • 到处都显示"缺货",因为库存查询按地区划分,而您的出口不在该地区。
  • 爬取时间越长,验证码和拦截页出现得越频繁。
  • 运费估算始终不显示,因为它依赖一个可信的邮政地理位置。

可运行的代码

只要 PROXY_URL 中填入真实的连接字符串,下面的每段代码都能直接运行。首次充值后,可在控制台复制您的连接字符串。

设置连接 URL

bash
export PROXY_URL="http://USERNAME-mbl-de-rot-auto10:[email protected]:7000"

# 替换国家参数(de -> fr、es、gb ……)即可切换市场。
# 代码的其他部分无需任何改动。

Python — 一个礼貌且稳健的价格采集器

python
import 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 页
分类/列表页,仅 HTML300–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.803%
25 GB$150$614%
50 GB$283$5.6619%
100 GB$500$529%

适用国家

修改代理用户名中的一个参数即可切换国家——无需重新部署,也无需第二个账户。 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,足够您在确定预算之前,先实际计量一次运行。