SEO 工具代理

爬虫用几百个线程抓整站,任何服务器早晚都会回它一个 429。最多 25,000 个 IP 的 MIX 代理池把这些线程分散到不同地址上,所以 Screaming Frog、Netpeak Spider、A-Parser 和 Key Collector 能全速跑,而不是单线程加延时。1 小时测试 $1。

  • 流量不计费
  • 同一端口支持 SOCKS5 和 HTTP
  • 3 天以上套餐可退款
查看价格
各种 SEO 审计工具汇聚到一个代理节点,节点再连向各站点页面

按您的用量计价

选择套餐,拖动时长和线程数。这里的线程就是您在爬虫设置里填的 threads:1,200 线程就是工具同时抓取的 1,200 个 URL。滑块就停在这个值上。

MIX-Business 面向 SEO 部门和代理机构:每周几个项目,Sitebulb 和 SEO PowerSuite 同时开,A-Parser 收下拉词和搜索结果,ScrapeBox 做批量检查。16,000 个地址、默认 1,200 线程:想让抓取一个傍晚跑完而不是跑一整夜,填的就是这个数。

1个月
1,200+20%

一个线程即一个并发连接。线程越多,同样时间内完成得越多。

$120
≈ $4 / 天30 天

1个月 $100+ 线程 $20

比按天省 $420
退还剩余部分
  • 1小时 — $1
  • 1天 — $15
  • 3天 — $35
  • 1周 — $50
  • 2周 — $75
  • 1个月 — $100
  • 3个月 — $255
  • 6个月 — $475
购买代理 — MIX-Business

如何把代理接入 SEO 工具

  1. 1
    花 $1 买 1 小时,填写运行工具的机器 IP。

    权限绑定在这台电脑或服务器本身,所以在 Screaming Frog 和 Netpeak 的代理设置里,用户名和密码留空即可。这样的机器最多十台。

  2. 2
    到控制台取代理列表的链接。

    链接返回的文本是「地址加端口」的格式,每行一个代理。Screaming Frog 和 Netpeak 要的是同样的列表,只是要文件:把返回内容存成 .txt,在设置里指向它。

  3. 3
    把代理池分配给各个工具。

    A-Parser 和 ScrapeBox 会自己重新读取链接,把里面所有地址都拿走。Key Collector、Sitebulb 和 SEO PowerSuite 读的是列表文件,所以用脚本每 10 分钟刷新一次,示例见下面。

  4. 4
    工具的线程数不要超过套餐的端口数。

    Basic 500,Business 1,000,Elite 不加购 1,500。每个端口都是独立代理,爬虫的一个线程占一个端口:在 Screaming Frog 里填得比端口还多没有意义。

  5. 5
    按工具选协议。

    Screaming Frog、A-Parser、ZennoPoster 和 ScrapeBox 走 SOCKS5。Netpeak Spider、Key Collector 和 SEO PowerSuite 走 HTTP(S)。两种协议都在同一个端口上,只在工具里切换。

代理池接自建审计的方法如下。脚本从 urls.txt 读取地址,通过随机的代理抓取每个页面,把响应码、跳转、title、h1、描述、canonical 和 robots 写进 audit.csv —— 和爬虫给出的东西一样,只是按您的规则来。把 PROXY_LIST_URL_FROM_DASHBOARD 换成控制台里的链接。

# pip install requests[socks]
import csv, random, re, time, requests
from concurrent.futures import ThreadPoolExecutor

PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
REFRESH_SEC = 600
THREADS = 1200
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; SeoAudit/1.0)", "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 first(pattern, html):
    match = re.search(pattern, html, re.S | re.I)
    return re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", match.group(1))).strip() if match else ""

def audit(url, tries=3):
    for _ in range(tries):
        proxy = random.choice(pool())
        try:
            r = requests.get(url, headers=HEADERS, timeout=20, allow_redirects=False,
                             proxies={"http": f"socks5h://{proxy}", "https": f"socks5h://{proxy}"})
        except requests.RequestException:
            continue
        html = r.text if "html" in r.headers.get("Content-Type", "") else ""
        return {
            "url": url,
            "status": r.status_code,
            "redirect": r.headers.get("Location", ""),
            "title": first(r"<title[^>]*>(.*?)</title>", html),
            "h1": first(r"<h1[^>]*>(.*?)</h1>", html),
            "description": first(r'<meta[^>]+name="description"[^>]+content="([^"]*)"', html),
            "canonical": first(r'<link[^>]+rel="canonical"[^>]+href="([^"]*)"', html),
            "robots": first(r'<meta[^>]+name="robots"[^>]+content="([^"]*)"', html),
        }
    return {"url": url, "status": 0, "redirect": "", "title": "", "h1": "",
            "description": "", "canonical": "", "robots": ""}

