Pēc tam, kad biju spēris šo drosmīgo soli un nomainījis sava bloga tēmu, man komentāros sāka gāzties iekšā spama jūra.
Un nekādi nevarēju saprast, kas nav tā kā vajag, jo it kā visu esmu salicis savās vietās, bet spameri tik plosās. Nācās pat aktivizēt Akismet spraudni, ko visi tik ļoti slavē.
Tad es sāku šķetināt pēc pavediena un atcerējos vienu mazu viltību, ko aizguvu no Laacz pieredzes un ieviesu arī savā blogā. Pēc šīs nelielās viltības es varēju droši slēgt ārā Akismet, jo toreiz šis spraudnis par spamu uzskatīja norālus ierakstus.
Iespējams, ka vēl kādam tas varētu noderēt. Mēģināšu uz pirkstiem parādīt, kā tad īsti darbojas šī viltība.
Ideja ir gaužām vienkārša. Izmantojot JavaScript burvību mēs nomainām NEīsto komentāru pievienošanas adresi uz īsto.
Izskatās tas šādi.
1. Izveidojam jaunu lapu savā blogā, kurā vajag aprakstīt to kāpēc cilvēks šeit ir nonācis. Iedomājies situāciju, kad kāds kuram ir atslēgts JavaScript atbalsts, mēģina pievienot komentāru. Tā vietā, lai pievienotos komentārs, viņš tiek aizmests uz citu lapu. Šajā lapā vajag populārzinātniski izskaidrot to kāpēc viņš tur nokļuva. Es rupji nokopēju no Laacz šo tekstu un tur ieliku. Man šī adrese ir pods.lv/spam/.
2. Ejam uz sava WordPress tēmas mapi un meklējam par komentāriem atbildīgo failu.
Ja nekas tuvākajā laikā nemainīsies, tad tas ir /themes/temas_nosaukums/comments.php fails.
3. Veram to vaļā un meklējam šādu rindiņu.
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
Šo daļu aizstājam ar šo.
<form action="<?php echo get_option('siteurl'); ?>/spam/" method="post" id="commentform">
Tagad mēs būsim ieguvuši to efektu, ka visi komentāri tiks sūtīti uz augstākminēto adresi /spam/, kurā būs populārzinātniski izskaidrots iemesls. Ja nu gadījumā atrodas kāds indivīds, kurš ir atslēdzis JavaScript atbalstu.
4. Lai normāli lietotāji varētu pievienot komentārus, mums ir nepieciešams nodrošināt komentāru formu ar patieso komentāru pievienošanas formu.
Tāpēc te mums nāk talkā JavaScript funkcija, kas nomaina formā ierakstīto neīsto adresi pret īsto.
<script type="text/javascript">
document.getElementById('commentform').action = "<?php echo get_option('siteurl'); ?>/wp-comments-post.php";
</script>
Nu un, lai ievērotu visas pieklājības normas un piekoptu labo programmēšanas toni, pievienosim brīdinājumu par šo sistēmu.
Tāpēc uzreiz zem JavaScript izvietosim lūk šādu paziņojumu:
<noscript>
<p><strong class="postdate">Lai izmantotu komentēšanas iespēju, pārlūkā jābūt ieslēgtam JavaScript atbalstam!</strong>. Kaut kā taču ir jāmēģina cīnīties ar komentāru piedrazotājiem.</p>
</noscript>
Tas parādīsies tikai tiem lietotājiem, kas ir atslēguši JavaScript atbalstu.
Un viss kods kopā izskatās šādi:
<form action="<?php echo get_option('siteurl'); ?>/spam/" method="post" id="commentform">
<script type="text/javascript">
document.getElementById('commentform').action = "<?php echo get_option('siteurl'); ?>/wp-comments-post.php";
</script>
<noscript>
<p><strong class="postdate">Lai izmantotu komentēšanas iespēju, pārlūkā jābūt ieslēgtam JavaScript atbalstam!</strong>. Kaut kā taču ir jāmēģina cīnīties ar komentāru piedrazotājiem.</p>
</noscript>
Pēc šīs darbības vēl paies noteikts laiks, kamēr meklētāji noindeksēs jauno /spam/ adresi, tāpēc efekts var arī nebūt tūlītējs. Savukārt, ja tas ir jauns blogs, kas tikko ir parādījies, tad man ir pārliecība, ka tas nostrādās uz 90%.
Jābrīdina uzreiz, ka spams samazināsies par visiem 90% vai vairāk, bet pilnībā neatbrīvos no ļaunajiem botiem, jo ir arī dažs labs, kas tiek cauri arī šai sistēmai.
Lai nu ka nebutu ar spamiem, iekš G readera tagad radas:
K?? tikt gal?? ar koment??ru spamu bez Akismet pal??dz??bas?
Vajadzēja arī pārsaukt to wp-comments-post.php, jo daudzi spameri sūta SPAMu pa taisno uz to failu, nevis ķeksē ārā no html.
vot nevarēšu vairs es komentēt tagad no “lynx”.
zigmund, šī sistēma podā bija jau veselu gadu, tā kā “vairs” jau sen nevar. 😉
nu līdzīgas shēmas ir pārbaudītas arī praksē, un diemžēl gan jāsecina, ka tās ne vienmēr darbojas.
ramuuns, atliek tikai nosūtīt uz šo te komentāru, ko savulaik man laacz pateica.
Kopš uzliku šo te sistēmu vairs gandrīz neviens spameris nav neko komentējis. Pirms tam stundā kādi 10 gab. vismaz kaut ko iespļāva.
Ja tā ir jau gadiem ilgi dzīvojusi sistēma, tad jāiet nākamais ceļš un jāmaina noklusētais nosaukums uz citu. Ja tas vairs nestrādā, tad jāievieš neliels PHP skripts ar random fīčām. Pēc tam var vēl šo to ieviest. Pats pēdējais, ko darīt ir captcha.
Salabo jel RSS fīda encodingu 🙁 tas vairs nav smieklīgi 😀
Vadzi, bet ja jau JavaScript šim risinājumam ir tāpat nepieciešams, tad kādēļ neizmantot daudz vienkāršāko metodi ar obligāto checkbox ieķeksēšanu?
Oi, sorry, jaunais gaišais dizains mani apmulsināja, atstāju tukšus lauciņus.
Anonymous, tas ir nākamais solis, kad nestrādā visas normālās sistēmas “bez lietotāja” iesaistes. Šeit ir runa par aizsardzību, kas neprasa lietotāja iejaukšanos, lai apstiprinātu, ka viņš ir dzīva būtne.
Protams, ja visi standarta veidi nestrādā, tad ir jāķeras pie lietotāju piesaistes. Man personīgi nepatīk ķeksēt checkboxus un ievadīt captchas, bet, ja nekas cits nedarbojas, tad nekas neatliek…
nais. neatceros, kas ieminējās blogos, bet lieliska fiška bija arī ieviest formai papildus hidden lauku ar kādu defualt vērtību vai tukšu (ar css paslēpt, lai parastie lietotaaji neredz). Bots aizpildīs tos laukus ar kādiem linkiem vai vēl ko. Tev postā paliek pārbaudīt vai palikusi default vērtība.
Es vienā no savām formām (ne wordpresam gan) biju ielicis trīs laukus (bišķ pārspīlēju) un saliku tur vērtības + tos input laukus nosaucu botiem labvēlīgākus: name, url, homepage, email. Tad tik čekoju postu. Palasīju laacz komentāros tajā rakstā, tad problēma laikam sanāktu pie WP update tur chakareeties.
bet varētu…
salikt fake inputus: divus redzamus un divus atvērtus, tad uzlikt JS , kas samaina formas apstiprināšanas lapu uz step2.php, kur atkal php pārbauda visus inputus, tad Jquery nosūta $.post uz step3.php, kur atkal nočeko visus inputus un atsūta atbildi. Tad ja viss oke, viss vajazīgais tiek sūtīts caur ajaxu uz wp-comments.php kā posts. uhh. Un katram trešajam lai izmet kapču : ))
narkomanC, tie ir jau sarežģītāki risinājumi un prasa nedaudz programmēšanu servera pusē, kas būtu kāds no nākamajiem soļiem, ja šie elementārie vairs nestrādā. 🙂
es jau jokā 😉 sākot no “bet varētu..”. līdz tam kā variants man patika. sāku domāt, ka varbūt tas bija endija blogā.
Iesaku vienkāršu, bet ģeniālu veidu:
1) pārsauc e-pasta lauku uz ‘elektroniskaisPasts’.
2) pie komentāra saglabāšanas ieliec pārbaudi – ja ‘elektroniskaisPasts’ ir aizpildīts, tad laukā obligāti jābūt ievadītam e-pastam (@ zīme, domeins, utt.). Ja tas nav e-pasts, vienkārši izdrukā lūgumu – lūdzu aizpildiet e-pasta lauku.
Boti parasti darbojas, mēģinot aizpildīt formu laukus ar random vērtībām (+pievienojot URL uz spama lapām). Bots, protams, mēģināt aizpildīt arī lauku ‘elektroniskaisPasts’, taču nezinās, ka tajā obligāti jāieraksta e-pasts. Sistēma darbojas vienkārši brīnišķīgi – pēdējo 4 mēnešu laikā neesmu saņēmis nevienu spamu.
black, arī šis veids ir pārāk sarežģīts + tiek pieprasīts no lietotāja e-pasts, kuram pie tam vēl ir jābūt korekti aizpildītam. Es neprasu e-pasta adreses lauku aizpildīt, jo man nav nepieciešami lasītāju e-pasti.
Attiecīgi tas, pirmkārt, ir sarežģītāks variants, jo pieprasa papildus programmēšanu servera pusē, otrkārt, pieprasa epasta adreses ievadīšanu no lietotāja un, treškārt, apgrūtinās dzīvi, ja gribēsi izmantot spraudņus, kas saistīti ar komentāru formu un epasta lauku. Vismaz man tā šķiet.
Bet es piekrītu, ka citos risinājumos tas varētu būt labāks variants jau kā nākamais solis.
Nē, tas neprasa obligāti no lietotāja e-pastu. Lauku var atļaut atstāt arī tukšu (boti vienmēr aizpilda VISUS laukus), taču ja kaut kas ir ievadīts, tad gan ir jāatbilst e-pastam.
Par programmēšanas nepieciešamību piekrītu, taču arī Tevis ieteiktajā variantā tas ir (minimāli, skat. “get_option(‘siteurl’);”) nepieciešams. Domāju, ka lauka pārbaudi var pielikt arī cilvēks bez 10 gadu pieredzes programmēšanā.
Par spraudņiem – tas tiešām varētu apgrūtināt dzīvi.
Tā ir iebūvētā WordPress funkcija, viss pārējais ir pliks JavaScripts.
http://shadowbird.wordpress.com/2008/04/01/permanent-cure-against-comment-spam/
Atbalss: Atbrīvojamies no komentāru spama | IT sviestapika
Atbalss: hacked by n2n | IT sviestapika