m2 blogas

2008 m. spalio 5 d. | Julius
Julius

Nėra dabar tokio rimtesnio tinklapio, kuris nebendrautų su vartotojais per įvairias komentarų, kontaktų formas. Šiomis formomis mėgsta piktnaudžiauti automatizuoti brukalo (spam) brukėjai. :) Standartinių sprendimų netrūksta, štai nesenai radau straipsnį su keletu išvardintų būdų.

 

Tingintiems skaityti, ten yra keturi sprendimai brukalo problemai:

  • riboti laiką tarp komentarų išsiuntimo - jei vartotojas siunčia daug komentarų per labai trumpą laiką, greičiausiai tai spam'o robotas;
  • raktinių žodžių juodasis sąrašas - jei komentaro tekste yra tam tikri žodžiai, gali būti, kad tai brukalas;
  • CAPTCHA - tam tikra užduotis vartotojui, kurios neįveikia "šlamštinius" komentarus siunčiantys robotai (įvesti tekstą iš paveiksliuko; išspręsti uždavinį ir įrašyti jo atsakymą);
  • interneto tarnyba Akismet - sudėtingų algoritmų pagalba veikianti interneto tarnyba gana tiksliai atrenkanti gerus ir blogus komentarus.

 

Tačiau šie sprendimai turi savo minusus. Laiko ribojimą galima apeiti sukūrus gudresnį spam'o robotą, kuris spam'ą siunčia ne taip dažnai (tai yra pakankamai lengva). Kiti du sprendimai - papildomos problemos tinklapio vartotojams. Juodasis sąrašas nežino nieko apie kontekstą, kuriame rašomas komentaras, todėl kartais gali pašalinti ir gerus komentarus. CAPTCHA - papildomas žingsnis vartotojui, kuris su komentaro rašymu visiškai nesusijęs. (Argi kavinėje prieš norėdami parašyti į skundų/padėkų knygą prieš tai sprendžiate matematinį galvosukį, kad jums duotų tą knygą? :)

 

Akismet - asmeniniams tinklapiams geriausias variantas, tačiau norėdami jį naudoti įmonės tinklalapyje tikriausiai jums tektų periodiškai susimokėti už Akismet teikiamą paslaugą. (Sakau "tikriausiai", nes nesu tikras dėl licenzijos sąlygų - gali būti, kad jei tinklapyje nerodote reklamos ir jis nėra jūsų pajamų šaltinis - moketi nereikės).

 

Ką daryti jei nenorime "nervinti" vartotojo nereikalingais įvedimo laukais arba Akismet kainuoja per brangiai. Čia skambant fanfaroms į sceną ateina minėtasis "pamirštas būdas kovoti su brukalu".

 

Iškarto atsiprašau skaitytojų - žemiau esanti informacija bus pakankamai techniška, todėl kai ko galite ir nesuprasti.

 

Keliuose paskutiniuose projektuose, prie kurių kūrimo teko prisidėti, reikėjo greito ir paprasto sprendimo, kaip atsikratyti automatizuotai siunčiamų komentarų su šlamštu (kuriuos siunčia spam-bot'ai). Nei vienas iš aukščiau paminėtųjų variantų netiko. Faktas - jei visi formos input laukai neturi name atributo, tai iš formos perduodamų duomenų masyvas visada bus tuščias. Pasakius trumpai, komentarų atveju, galime įrašyti formos laukuose bet ką ir spausti mygtuką "Siųsti", niekas neišsisaugos, nes tiesiog nebus perduoti jokie duomenys.

 

Ši dalis man labiausiai patinka. :) Padariau prielaidą, kad didžioji dalis spamo robotų negali interpretuoti JavaScript kalbos kodo puslapyje, o tuo tarpu tinklalapio vartotojo naršyklė - gali. Todėl input lauke naudojame id atributą, o JavaScript kalbos pagalba nustatome name pagal id.

 

Žinoma, šis sprendimas nėra kažkas, už ką reikėtų man duoti Nobelio premiją :) tačiau kolkas jis mano žiniomis pasiteisino. Taip, jis turi trūkumų, jį galima nugalėti, tačiau jei reikia sprendimo kuris netrukdytų tinklalapio vartotojui, būtų lengvai ir greitai įgyvendinamas su minimaliais kaštais... manau šis sprendimas yra toks.

 

Post Scriptum: kaip pastebėjote šis straipsnis labiau techninis, nei kiti iki šiol parašytieji. Nesuprantantys, ką aš čia prirašiau (potencialūs projektų vadovai?), nenusiminkite, nebūsiu tas, kuris viską visada rašys sausai ir techniškai, galite iš manęs tikėtis ir įdomių pasakojimų apie nutikimus ofise. :)

 

Kolkas tiek, laukiu Jūsų nuomonių!


Rašyti komentarą

