您筆電上的一個爬蟲沒問題,直到您在中途關掉它、您的家庭 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 是真的。
評論
目前還沒有評論。歡迎成為第一位。