−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

VPS pentru web scraping: configurare, dimensionare și limite cinstite

6 iul. 2026 · 5 min de citit · EQVPS Team

Un scraper pe laptop e în regulă până când îl închizi la mijlocul rulării, IP-ul de acasă e limitat sau vrei ca aceeași sarcină să ruleze în fiecare oră, fie că ești treaz, fie că nu. Mutarea pe un VPS le rezolvă pe toate trei: rămâne pornit 24/7, nu-ți arde reputația IP-ului de acasă, iar cron sau un timer systemd îl rulează după program, fără tine. Iată cum configurezi asta, de cât server ai nevoie de fapt și părțile pe care majoritatea ghidurilor le sar pe tăcute.

De ce un VPS bate mașina ta pentru asta

  • 24/7 și programat. Un scraper care rulează din oră în oră are nevoie de un host mereu pornit. Un laptop nu e.
  • IP-ul de acasă rămâne curat. Scrapingul de acasă înseamnă că IP-ul tău rezidențial încasează limitările și blocările. Fă-l de pe un server și propria conexiune rămâne neatinsă.
  • Stabilitate. Fără repaus, fără căderi de Wi-Fi în mijlocul unui crawl, o conexiune de centru de date constantă și un loc unde să aduni rezultatele.

Stackul și de ce are nevoie fiecare parte

Două categorii de greutate foarte diferite, iar alegerea planului greșit risipește bani sau înfometează sarcina:

  • httpx / requests (Python) — pentru API-uri, endpointuri JSON și HTML static. E ușor: procesul stă în zeci de megaocteți, e legat de rețea, nu de CPU. Un Nano de $3 (2 vCPU / 1 GB) îl rulează comod, chiar și cu concurență prin asyncio.
  • Playwright / Chromium headless — pentru site-urile randate cu JavaScript, unde îți trebuie un browser real. Ăsta e cel greu. Chromium headless are aproximativ 300–400 MB per instanță de browser, plus 100–200 MB per context/tab deschis, plus runtime-ul tău. Bugetează:
    • Micro de $5 (2 vCPU / 2 GB) — unul sau două contexte de browser deodată.
    • Small de $8 (4 vCPU / 4 GB) — mai multe contexte în paralel sau pagini mai grele.

Regula practică: codul tău nu e aproape niciodată gâtul de sticlă — Chromium este. Dimensionează pentru browser, nu pentru scraper.

Programarea: timer systemd în loc de cron

Cron merge, dar un timer systemd e alegerea implicită mai bună pe un server pe care îl întreții: loguri prin journalctl, recuperare dacă mașina era oprită și o stare per rulare pe care o poți verifica. O configurare minimă:

# /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 e ce nu poate face cron: dacă serverul era oprit la ora rulării, sarcina se declanșează o dată la pornire, în loc să fie sărită pe tăcute.

Unde ajung rezultatele

Păstrează-l simplu și potrivit volumului: SQLite pentru date structurate pe care le vei interoga (un fișier, zero configurare), CSV pentru descărcări tabelare rapide sau un object store compatibil S3 când rezultatele depășesc mașina sau le vrei în afara serverului. Rotește-ți logurile (logrotate sau limitele journald), ca un scraper vorbăreț să nu umple încet discul.

Partea cinstită: IP-ul de ieșire și reputația

Ăsta e detaliul care decide dacă scraperul tău merge o săptămână sau e blocat din prima zi.

Pe un plan NAT, traficul spre exterior iese printr-un IP folosit și de alți clienți. Reputația acelui IP nu e doar a ta — un vecin care face scraping pe aceeași țintă poate face adresa limitată înainte să trimiți tu o singură cerere. În regulă pentru scraping ușor, ocazional; o problemă la volum.

Un IP dedicat îți dă propria reputație de ieșire — comportamentul nimănui altcuiva nu o afectează. Dar taie în ambele direcții: scrapingul agresiv îți arde propriul IP curat, iar odată ce o țintă îl blochează, e blocat. Un IP dedicat înseamnă control, nu imunitate.

