Automatizează vânătoarea de domenii expirate cu Python
Publicat de Peter Nagy · Cu ajutorul AI · 8 august 2026 · 5 min de citit
Vânătoarea automatizată de domenii expirate înseamnă să înlocuiești refresh-ul manual al listelor cu un script Python care interoghează listele de drop, filtrează după metrici și te alertează. Vei folosi requests, BeautifulSoup și un cron job. Nu e fancy, dar transformă ore în minute. Iar dacă dai de un dud, poți să-l îngropi mai târziu.
Ce face exact vânătoarea automatizată de domenii expirate?
Transformă o sarcină plictisitoare și repetitivă într-un script de tip "set-and-forget". Scrii cod Python care descarcă liste de domenii expirate din surse publice, verifică fiecare nume după criteriile tale și îți trimite un mesaj când găsește ceva potrivit. Gata cu trezitul la 3 dimineața să vezi dacă acel .io de 4 litere a căzut în final.
Bucla de bază e simplă: descarcă, filtrează, alertează. Poți rula scriptul pe un VPS ieftin sau pe mașina ta, cu un cron job. Totul se construiește într-o după-amiază, chiar dacă nu ești programator profesionist.
Ce ai nevoie înainte să scrii scriptul?
Câteva lucruri de bază. Ai nevoie de Python 3.8 sau mai nou instalat, plus un editor de text. Vei mai vrea un cont gratuit la un API de domenii, cum ar fi WhoisXMLAPI sau RDAP, pentru a verifica datele de înregistrare. Bugetul e zero pentru pasul ăsta, cu excepția cazului în care vrei să plătești pentru limite mai mari de request-uri.
Mai ai nevoie de un filtru clar. Știi ce vânătoare faci: număr de cuvinte, lungime, extensie, backlinks sau un anumit nișă. Scrie-l înainte să codezi, altfel vei ajunge cu un script care te alertează pentru orice domeniu random de pe internet.
Pasul 1: Cum descarci listele de domenii expirate?
Începe cu listele publice de drop. Servicii ca ExpiredDomains.net și NameJet publică liste zilnice, deși nu sunt întotdeauna ușor de scrapuit. Folosește requests și BeautifulSoup pentru a trage HTML-ul și a parse rândurile din tabele.
import requests
from bs4 import BeautifulSoup
url = "https://www.expireddomains.net/expired-domains/"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
Asta îți dă pagina brută. Apoi extragi numele domeniilor din tabel. Majoritatea listelor folosesc o structură similară, așa că câteva apeluri find_all te duc acolo. Fii politicos cu rate limits, sau vei fi blocat.
Pasul 2: Cum filtrezi domeniile cu Python?
Filtrele sunt magia. Scrie o funcție care primește un domeniu și returnează True sau False în funcție de criteriile tale. De exemplu, vrei doar domenii .com cu exact 6 litere și fără liniute.
def is_worth_checking(domain):
name, ext = domain.split(".")
return ext == "com" and len(name) == 6 and "-" not in name
Poți filtra și după liste de cuvânt cheie. Dacă vânătoarea ta e pentru domenii de fitness, păstrează o listă de cuvânt relevante și verifică dacă apar. Folosește re pentru regex matching dacă ai nevoie de pattern-uri mai complexe.
Pasul 3: Cum verifici disponibilitatea și metricile domeniului?
Odată ce ai lista filtrată, trebuie să afli dacă domeniul expiră cu adevărat. Folosește RDAP pentru a verifica statusul înregistrării. Biblioteca rdap face asta simplu.
import rdap
def check_status(domain):
data = rdap.query(domain)
return data.get("status", [])
Dacă statusul include "pending delete" sau "redemption period", e probabil că expiră. Poți verifica și backlinks-uri cu un API gratuit, cum ar fi Open PageRank, dar vei avea nevoie de un API key. Păstrează verificările ușoare, pentru că prea multe request-uri te vor încetini.
Pasul 4: Cum programezi scriptul să ruleze automat?
Folosește cron pe Linux sau Task Scheduler pe Windows. Rulează scriptul o dată pe zi, sau la câteva ore dacă vânătoarea ta e pentru drop-uri fierbinți. Un cron line simplu arată așa:
0 6 * * * cd /path/to/script && python3 hunt.py
Asta îl rulează în fiecare dimineață la 6 AM. Vei primi rezultate înainte de rush-ul zilnic. Poți folosi și biblioteca schedule dacă preferi să păstrezi totul în Python.
Pasul 5: Cum primești alertă când se găsește un match?
Email, Telegram sau Slack. Cea mai ușoară e Telegram, pentru că poți trimite un mesaj cu un POST request simplu. Creezi un bot, obții chat ID-ul și folosești requests.post pentru a trimite un mesaj când filtrul tău găsește ceva.
import requests
def send_alert(domain):
token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
text = f"Found: {domain}"
url = f"https://api.telegram.org/bot{token}/sendMessage"
requests.post(url, data={"chat_id": chat_id, "text": text})
Acum primești ping-uri pe telefon fără să atingi scriptul. Doar nu uita să păstrezi token-ul botului privat.
Pasul 6: Cum manevrezi rezultatele și decizi ce să cumperi?
Când alerte sosește, tot trebuie să faci verificări manuale. Folosește un registrar ca Namecheap sau GoDaddy pentru a vedea prețul exact și verifică Wayback Machine pentru conținut istoric. Nu tot domeniul expirat merită taxa de înregistrare.
Dacă cumperi unul și se dovedește a fi un dud, poți înmormânta proiectul tău mort pentru un dolar. E un mod ieftin să lași lucrurile să plece. Iar dacă cauți inspirație sau o ofertă, rătăcește prin cimetière să vezi ce au abandonat alții.
Ce poate merge prost în vânătoarea automatizată?
Multe. Scriptul tău se poate rupe când site-ul își schimbă structura HTML. Poți fi rate-limited sau IP-blocat. Poți filtra prea agresiv și să ratezi nume bune, sau prea lax și să fii inundat de junk.
De asemeni, piața domeniilor se mișcă repede. Un nume care pare liber poate fi înregistrat de cineva înainte să ruleze cron job-ul tău. E normal. Construiește un retry sau un wait și nu te atașa de niciun domeniu anume.
Chiar ai nevoie să automatizezi asta?
Dacă verifici drop-uri o dată pe săptămână, nu. Dar dacă reîmprospătezi liste zilnic, un script salvează ore. Te și lasă să acționezi mai rapid când apare un nume bun. Viteza contează în vânătoarea de domenii expirate, pentru că nume bune dispar în minute.
Partea negativă e că automatizarea te poate adormi în falsă productivitate. Nu ești productiv. Doar filtrezi mai rapid. Munca reală e în review-ul manual.
De unde continui?
Începe mic. Alege o sursă, un filtru și o metodă de alertă. Fă să funcționeze înainte să adaugi complexitate. Apoi expandezi la mai multe surse sau mai multe filtre. Scriptul nu trebuie să fie perfect, doar să ruleze.
Iar dacă ajungi să ai un domeniu pe care nu-l vrei, nu-l lăsa să putrezească. Înmormântează-l pe dead.domains și lasă pe cineva să-i dea o a doua viață. Ăsta e ciclul proprietății digitale și e ciudat de satisfăcător.
Du-te la dead.domains să vezi ce a fost deja îngropat.
Întrebări frecvente
E legal să scrapez listele de domenii expirate?
Da, atât timp cât respectați robots.txt și rate limits. Listele publice sunt făcute să fie vizualizate, dar scrape-ul prea rapid poate duce la blocare. Folosiți întârziere rezonabilă și un user-agent adecvat. Dacă un site are un API plătit, luați-l în considerare pentru a evita problemele juridice.
Care e cea mai bună bibliotecă Python pentru parsare HTML?
BeautifulSoup e cea mai comună pentru că e ușor de învățat și funcționează bine cu HTML-ul messy. Pentru parsare mai complexă, poți folosi lxml sau Scrapy. Începe cu BeautifulSoup și treci la altă bibliotecă doar când dai de limite de performanță.
Cât de des ar trebui să rulez scriptul de domenii expirate?
O dată pe zi e de obicei suficient pentru majoritatea nișelor. Dacă vânătoarea ta e pentru drop-uri de valoare, rulează-l la câteva ore. Reține că rulările mai frecvente cresc șansa de a fi rate-limited, așa că echilibrează viteza cu siguranța.
Pot automatiza tot procesul de cumpărare?
Parțial. Poți automatiza verificarea disponibilității și chiar backordering, dar înregistrarea efectivă necesită de obicei confirmare manuală. Unii registrari oferă API-uri pentru cumpărări automatizate, dar adesea au minime de balanță sau necesită aprobarea. Nu te aștepta la un pipeline complet hands-off.
Ce fac dacă scriptul meu nu mai funcționează?
Verifică prima dată structura HTML a site-ului. Site-urile își schimbă layout-ul des, așa că selectorii tăi se pot rupe. Adaugă error handling în scriptul tău pentru a loga problema și a te alerta. Apoi actualizează selectorii și rulează din nou. E o sarcină normală de întreținere.