−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

用于网页抓取的 VPS:搭建、配置和诚实的界限

2026年7月6日 · 1 分钟阅读 · EQVPS Team

你笔记本上的一个爬虫没问题,直到你在中途关掉它、你的家庭 IP 被限速、或者你想让同一个任务每小时跑一次、无论你醒着与否。把它搬到一台 VPS 上把这三样都修好:它 7×24 在线、不烧你家庭 IP 的声誉,cron 或一个 systemd timer 不用你就按时跑它。这是怎么搭它、你实际需要多大的服务器,以及多数指南悄悄跳过的部分。

为什么这件事 VPS 胜过你的机器

  • 7×24 且定时。 一个每小时跑的爬虫需要一个始终在线的宿主。笔记本不是。
  • 你的家庭 IP 保持干净。 从家里抓,意味着你的住宅 IP 承受限速和封禁。从一台服务器做,你自己的连接毫发无损。
  • 稳定。 不睡眠、爬取中途不掉 wifi、一条稳定的数据中心连接,以及一个积累结果的地方。

技术栈,以及每一部分需要什么

两个非常不同的重量级,选错套餐会浪费钱或饿着任务:

  • httpx / requests(Python) —— 用于 API、JSON 端点和静态 HTML。这很轻:进程只占几十兆、绑网络、不绑 CPU。一台 $3 Nano(2 vCPU / 1 GB) 跑这个很舒服,即便通过 asyncio 并发。
  • Playwright / 无头 Chromium —— 用于需要真实浏览器的 JavaScript 渲染站点。这是重的那个。无头 Chromium 大约每个浏览器实例 300–400 MB,加上每个打开的上下文/标签页 100–200 MB,再加你的运行时。预算:
    • $5 Micro(2 vCPU / 2 GB) —— 一次一两个浏览器上下文。
    • $8 Small(4 vCPU / 4 GB) —— 好几个并行上下文,或更重的页面。

经验法则:你的代码几乎从不是瓶颈——Chromium 才是。按浏览器配置,不是按爬虫。

调度:systemd timer 胜过 cron

cron 能用,但在一台你维护的服务器上 systemd timer 是更好的默认:经 journalctl 的日志、机器宕机后的补跑、可检查的每次运行状态。一个极简配置:

# /etc/systemd/system/scrape.service
[Unit]
Description=Run scraper
[Service]
Type=oneshot
User=scraper
WorkingDirectory=/home/scraper/job
ExecStart=/home/scraper/job/venv/bin/python scrape.py
# /etc/systemd/system/scrape.timer
[Unit]
Description=Hourly scrape
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now scrape.timer
journalctl -u scrape.service -f   # 看运行

Persistent=true 是 cron 做不到的那点:如果服务器在运行时刻是关的,任务会在开机时补跑一次,而不是悄悄跳过。

结果放哪

保持简单、匹配体量:SQLite 给你会查询的结构化数据(一个文件、零配置)、CSV 给快速的表格导出、或一个 S3 兼容对象存储 当结果长过机器、或你想让它们离开服务器时。轮转你的日志(logrotate 或 journald 限额),好让一个话痨爬虫不会慢慢填满磁盘。

诚实的部分:出口 IP 和声誉

这是决定你的爬虫工作一周、还是第一天就被封的细节。

在 NAT 套餐上,出站流量跟其他客户共享一个出口 IP。 那个 IP 的声誉是共享的——一个抓同一个目标的邻居能在你发出一个请求之前就让这地址被限速。对轻度、偶尔的抓取没问题;规模一大就是个隐患。

一个独立 IP 给你自己的出口声誉——别人的行为不影响它。但它是双刃的:激进抓取烧的是你自己的干净 IP,一旦目标封了它,它就被封了。独立 IP 是掌控,不是豁免。

到了真正的规模,你需要外部代理池。 没有哪个单一 IP——共享或独立——能把负载分摊到很多地址上,而那正是对按 IP 限速目标做正经抓取所要求的。代理是你在上面加的一个通用的第三方层;VPS 跑爬虫,代理池提供地址。别指望一个服务器 IP 干代理池的活。

伦理和 AUP——不是可选项

抓取活在一个法律和伦理的灰色地带,所以要清醒:

  • 尊重速率限制和 robots.txt。 给你的请求节流。一个有礼貌的爬虫看起来像流量;一个没礼貌的看起来像攻击。
  • 别对你的目标 DoS。 猛打一个站点直到它倒下不是抓取,是拒绝服务——在这里也是一个导致服务被终止的可接受使用政策违规。
  • 只抓你被允许抓的。 合法、被许可的数据采集是那条线。越过它,责任在你。

一句话

VPS 是爬虫对的家:始终在线、定时、离开你的家庭 IP。让套餐配技术栈——httpx 用 $3 Nano,Playwright 用 $5 Micro 到 $8 Small——用 systemd timer 调度,并对 IP 诚实:共享出口共享声誉、独立 IP 由你来建或烧、真正的规模意味着代理池。先用新 VPS 安全清单锁死机器、用 VPS 配置指南配对尺寸,如果不用卡付款的隐私对你重要,匿名 VPS 拆解是诚实的版本。负责任地抓——AUP 是真的。


准备好抓了? 一个 Micro 套餐 是个扎实的起点;大型并发爬取在 Small 上更好。

常见问题

网页抓取需要什么 VPS 规格?

取决于技术栈。一个纯 HTTP 爬虫(httpx/requests 打 API 或静态 HTML)很轻——一台带 1 GB 的 $3 Nano 就绰绰有余。一旦你为 JavaScript 重的站点需要一个真实浏览器,带无头 Chromium 的 Playwright 想要 2–4 GB:一两个浏览器上下文用 $5 Micro,并行跑好几个用 $8 Small。吃 RAM 的是 Chromium,不是你的代码。

我能用服务器自己的 IP 抓,还是需要代理?

对低流量、守规矩、抓允许被抓的站点,服务器的 IP 没问题。规模大了、或对按 IP 限速的站点,你会需要一个外部代理池——一个 IP(共享或独立)分摊不了负载,从单个地址猛打会很快被封。独立 IP 给你一个你掌控的干净声誉;代理给你很多个。

定时抓取用 cron 还是 systemd timer?

几乎每种情况都用 systemd timer。跟 cron 不同,它经 journalctl 给你正经日志、依赖排序、机器宕机后的自动补跑、以及你能检查的每次运行状态。对极简单的任务 cron 也能用,但在一台你真正维护的服务器上,timer 是更好的默认。

在 VPS 上允许网页抓取吗?

合法、有礼貌的抓取——允许。无视速率限制或 robots.txt 的激进抓取、或猛打一个目标到把它打成拒绝服务,是可接受使用政策的违规,会导致服务被终止。抓你被允许抓的、给自己节流、别把爬虫变成一次攻击。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。