−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 的激進抓取、或猛打一個目標到把它打成拒絕服務,是可接受使用政策的違規,會導致服務被終止。抓您被允許抓的、給自己節流、別把爬蟲變成一次攻擊。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。