Röviden összefoglalva a click fraud az a jelenség, amikor egy személy, vagy egy program rossz szándékkal egy fizetett hirdetésre kattint. A jelenség motiváló tényezőjének boncolgatását inkább a pszichológusokra bíznám, inkább valami másra koncentrálnék az elkövetkezőkben.
Egy-két oldalt és prezentációt átnézve egyre inkább úgy tűnik számomra, hogy az ipari méretű csalások mögött leginkább robot hálózatok állnak. Az oldalletöltések azonos IP-ről egyszerre akár több operációs rendszert azonosítva is érkezhetnek.
forrás
A probléma ezzel a jelenséggel az, hogy vétlen hirdetés publikálók is áldozatául eshetnek a Google válaszának, az AdSense fiók felfüggesztésnek.
Pár óra alatt azonban sikerült valamiféle dögös megoldást összeeszkábálnom, amit így utólag végiggondolva nem sok teret fog engedni a click fraud kártékony jelenségének.
Első lépésként bemutatnék egy képzeletbeli AdSense kódot, hogy mindjárt bele is kezdhessünk hirdetői fiókunk biztonságosabbá tételébe.
<script type="text/javascript">
google_ad_client = "pub-xxxxxxxxxxxxxxxx";
google_ad_slot = "xxxxxx";
google_ad_width = 234;
google_ad_height = 60;
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
Így néz(ne) ki a te oldaladban is egy Google hirdetés, és a forráskód megjelenítésével ez bárki számára hozzáférhető. Kimásoltam az erre a domainre dedikált kódot, majd beillesztettem egy másik oldalamba és ott is megjelent a hirdetés. Itt már kezdődnek is a gondok. Ha bárki rossz szándékkal kimásolja a javascriptet és bárhová beilleszti, szabadon kattingathat, anélkül, hogy ez neked bármilyen (webstatisztika) módon is feltűnhetne.
Ez a gondolatmenet elvisz minket a legfontosabb lépéshez. A javascript külső, védett fájlba való átmozgatásához.
<script type="text/javascript" src="adsense-kod.js">
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
Ezt követően az adsense-kod.js-be helyezzük a kódnak ezen részletét:
google_ad_client = "pub-xxxxxxxxxxxxxxxx";
/* 234×60, létrehozva 2008.03.01. */
google_ad_slot = "xxxxxx";
google_ad_width = 234;
google_ad_height = 60;
Ezzel a lépéssel az AdSense kód külső fájlba került, de a javascript direkt elérését még nem akadályoztuk meg. Használjuk erre az hotlinking ellen is szükséges .htaccess kódot, a következő formában.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?seo.i-connector.com(/)?.*$ [NC]
RewriteRule .*\.(js)$ http://seo.i-connector.com/ [R,NC]
Ezáltal a .js kiterjesztésű fájlok csak a második sorban specifikált domain fájljai számára lesznek elérhetőek. Direkt eléréskor a harmadik sorban lévő URL lesz az átirányítás végállomása.
Következzék a második lépés, amely során aktív kattinós IP adatgyűjtésbe fogunk kezdeni. Az oldalad kódjában a Google hirdetést ilyen formán építsd be.
<form method="post" action="" id="ads">
<div class="ads">
<script type="text/javascript" src="adsense-code.js">
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
</form>
Lesz tehát egy ajax posztoló form, amely tartalmazza a hirdetés kódját.
A hirdetést taralmazó oldal head részébe kérlek illeszd be ezt a három sort, és már majdnem készen is leszünk.
<script src="mootools.js" type="text/javascript"></script>
<script src="control.js" type="text/javascript"></script>
<?php require "ads-controller.php" >
Amint a három fájlon szépen végigmentünk, addigra a védelem össze is áll (tartalmuk lementésekor kérlek nagyon ügyelj arra, hogy azt a szükséges fájlkiterjeszés megadásával illeszd az oldaladba).
mootools.js
Mootools.net-ről szabadon letölthető javascript keretrendszer.
control.js
Az AdSense hirdetést tartalmazó ads class-szal azonosított div felett végrehajtott egérkattintás (mousedown esemény) válaszául a div-et 800 milisecundum alatt teljesen átlátszóvá transzformálja, valamint vezérli az ajax posztolást az ip-log.php fájl futtatásaként.
Az ip-log.php fájl fogja végezni a statisztikai adatgyűjtést gyűjtést. A benne meghatározott limit változóval ($limit=1000;) indirekt módon szabályozható, hogy hányadik kattintást követően kerüljön a logfájl törlésre, azaz ismét kattinthatóvá válnak a hirdetések a korábban már kattintók számára.
Az indirekt szabályozás abból áll, hogy a logfájl mérete kerül összehasonlításra a limit változóval. Egy IP körülbelül 13 byte. 1000 osztva 13-mal durván 75 kattintás. Azt gondolom a logfájl törlésésére olyan nagyon égető szükségünk nincs is, hiszen a visszatérő látogatóid jellemzően a tartalmadra kíváncsiak, nem is igazán a hirdetések érdeklik őket, de a szkripted futását a fájlméretének növekedésével arányosan lassítani fogja, tehát inkább a fájlméret alapján válassz limitet, mintsem a kattintások száma alapján.
ads-controller.php
Működése roppant mód egyszerű, ha a látogató hirdetési kattantása miatt a logfájlba került, akkor az oldal töltődésekor eszközli a hirdetés eltűnését.
<script type="text/javascript">
window.onload = function()
{ new Fx.Style( "ads", ‘opacity’, {duration: 1000} ).start(1,0);}</script>
A szkript működését ezen a demo oldalon megtekintheted.
Kérlek, hogy ne kattints a hirdetésre, helyette Google Ads képre kattintva ugyanazt a hatást éred el!
Nyilatkozat:
- a Google AdSense felhasználási feltételeit nem ismerem, ha valamelyik pontjával meglátásod szerint a megoldás ütközik kérlek tudasd velem,
- a mootools hajlamos szkript ütközésre,
- semmiért semmilyen felelősséget nem vállalok.
Ha a posztomat végig bírtad olvasni és megértetted, javaslom, hogy nyiss egy sört és dőlj hátra, mert rászolgáltál. 🙂
További kellemes napot kívánok!