Скрейпър на лаптопа ти е наред, докато не го затвориш по средата на пускане, домашният ти IP не бъде rate-limit-нат, или не поискаш същата задача да работи всеки час независимо дали си буден. Преместването му на VPS поправя и трите: той стои включен 24/7, не изгаря репутацията на домашния ти IP, и cron или systemd таймер го пуска по график без теб. Ето как да настроиш това, колко сървър реално се нуждаеш, и частите, които повечето ръководства тихо пропускат.
Защо VPS бие машината ти за това
- 24/7 и по график. Скрейпър, който работи ежечасно, се нуждае от хост, който винаги е включен. Лаптоп не е.
- Домашният ти IP остава чист. Скрейпването от вкъщи значи, че резидентният ти IP поема rate-limit-ите и блокирания. Прави го от сървър и собствената ти връзка остава недокосната.
- Стабилност. Без заспиване, без прекъсване на wifi по средата на crawl, стабилна датацентър връзка, и място за натрупване на резултати.
Стекът, и какво се нуждае всяка част
Две много различни тегловни категории, и избирането на грешен план хаби пари или гладува задачата:
- httpx / requests (Python) — за API-та, JSON endpoints и статичен HTML. Това е леко: процесът стои в десетки мегабайти, ограничен от мрежата, не от CPU. $3 Nano (1 vCPU / 1 GB) пуска това комфортно, дори с concurrency през
asyncio. - Playwright / headless Chromium — за сайтове, рендирани с JavaScript, където се нуждаеш от реален браузър. Това е тежкото. Headless Chromium е грубо 300–400 MB на browser инстанция, плюс 100–200 MB на отворен context/tab, плюс runtime-а ти. Бюджет:
- $5 Micro (2 vCPU / 2 GB) — един-два browser context-а наведнъж.
- $8 Small (4 vCPU / 4 GB) — няколко паралелни context-а, или по-тежки страници.
Правилото: кодът ти почти никога не е тясното място — Chromium е. Оразмерявай за браузъра, не за скрейпъра.
Планиране: systemd таймер вместо cron
cron работи, но systemd таймер е по-добрият по подразбиране на сървър, който поддържаш: логове през 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 # watch runs
Persistent=true е това, което cron не може: ако сървърът е бил изключен в момента на пускане, задачата се задейства веднъж при boot вместо тихо да пропусне.
Къде отиват резултатите
Дръж го просто и съответстващо на обема: SQLite за структурирани данни, които ще заявяваш (един файл, нулева настройка), CSV за бързи таблични дъмпове, или S3-съвместимо object хранилище, когато резултатите надраснат машината или искаш да са извън сървъра. Ротирай логовете си (logrotate или journald лимити), така че бъбрив скрейпър да не запълни бавно диска.
Честната част: egress IP и репутация
Това е детайлът, който решава дали скрейпърът ти работи седмица или бива блокиран на първия ден.
На NAT план изходящият трафик споделя един egress IP с други клиенти. Репутацията на този IP е споделена — съсед, скрейпващ същата цел, може да rate-limit-не адреса преди да си изпратил дори една заявка. Наред за леко, случайно скрейпване; пасив при обем.
Dedicated IP ти дава собствена egress репутация — поведението на никой друг не я засяга. Но реже и в двете посоки: агресивното скрейпване изгаря твоя собствен чист IP, и щом цел го блокира, той е блокиран. Dedicated IP е контрол, не имунитет.
При реален мащаб се нуждаеш от външни proxy pools. Никой единствен IP — споделен или dedicated — не може да разпредели натоварване през много адреси, което е това, което сериозното скрейпване срещу IP-rate-limited цели изисква. Proxy-тата са генеричен слой на трета страна, който добавяш отгоре; VPS-ът пуска скрейпъра, proxy pool-ът осигурява адресите. Не очаквай един сървърен IP да върши работата на proxy pool.
Етика и AUP — не опционални
Скрейпването живее в правна и етична сива зона, така че бъди с ясен поглед:
- Уважавай rate limits и robots.txt. Ограничавай заявките си. Учтив скрейпър изглежда като трафик; неучтив изглежда като атака.
- Не DoS-вай целта си. Удрянето на сайт, докато падне, не е скрейпване, а denial-of-service — и е нарушение на политиката за приемливо ползване тук, което води до прекратяване на услугата.
- Скрейпвай само това, което ти е позволено. Легалното, позволено събиране на данни е линията. Прекрачи я и е на твоя отговорност.
Долната линия
VPS е правилният дом за скрейпър: винаги-включен, по график, и извън домашния ти IP. Съответствай плана със стека — $3 Nano за httpx, $5 Micro до $8 Small за Playwright — планирай със systemd таймер, и бъди честен за IP-тата: споделеният egress споделя репутация, dedicated IP е твой да градиш или изгориш, и реален мащаб значи proxy pools. Заключи машината първо с чеклиста за сигурност на нов VPS, оразмери я правилно с ръководството за оразмеряване на VPS, и ако поверителността на плащане-без-карта има значение, разбивката за анонимен VPS е честната версия. Скрейпвай отговорно — AUP е реален.
Готов да скрейпваш? Micro план е солиден старт; големите паралелни crawl-ове се справят по-добре на Small.
Коментари
Още няма коментари. Бъди първият.