Blog spam

Oct 11, 2006

De sidste par poster har delvis handlet om dette, og med denne skal jeg nok sætte et punktum (eller i hvert fald stort komma) ved emnet - Spam og mere specifikt . Fænomenet er tilsyneladende ikke fremmede, google giver i skrivende stund 659.000 resultater, ved en søgning på "blog spam".

I posten, "Edit in place med AJAX", skrev jeg om et magisk felt som jeg brugte til et spamfilter. Denne post handler om selve spamfilteret, og andre metoder at komme blog spam til livs.

Først og fremmest, kan man jo spørge sig selv, hvor vigtigt det egentligt er at komme blog spam til livs? Og ikke mindst, hvor vigtigt er det for dig? For mit vedkomende, handler det om kontrol - alle programmører er kontrol-freaks! Og så er jeg vel lidt af en perfektionist. Jeg synes bare ikke det hørte nogen steder hjemme, at der i en post om X kommer et link/reklame til Y.

Men "udseende" og holdning er ikke altid den eneste grund. Langt hen ad vejen går det, at administrerer en hjemmeside, ud på at være god ved søgemaskinerne. Ifølge denne blog post, siges det at "84.8% af brugerne finder information om websites igennem søgetjenesterne". Om du er en stor, eller lille virksomhed, eller bare en privat person, må man gå ud fra, at din side er blevet lavet med et formål - Og i de fleste tilfælde har man have et budskab eller et produkt, som man gerne vil have folk skal finde og se. Spam kan i denne situation være med til at mindske søgemaskiners "tro på din side", og samtidig kan evt. links posteret af spammeren, være med til at forøge spammerens "troværdighed" (med "tro" og "troværdighed", menes PageRank el.lign. mål). Dermed et par grunde til at gøre noget ved det, og herunder et par metoder til samme.

Wikipedia introducerer os til følgende metoder:

  • Blocking by keyword:
    • Titlen beskriver metoden meget vel, altså går det i alt sin enkelthed ud på at blokkerer for posteringer der indeholder specielle keywords.
  • rel="nofollow":
    • rel(ation) er et HTML-tag. Tagget skal ikke blandes med det i robots-meta-sammenhæng. Benyttes det i meta-sammenhæng, vil det gøre at robotter (læs søgemaskiner), ikke følger links der findes på siden. Bruges det derimod som attribut til links (<a href...>), vil det ikke stoppe søgemaskiner i deres crawling, men betyde at linket ikke skal tages med i beregningen af f.eks. .
  • Turing tests / CAPTCHA:
    • Denne metode er jeg personligt stødt på op til flere gange. Ofter lige før en submit knap, indsættes et forvrænget billede, som indeholder en blanding af store og små bogstavere, samt tal. Denne tekst skal gengives i et andet fejl, og skal verificeres før en tekst kan posteres.
  • Distributed approaches:
    • Idéen går ud på at checke links op mod links posteret "andre steder" på nettet. Og alt efter hvilket udfald dette check giver, sendes et "reject" eller "accept" tilbage.
  • Application-specific anti-spam methods:
    • Flere af de støre blogging-tools, som f.eks. Moveable Type har lavet deres egne spam-filtre og -metoder.
  • AJAX:
    • Benyttes AJAX / XMLHttpRequests til postering, kan man undgå posteringer via almindelig POST requests.
  • Switching off comments:
    • Efter min mening bør dette være den sidste løsning, men i nogle tilfælde ses det alligevel anvedt - Gangke simpelt helt at fjerne muligheden for at posterer kommentarer.
Six Apart har ligeledes lavet en lignende "Guide to Comment Spam". Siden giver en god introduktion til anatomien ved en postering, altså hvad kan man identificerer en postering på. Nogle af de overstående metoder gå igen, men generelt (selvfølgelig) handler det om metoder/plugins til Moveable Type. Siden introducerer også begrebet/metoden IP throttling.
  • IP throttling:
    • Dette var den første metode jeg prøvede - men uden megen held! Når en person/klient poster en kommentar, er det simpelt at gemme dennes IP adresse sammen med selve posteringen. Hvis denne post viser sig at kunne klassificeres som spam, kan IP adressen tilføjes en liste som man kan checke op imod, når der i fremtiden bliver postert igen. IP adresser der findes i listen, bliver herefter nægtet adgang til at posterer.
Endelig faldt jeg over "Anti-spam Features" på Meta.Wikimedia.org, hvilket var den side jeg fandt mest interresant, og den side hvorfra jeg valgte den løsning jeg bruger nu. Som med Six Aparts guide, forklare denne side nogle af de samme metoder, men specielt blocking by keyword har de taget en indgangsvinkel til, som jeg synes godt om.
  • Blocking by keyword med regulære udtryk:
    • er et kapitel for sig selv, men kort fortalt kan man definere et mønster, og i dette tilfælde bruge dette mønster som en spam filter. Når en person/klient posterer sin kommentar, kan denne checkes op imod filteret, hvorefter kommentaren tilades eller nægtes.
I PHP kan dette gøres som herunder. $filter-variablen skal formateres som regulære udtryk formateres i PHP. $comment-variablen er den tekst streng som en bruger vil poste. Selve filtreringen (if()-sætningen) benytter eregi()-funktionen, som evaluerer om dele af vores filter indeholdes i strengen kommentaren. I dette tilfælde vil vi ikke modtage kommentarer, som indeholder "online-casino" eller "buy-viagra" eller "porn":
$filter = "/online-casino|buy-viagra|porn"; if(eregi($filter, $comment)) { //do not post } else { //ok to post }
Så tror jeg nok, jeg fik sagt hvad jeg lige havde på hjetet - hvad blog spam angår. Er der nogen derude, der har haft lignende problemer, eller har funde andre løsninger, vil jeg meget gerne høre mere om det.

Comments

comments powered by Disqus