MIX-Basic
8,000 IP · 500–900 线程
每月 $50 起
一家店铺,每天采一轮。跟踪几千个商品页、报告早上要,就选它。
MIX 代理池最多 25,000 个 IP,流量不限:想每小时采集一次电商平台和竞品店铺的价格也可以,商品页永远不会撞上流量上限。每个地址都带国家代码,可以拿到各地区的价格。1 小时测试仅 $1。

选择套餐,拖动时长和线程数。一个线程就是监控程序此刻正在下载的一个商品页:500 线程就是同时 500 页。
MIX-Basic 适合一家店铺或一个类目:每天在淘宝、京东、亚马逊或两三家竞品上采集几千个商品页。8,000 个地址分摊请求,每个 IP 每天只取几页,平台的反爬不会触发。套餐含 500 线程,一周以上的时长可以按 50 个一批加购。
MIX-Business 面向服务商或分析团队:几万个商品页、多个平台、每天采集两三轮。16,000 个地址扛得住促销日的负载,那时价格每小时都在变,采集也要更勤。基础 1,000 线程,加购上限 1,400。
MIX-Elite 为动态调价和每 15 分钟一轮的定时采集而生:几十万商品页、竞品的完整目录、分国家的价格。这是最大的代理池,25,000 个地址,也是唯一能把线程加到 9,900 的套餐。
一个线程即一个并发连接。线程越多,同样时间内完成得越多。
1个月 $50线程无额外费用
比按天省 $250一个线程即一个并发连接。线程越多,同样时间内完成得越多。
1个月 $100线程无额外费用
比按天省 $350一个线程即一个并发连接。线程越多,同样时间内完成得越多。
1个月 $150线程无额外费用
比按天省 $450白名单直接对服务器本身放行:监控程序没有地方、也没必要输入用户名和密码。名单最多十个地址。
返回的是文本:地址和端口,每行一个代理。同一链接结尾加 .csv 会返回带国家代码的列表,价格随地区变化时需要它。
A-Parser、ZennoPoster 和大多数价格采集器都支持通过链接加载列表并自行刷新。用 Python 自己写监控程序,可以从下面的示例开始。
Basic 给 500 个端口,Business 1,000 个,Elite 1,500 个。每个端口都是独立代理,一个商品页走一个端口下载。
大多数平台把价格放在 HTML 内的 schema.org 数据里,一个商品页就是一次请求,不用加载图片和脚本。下面的脚本就从那里读取。
用 Python 采集价格的方法如下。脚本从 products.txt 读取商品链接,通过列表中随机的代理下载每个页面,从 schema.org 标记中提取价格,并追加一行到 prices.csv。把 PROXY_LIST_URL_FROM_DASHBOARD 替换成控制台里的链接,其余不用动。
# pip install requests[socks]
import json, random, re, time, requests
PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
REFRESH_SEC = 600
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9"}
_pool, _loaded = [], 0
def pool():
global _pool, _loaded
if time.time() - _loaded > REFRESH_SEC:
text = requests.get(PROXY_LIST_URL, timeout=15).text
_pool = [line.strip() for line in text.splitlines() if ":" in line]
_loaded = time.time()
return _pool
def fetch(url, tries=3):
for _ in range(tries):
proxy = random.choice(pool())
try:
r = requests.get(url, headers=HEADERS, timeout=15,
proxies={"http": f"socks5h://{proxy}", "https": f"socks5h://{proxy}"})
if r.status_code == 200:
return r.text
except requests.RequestException:
pass
time.sleep(2)
return ""
def offers(node, currency=""):
if isinstance(node, dict):
currency = node.get("priceCurrency", currency)
if "price" in node:
yield node["price"], currency
for value in node.values():
yield from offers(value, currency)
elif isinstance(node, list):
for item in node:
yield from offers(item, currency)
def price(html):
for block in re.findall(r'<script[^>]*type="application/ld\+json"[^>]*>(.*?)</script>', html, re.S):
try:
data = json.loads(block)
except ValueError:
continue
for value, currency in offers(data):
return str(value), currency
return "", ""
with open("prices.csv", "a") as out:
for url in open("products.txt"):
url = url.strip()
if url:
value, currency = price(fetch(url))
out.write(f"{int(time.time())};{url};{value};{currency}\n")
print(url, value, currency)
8,000 IP · 500–900 线程
每月 $50 起
一家店铺,每天采一轮。跟踪几千个商品页、报告早上要,就选它。
16,000 IP · 1,000–1,400 线程
每月 $100 起
面向分析师和服务商的套餐:多个平台、几万个商品页、每天几轮采集。
25,000 IP · 1,500–9,900 线程
每月 $150 起
面向动态调价的套餐:完整目录、每 15 分钟一轮、线程最多 9,900。
import csv, io, requests
CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
COUNTRIES = {"us", "gb"}
OUT_FILE = "proxies_us_gb.txt"
text = requests.get(CSV_URL, timeout=15).text
rows = csv.DictReader(io.StringIO(text), delimiter=";")
picked = [f"{r['ip']}:{r['port']}" for r in rows if r["country"].lower() in COUNTRIES]
with open(OUT_FILE, "w") as f:
f.write("\n".join(picked) + "\n")
print(f"{len(picked)} proxies saved to {OUT_FILE}")