urls = [line.strip() for line in open("urls.txt") if line.strip()]
fields = ["url", "status", "redirect", "title", "h1", "description", "canonical", "robots"]
with open("audit.csv", "w", newline="", encoding="utf-8") as out:
    writer = csv.DictWriter(out, fieldnames=fields, delimiter=";")
    writer.writeheader()
    with ThreadPoolExecutor(THREADS) as executor:
        for row in executor.map(audit, urls):
            writer.writerow(row)
            print(row["status"], row["url"], row["title"][:60])

SEO 工具选哪个套餐

MIX-Basic

8,000 IP · 500–900 线程

每月 $50 起

一个项目:抓取十万以内的 URL、收词、每周查一次链接。

MIX-Business

16,000 IP · 1,000–1,400 线程

每月 $100 起

代理机构和 SEO 部门:几个爬虫同时跑,收下拉词和批量检查共用一个代理池。

MIX-Elite

25,000 IP · 1,500–9,900 线程

每月 $150 起

自建服务和大型内部团队:每轮上百万 URL、线程到 9,900、全天候运行。

保护代理池的五个设置

  • 除了线程,还要按「每域名每秒 URL 数」限速。服务器统计的是频率,1,200 线程不限速地打一个域名,429 是必然的。
  • 爬虫里设 20 秒超时,失败换另一个代理重试两次:大规模抓取时,卡住的请求比漏掉的页面更浪费时间。
  • 只查元标签时不要下载图片、字体和 CSS。Screaming Frog 里在 Configuration 勾掉即可,抓取速度能快好几倍。
  • robots.txt 读一次并缓存起来:每抓一页都去请求它的爬虫,会白白耗掉一半代理池。
  • 大规模抓取前,从 CSV 里挑出最快的地址;下面的脚本按 speed 列排序。

关于 SEO 工具代理的问题

01支持哪些软件?
任何能导入代理列表的软件都行:Screaming Frog SEO Spider、Netpeak Spider 和 Checker、Sitebulb、SEO PowerSuite、A-Parser、Key Collector、KeyAssort、ScrapeBox、GSA Search Engine Ranker、ZennoPoster、Xenu's Link Sleuth。Ahrefs、Semrush 这类服务走自己的基础设施,用不到代理池。
02Screaming Frog 里该填多少线程?
不要超过套餐的端口数:Basic 500,Business 1,000,Elite 1,500。另外保留每域名每秒的 URL 限制,否则先撞上的不是代理池,而是被抓网站的防护。
03爬虫怎么在代理上做认证?
不需要认证:授权按您下单时填的机器 IP 来。Screaming Frog 或 Netpeak 的代理设置里用户名和密码留空,机器名单在控制台里改。
04抓一百万 URL,代理池够用吗?
够用,流量不计费,页面数量也不影响价格。瓶颈不在代理池,而在对单个域名的请求频率:同一站点的一百万 URL,更合理的做法是带限速分几轮抓。
05能按地区收搜索结果和下拉词吗?
能,列表里每个地址都带国家就是为此。用 CSV 格式取列表:ip、port、country、speed、uptime、real_ip 各列以分号分隔。下面的脚本按 speed 列排序,只留最快的地址,按 country 过滤再加一行就行。
import csv, io, requests

CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
TAKE = 1200
OUT_FILE = "proxies_fast.txt"

text = requests.get(CSV_URL, timeout=15).text
rows = list(csv.DictReader(io.StringIO(text), delimiter=";"))
rows.sort(key=lambda r: int(r["speed"]), reverse=True)
picked = [f"{r['ip']}:{r['port']}" for r in rows[:TAKE]]

with open(OUT_FILE, "w") as f:
    f.write("\n".join(picked) + "\n")
print(f"{len(picked)} proxies saved to {OUT_FILE}")
06如果爬虫在这个池上跑不动呢?
花 $1 买 1 小时,在上面跑一次普通抓取:一个小时就能看出速度和 429 的比例。3 天以上的套餐可在控制台取消,已用时间按普通价格重算,余额退回账户。

关于服务的其余内容都在常见问题里,全部套餐和价格见首页

从 $1 的 1 小时开始

用自己的爬虫在代理池上跑 1 小时,看看抓取速度,再选时长。3 天以上的套餐余额会退回账户。

$1 试用代理
登录/注册