Hoppa direkt till innehåll

Dölj emailadresser för spam-robotar

2008-07-28 - atlas, email, robotar, spam
Om du är webutvecklare så är du kanske medveten om problemet med att skriva ut e-post-adresser i källkoden så dom kan bli funna av robotar som likt Google söker internet efter giltiga e-postadresser att skicka spam till. Atlas använder sig av två system för hur detta hanteras, beroende på hur "säker" siten vill vara. Jag tänkte gå igenom dom två metoderna här, om det är någon som är intresserad.

Metod 1: JavaScript

Den snyggaste lösningen är att använda sig av Javascript för att visa en kodad e-postadress. Fördelen med detta är att slutresultatet blir precis som om man hade skrivit adressen rakt upp och ned, och den blir klickbar och fungerar precis som vanligt.
Steg ett är att koda e-postadressen, och det gör vi genom att lägga till skräptecken och använda oss av rot13, så att strängen ser helt kacka ut i koden. Det betyder att adressen "jonas@eklundh.com" ser ut så här i koden:

Text

Maila mig på <script type=" text / javascript "> em("| !w(!b<<a>winkn<!f|>@!!r)>x!(y!<h >a>|q()u><.<winktounge:<b |z<wink>") </script>

Resultat

Maila mig på

PHP

function encode_email($mail){
  $chars = array(">", "|", "<", " ", "wink", "(", "!");
  foreach (preg_split("//", $mail) as $c) $s.= $chars[rand(0, count($chars)-1)] . $c . $chars[rand(0, count($chars)-1)];
  $s = str_rot13($s);
  return "em("$s"wink";
}

JavaScript

String.prototype.rot13 = function(){ return this.replace(/[a-zA-Z]/g, function(c){ return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); }); }; function em(s){ s = s.replace(/[><s!|)(]/g, ""); s = s.rot13(); document.write("<a href="mailto:" + s + "">" + s + "</a>"); }
Så det som händer ovan är att PHP-funktionen används för att göra om email-adressen till gibberish och sen anropas en javascript-funktion för att skriva ut den riktiga adressen samt en länk så man kan klicka på den. Så länge användaren har javascript påslaget så fungerar detta perfekt.
Men om han inte har det då? Ja, då kan man lägga till en NOSCRIPT-tagg och där lägga in email-adressen som en bild, men att skapa en sådan bild är inget jag går in på här.

Metod 2: PHP

En nackdel med javascript-metoden är att robotar skulle kunna använda sig av en riktig javascript-tolk innan dom går igenom koden, vilket skulle exponera adressen. Ett sätt att dölja adressen helt från koden är att använda ett till PHP-script för att skapa länken till mailet. Resultatet blir så här:

Text

Maila mig på <a href="/sendmail.php?sendmail=S6DF54nz9hLKANMJgfqJ5xnP5wo20%3D">e-post</a>
Och sen har du ett php-script som heter sendmail.php som ser ut så här:

PHP

if ($_GET["sendmail"]){
  header("Location: mailto:" . code($_GET["sendmail"]));
}
På det viset så finns det inget som liknar en e-postlänk i koden, och när man klickar på länken så fixar ett php-script själva avkodningen och sedan skapar en mail-länk. Jag vill inte här gå in på vad min code()-funktion gör, men det är en reversibel kodning av en textsträng som bara Atlas kan koda och avkoda. Det är samma funktion jag använder för att skapa länken ovan. Det finns exempel på sådana på nätet om ni vill skapa egna.
Fördelen med den här metoden är att det ser ut som en "normal" länk som robotarna struntar i eftersom dom förmodligen utgår från att det går till ett kontaktformulär.
Mer i Tutorials
Min feed
Fixa transparenta PNGbilder i Internet Explorer 6
Rkna tid med PHP
Dlj emailadresser fr spamrobotar
Skuggor med CSS
Skapa rutor med CSS
Erstta tabeller med CSS
Mer i Webblog
Reklam i Spotify
Miljvnliga Maccar
Flersprkigt websystem
Dlj emailadresser fr spamrobotar
Husbilssemester
iPhone 3G
Coca Cola
Nyckelord: atlas, email, robotar eller spam
Web 20
Hur vljer man publiceringsverktyg fr webben
Forum p sandmannet
Dlj emailadresser fr spamrobotar
jQuery
Atlas versionerat
Raid installerad
Mixtejp
Norrsken
Kan ha "råkat" skaffa något på Sci-Fi-mässan
Recension: Steam Hotell
Rostfärg och IKEA-lampa
Create a physical book from my digital book
Survey Island
Someone is trying to sell my map!
Julkalender
Myst book updated
Recension: Yasuragi Ryokan Hanare
Recension: Ad Astra
Ny tatuering - midgårdsormen!
Minnestal till en kaffekopp
Förlovade
Sweden Rock 2023
Ny nummerskylt för huset
Fix i husbilen
Grubbelgubbe
Måla med rostfärg
Vårfix i trädgården
Jung Kook
Pappaskämt och annan humor
Bilder på spelbordet när det används
Använda laserskäraren för att skapa innehål...
Julklappar med laserskärare
Budget-Spa
Nyckelskåp
Fjällkaffe
1/20 DeLorean Time Machine
Caso Outdoor Cooler
Minikyl Coca Cola
Verktygsvagn med verktyg, 161 delar
CSS filters for background images
Huset ommålat!
Skiss för tatuering
Spelbordet klart
Laser cutting my Myst Island
We Can Do It
Batwing
Elsa
Skaffat husbil
Foton på bilen
Remarkable 2
Ny espressomaskin!
Porträtt av Emma
AtlasCMS och rådande krissituation
Ny bil! Ford Mustang Mach-E GT
Spelbordet, igen
Ny bil beställd