La scară reală, ai nevoie de pooluri externe de proxy-uri. Niciun IP singular — al mai multora sau dedicat — nu poate împărți încărcarea pe multe adrese, ceea ce cere scrapingul serios pe ținte care limitează după IP. Proxy-urile sunt un strat generic, de la terți, pe care îl adaugi deasupra; VPS-ul rulează scraperul, poolul de proxy-uri dă adresele. Nu te aștepta ca un singur IP de server să facă treaba unui pool de proxy-uri.

Etica și politica de utilizare — nu sunt opționale

Scrapingul trăiește într-o zonă gri, juridic și etic, așa că privește lucid:

  • Respectă limitele de rată și robots.txt. Limitează-ți cererile. Un scraper politicos arată ca trafic; unul nepoliticos arată ca un atac.
  • Nu-ți bombarda ținta. Să lovești un site până cade nu e scraping, e refuz al serviciului — și aici încalcă politica de utilizare acceptabilă, ceea ce duce la oprirea serviciului.
  • Colectează doar ce ai voie. Colectarea legală, permisă, de date e linia. Treci de ea și răspunderea e a ta.

Concluzia

Un VPS e casa potrivită pentru un scraper: mereu pornit, programat și departe de IP-ul de acasă. Potrivește planul cu stackul — Nano de $3 pentru httpx, Micro de $5 până la Small de $8 pentru Playwright —, programează cu un timer systemd și fii cinstit despre IP-uri: un IP de ieșire folosit de mai mulți își împarte reputația, unul dedicat e al tău de construit sau de ars, iar scara reală înseamnă pooluri de proxy-uri. Închide întâi mașina cu lista de securitate pentru un VPS nou, dimensioneaz-o corect cu ghidul de dimensionare VPS, iar dacă intimitatea plății fără card contează, analiza VPS-ului anonim e versiunea cinstită. Fă scraping responsabil — politica de utilizare acceptabilă e reală.


Gata de scraping? Un plan Micro e un început solid; crawlurile mari, concurente, merg mai bine pe Small.

Întrebări frecvente

De ce specificații VPS am nevoie pentru web scraping?

Depinde de stack. Un scraper HTTP simplu (httpx/requests spre API-uri sau HTML static) e ușor — un Nano de $3, cu 1 GB, ajunge din plin. În clipa în care ai nevoie de un browser real pentru site-uri pline de JavaScript, Playwright cu Chromium headless vrea 2–4 GB: un Micro de $5 pentru unul sau două contexte de browser, un Small de $8 dacă rulezi mai multe în paralel. Chromium mănâncă RAM-ul, nu codul tău.

Pot face scraping de pe IP-ul serverului sau am nevoie de proxy-uri?

Pentru scraping cu volum mic, politicos, pe site-uri care îl permit, IP-ul serverului e în regulă. La scară sau pe site-uri care limitează după IP, vei avea nevoie de un pool extern de proxy-uri — un singur IP (al mai multora sau dedicat) nu poate împărți încărcarea, iar bombardarea de pe o singură adresă o face blocată repede. Un IP dedicat îți dă o reputație curată pe care o controlezi; proxy-urile îți dau multe.

Cron sau timer systemd pentru scraping programat?

Un timer systemd, aproape întotdeauna. Spre deosebire de cron, îți dă loguri cum trebuie prin journalctl, ordonarea dependențelor, recuperare automată dacă mașina era oprită și o stare per rulare pe care o poți verifica. Cron merge încă pentru sarcini foarte simple, dar un timer e alegerea implicită mai bună pe un server pe care chiar îl întreții.

E permis web scrapingul pe VPS?

Scrapingul legal și respectuos — da. Scrapingul agresiv, care ignoră limitele de rată sau robots.txt ori care înseamnă bombardarea unei ținte până la refuzul serviciului, încalcă politica de utilizare acceptabilă și duce la oprirea serviciului. Colectează ce ai voie, limitează-te singur și nu transforma un scraper într-un atac.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.