Valdas | 2008 m. spalio 18 d. 15:00
Sveikas, dalinai sutinku su tavo pastebėjimais, tačiau mano nuomone geriausia blogybė iš visų šių butų "captcha", pabandysiu argumentuoti. Tavo siūlomam variantui naudoti 'javascript' išspręsti šią problemą pastebėjau kelis trūkumus. Visų pirma tarkime "negeras žmogus" išsprendė tavo šią mįslė ir sukonstravo elementarų formos "spam" robotą. Žinoma "Captcha" ir neapsaugota nuo iššifravimo, tačiau sutiksi su manim, kad šis procesas yra sudėtingesnis. Visų antra manau, kad svetainė turėtų veikti be "JavaScript", o "JavaScript" būtų naudojamas tik vartotojo sąsajai praplėsti (pvz.: preliminarus laukų validavimas). T.y jeigu aš išsijungčiau "JavaScript" mano formos laukus validuotų PHP, tad sistema vistiek būtų apsaugota nuo "spam'o". Žinoma užduosi klausimą kam to reikia, jeigu "web'as" veiks be "JavaScript" jo visa informacija ir funkcionalumas sėkmingai veiks ir naršant su mobiliuoju įrenginiu (Mini Opera, Safari). O tai manau yra privalumas ateities svetainėms ir sistemoms. Beje, su klaidomis užpildyta komentaro forma yra paslėpiama, manau kad ji turėtų būti rodoma ir turėtų būti nukreipimas ne į puslapio viršų, o į formos vietą.
Julius | 2008 m. spalio 23 d. 09:41
Žinoma, sutinku, kad šis sprendimas turi savo trūkumus ir jis neprivers Akismet numirti. :) Taip pat, kaip minėjai, "blogietis" gali išsiaiškinti šią myslę, tačiau aš galvoju šitaip: "blogietis" norintis platinti spam'ą susidaro (arba jo robotas sudaro) pakankamai ilgą sąrašą tinklalapių su įvedimo formomis ir potencialiai dideliu lankomumu. Kitas arba tas pats robotas paima tą sąrašą ir mėto ten šiūkšles/spamą. Manau, sutiksi, kad blogiečiui tikrinti, kodėl spam'as nepraeina į vieną ar kitą tinklapį, yra daug brangiau laiko atžvilgiu, negu susirasti kelis naujus tinklapius, kurie padengtų "nuostuolį". :) Žinoma, jeigu tinklapis turi didelį lankomumą, tuomet apsimoka mėginti "nukneckinti" :) jo komentarų apsaugą. Kodėl aš čia tokias išvadas padariau? Esu matęs kaip į daug mažų tinklapių komentarų formas (tame tarpe ir savo blog'e kai jis buvo dar visiškai šviežias) pareina krūvos spam'o. Tarkime mano blogo lankomumas tuomet buvo tikrai nedidelis, spėju tų kitų tinklapių - taip pat. Todėl ir dariau išvadą, kad mano tinklapį spam'ui pasirinko ne pats blogietis, o kažkoks robotas ieškantis input laukų. Dar kartą :) sutinku, kad mano prielaidos galbūt nėra visiškai teisingos, tačiau kolkas jos pasiteisino. Be to, šitokio būdo kovoti su spam'u pasigedau visuose savo skaitytuose straipsniuose. Tokių idėjų generavimas padeda mano smegenims neužrūdyti :) ypač, kai išgirsti ir kitokią nuomonę. ;)
Darius | 2008 m. spalio 29 d. 14:13
Kalbant apie spamo platintojus kaip Julius ir mini reiktų išskirti 2 atvejus: kai robotai vaikšto po visus tinklalapius(dažniausias atvejis) ir kai yra nutaikyti į tam tikrus tinklalapius. Antru atveju matyt vienintelis rimtas apsisaugojimo būdas - sudėtinga(sunkiai įskaitoma) "captcha", nors jis ir yra labai nepatogus vartotojui. Pirmu atveju tinkami visi išvardinti metodai ir turbūt geriausia juos naudoti kompleksiškai. Įdomu kaip Akismet susitvarko su lietuvišku spamu. Gal kam tekę susidurti?
Ae | 2009 m. birželio 4 d. 10:32
Aš tai naudoju tokį būdą apsaugai nuo spam'o: Pridedu formoje laukelį tarkim su name "url" ir jį paslepiu su css. Paprastas vartotojas jo nematys (nebent išjungs css, kas yra labai retas atvejis). Spambot'as jį matys ir užpildys, taigi kai serveris gauna formos duomenis patikrinu ar paslėptasis laukelis užpildytas. Jei taip - spam'as. Jei ne - praleidžiam. Iki šiol pasiteisino 100%. Šita apsauga, savaime aišku, skirta apsisaugoti ne nuo specializuotų spambot'ų (sukurtų tik vienai svetainei tarkim). Beje, spambot'ai sugeba interpretuoti JavaScript :) p.s. jūsų apsauga nuo spam'o niekam tikusi. Nors tekste nėra nuorodų, bet neleidžia komentuoti :|
Naujausi komentarai
  • 2009 m. lapkričio 20 d. 10:27
    Stepas Ačiū už info ;)
  • 2009 m. spalio 4 d. 13:18
    Audrius O kurioj vietoj laikeisi sertifikata?
  • 2009 m. rugpjūčio 25 d. 18:42
    Darius Didžiausi sveikinimai Janui!
  • 2009 m. liepos 17 d. 09:02
    Julius My personal favorite yra lambda funkcijos. :)
  • 2009 m. liepos 5 d. 23:22
    aur1mas Perskaitęs antraštę tikėjausi šiokio tokio naujovių apžvelgimo,...