Vazand ca tehniciile de SPAM s-au schimbat intre timp, am schimbat si noi metodele cu care ne aparam si ne-am gandit sa publicam un articol pentru ca si cei cu bloguri pe domeniu propriu pot beneficia de aceleasi metode antispam.
Atentie! Urmeaza o multitudine de detalii tehnice!
Primul pas in oprirea spammerilor este editarea fisierului .htaccess (aflat in folderul de baza unde se afla site-ul nostru) si adaugarea acestor randuri exact la inceputul fisierului, inainte de regulile de rewrite WordPress:
#stopping spammers
#stop requests with no UA or referrer
RewriteCond %{HTTP_REFERER} ^$
Rewritecond %{HTTP_USER_AGENT} ^$
RewriteCond %{REMOTE_ADDR} !^85\.214\.229\.212$
RewriteRule ^(.*) – [F]
#stop fake trackbackers
RewriteCond %{HTTP_USER_AGENT} ^.*(Opera|Mozilla|MSIE).*$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteCond %{REQUEST_METHOD} ^POST$
RewriteRule ^(.*)/trackback/ – [F,L]
Hopa, ce se intampla aici? Pe scurt, verificam daca vizitatorul ne spune de unde vine, adica de pe Google sau de pe alt site sau a introdus zice.ro manual in browser si ce browser foloseste. Nu ne intereseaza momentan continutul acestor date ci doar daca exista sau nu deoarece orice browser transmite aceste date pe cand spammerii si scripturile folosite de ei in general nu o fac. Ideea este ca vizitatorul este blocat inainte de a accesa continutul nostru. Partea a doua opreste trackback-urile care ne transmit un browser deci Opera sau Mozilla sau MSIE – aici smecheria functioneaza exact invers: un trackback provine de pe un site si nu are cum sa ne transmita ca foloseste un browser.
Pentru mai multe detalii referitor la aceste metode puteti citi articolul original in engleza: More ways to stop spammers and unwanted traffic scris de Donncha care a fost programatorul care a inceput sa publice varianta multiuser de WordPresss acum multi ani cand era disponibil doar pentru un singur blog. Mai multe detalii referitoare la blocarea vizitatorilor inainte de a accesa continutul nostru gasiti la sfarsitul acestui articol.
Cand vine vorba de WordPress, in primul rand folosim pluginul numit Bad Behavior care opreste cea mai mare parte din spamerii automatizati in functie de “comportament” – adica verifica tehnica cu care vizitatorul acceseaza site-ul nostru (de ex. referer header empty, required header ‘Accept’ missing, header ‘Expect’ prohibited; resend without Expect, cele mai multe teste find executate inainte ca wordpress sa fie incarcat) . Daca tehnica seamana cu cea a spammerilor, vizitatorul este blocat inainte de a accesa continutul nostru cu un mesaj care il informeaza de ce a fost blocat si ce poate face pentru a rectifica problema. Versiunea de Bad Behavior folosita de noi este modificata special pentru wordpress multisite deoarece acest plugin creaza cateva tabele in baza de date pentru fiecare blog si ofera administratorului fiecarui blog acces la optiunile pluginului. Aceste functiuni au fost extrase din versiunea care ruleaza pe zice.ro
Daca vizitatorul trece de acest test in urmatorul test este comparat cu listele de spammeri de pe Project Honeypot un project care analizeaza spammeri si mentine liste actualizate bazate pe adrese de IP-uri si emailuri, iar in cazul in care vizitatorul este blocat i se prezinta o metoda de contact cu explicatia din ce motive a fost blocat si metode de rectificare a problemei.
Dupa aceste teste vizitatorului i se prezinta site-ul iar in cazul in care comenteaza sau doreste sa isi creeze un blog datele lui tehnice adica IP si email sunt comparate cu listele mentinute de StopForumSpam si BotScout.
Cine trece de toate aceste teste, este cu siguranta un om si nu un bot (programe si scripturi folosite de spammeri pentru a posta sute de linkuri si reclame in cateva secunde) si IP-ul lui sau emailul folosit de el nu au mai fost folosite pentru a trimite spam. Dupa ce si-a creat un blog, un pas care este verificat de Anti Splog un plugin comercial, vizitatorul poate sa isi foloseasca blogul. Daca vizitatorul a comentat, comentariul este verificat cu bazele de date TypePad AntiSpam inainte sa publicam comentariul lui.
In cazul in care comentariul nu poate fi verificat ca find 100% ham (termenul tehnic pentru non-spam) este plasat in “comment queue” pentru moderare de catre adminul blogului respectiv.
Pentru cei curiosi inca cateva pluginuri aditionale care ne ajuta la functiile descrise mai sus si care ruleaza pe zice.ro:
- AVH First Defense Against Spam – acest plugin ajuta la cateva teste descrise mai sus
- Stop Spammer Registration – acest plugin ajuta la cateva teste descrise mai sus. Blogul autorului care mai are cateva pluginuri interesante se gaseste aici: Blog’s Eye
- Simple Trackback Validation – acest plugin opreste trackback-uri cu spam si fara backlink-uri
- TanTanNoodles Simple Spam Filter – acest plugin filtreaza comentarii cu mai mult de 5 link-uri, comentarii care contin numai link-uri si comentarii care seamana in mai mult de 75% cu un comentariu mai vechi pentru a prevenii spammeri care copiaza un comentariu valid si adauga cateva link-uri la el
- Akismet – Akismet? Cum adica Akismet, ati platit licenta?
Secretul cum a ajuns Akismet pe lista noastra:
TypePad AntiSpam ofera exact acelasi serviciu ca si Akismet, in back end ruleaza acelasi “motor” de verificare (desigur testele sunt diferite) asa ca puteti folosi pluginul de Akismet care este updatat regulat (in comparatie cu cel de TypePad AntiSpam care nu a mai fost updatat de vreo 3 ani) pentru a accesa serviciile TypePad AntiSpam. Tot ce trebuie sa faceti este sa urmati instructiunile celor de la TypePad AntiSpam. In principiu trebuie sa schimbati referintele in codul pluginului din rest.akismet.com in api.antispam.typepad.com.
Pentru o activare globala, adica pentru toate blogurile zice.ro, cu un singur cod TypePad AntiSpam, folosim aceasta linie de cod in fisierul wp-config.php
define(‘WPCOM_API_KEY’,’introducodultauaici’);
Mai sus am spus:
vizitatorul este blocat inainte de a accesa continutul nostru.
- ce inseamna asta?
O explicatie simplificata:
In principiu treaba functioneaza asa: vizitatorul cauta pe google dupa “blog gratis” si gaseste zice.ro in lista de rezultate. Da click pe link si ajunge pe zice.ro. In background, browserul lui “vorbeste” cu serverul nostru (care ruleaza pe apache2) si printre altele ii spune ca vine de pe google si ca a cautat dupa “blog gratis” dupa care serverul se uita in fisierul .htaccess (un fisier cu indicati si directive pentru acest site) si executa toate indicatiile de acolo. Urmatorul pas este ca serverul vede ca fisierul care trebuie servit este index.php asa ca porneste “motorul” PHP (limbajul de scripting pe care ruleaza wordpress). PHP isi incarca configuratie si porneste incarcarea wordpress, adica toate pluginurile care sunt executate automat, scripturi integrate in wordpress, cod executat in template-uri deci pe scurt o groaza de lucru care implica multa memorie consumata si ar putea fi degeaba daca dupa incarcare se determina ca vizitatorul este un spammer.
Aici intervine idea cu: hai sa blocam vizitatorul inainte de a accesa continut. Blocand spammerii inainte sa accese continut, nu consumam nici CPU, nici memorie si nici timp pierdut degeaba accesand baza de date in care se afla zice.ro
Pentru cei care folosesc wordpress multisite si vor sa scape de cateva splog-uri (blog creat de un spammer) va mai zic o smecherie:
# BEGIN ANTISPAMBLOG REGISTRATION
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-signup.php*
RewriteCond %{HTTP_REFERER} !.zice.ro. [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) [R=301,L]
Folositi aceste randuri in fisierul .htaccess pentru a bloca spammerii care acceseaza direct pagina voastra de inregistrare sau nu va transmit informatii despre ce browser folosesc. Idea este ca vizitatorul trebuie mai intai sa ajunga pe zice.ro inainte sa dea click pe “vreau si eu un blog” – daca acceseaza pagina de creare al unui blog nou direct este trimis spre dar puteti alege orice alt url sau alta reactie pentru ei.
Noi pe zice.ro am modificat urmatorul rand: RewriteCond %{REQUEST_URI} .signup-*/ deoarece la noi linkul de inregistrare se schimba zilnic si contine 3 cifre aleatoare in loc de * – de ex. astazi inregistrarile se efectueaza pe signup-567/
As vrea sa inchei acest articol care a iesit cu mult mai lung decat dorisem cu avertizarea ca acest articol nu este un tutorial copy-paste, multi pasi din cei descrisi aici au nevoie de customizare inainte sa poata fi folositi pe blogurile voastre. De asemenea nu am putut descrie si explica fiecare pas in detaliu deci daca aveti intrebari, punteti-le aici in comentarii. Speram ca acest articol va va fi de folos in lupta impotriva spammerilor!
P.S. Nu am uitat de solutiile care implica captcha dar nu dorim sa recurgem la ele pe zice.ro.
1 comentariu pana acuma ↓
Altundeva pe net se comenteaza...
[...] Acest articol a fost publicat si pe zice.ro [...]
Publica-ti parerea! Comenteaza aici:
Vreau sa fiu instiintat de comentarii noi prin e-mail. Daca vrei poti sa te abonezi fara sa comentezi..