Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: NoScript und Cookies - Lösungsansatz

  1. #1
    Erfahrener Benutzer
    Registriert seit
    11.01.2007
    Beiträge
    278

    NoScript und Cookies - Lösungsansatz

    Hallo,

    da das Thema NoScript und Cookies von Drittanbietern ja immer mehr zum Spektakel wird, hier mal ein kleiner Lösungsansatz, wie man dem als Webmaster entgegenwirken kann.

    Zunächst eine Tabelle anlegen :

    Code:
    CREATE TABLE IF NOT EXISTS `vms_noscript_check` (
      `uid` int(11) NOT NULL default '0',
      `time` int(11) NOT NULL default '0',
      `ip` int(11) NOT NULL default '0',
      `browser` varchar(255) NOT NULL default '',
      `platform` varchar(255) NOT NULL default '',
      `scripts` tinyint(4) NOT NULL default '0',
      `cookies` tinyint(4) NOT NULL default '0',
      `bstring` text NOT NULL,
      PRIMARY KEY  (`uid`)
    ) TYPE=MyISAM;

    Danach erstellen wir einen neuen Ordner im VMS-Verzeichnis und nennen ihn "klickcheck". Diesen Ordner versehen wir mit Schreibrechten. (CHMOD 666 oder 777)

    Nun eine Datei, ebenfalls im Grundverzeichnis des VMS, und nennen sie klickcheck.php

    Inhalt von klickcheck.php :

    PHP-Code:
    <?php
    @require_once ('lib/functions.lib.php');

    function 
    entstuemmeln($derstummel$derkey) {
     
    $derstummel base64_decode($derstummel);
     
    $derstring "";
      for(
    $i=0$i<strlen($derstummel);$i++) {
      
    $derstring .= chr(ord($derstummel{$i})^ord($derkey{$i%strlen($derkey)}));
      }
     return 
    $derstring;
    }

    $dieuid entstuemmeln($_GET['check'], $percode);
    $dieuid2 base64_decode($dieuid);

    $file6 './klickcheck/TEMP_'.$dieuid2.'.php';

    if (
    file_exists($file6)) {
    @
    unlink($file6);

    $goto entstuemmeln($_GET['code'], $percode);
    @require_once 
    "lib/domaincheck.php";

        if (
    in_array($goto$cd)) {

            if (isset (
    $_SERVER['HTTP_REFERER']) && strpos ($_SERVER['HTTP_REFERER'], $domain) !== false) {
            
    header ('Location: http://www.'.$goto.'/fbcheck.php?check='.$_GET['check']);
            }
        }
    } else {

    // Klickcheck fehlgeschlagen. Die Datei wurde aufgerufen, ohne das ein Klick gemacht wurde.
    // Hier eventuelle Massnahmen einfügen.
    // Zum Beispiel IP Adresse mit den Login-IPs oder den IPs aus der Tabelle vms_noscript_check abgleichen.

    }
    ?>
    Als nächstes brauchen wir eine weitere Datei im Ordner /lib/ : domaincheck.php

    Inhalt von domaincheck.php :
    PHP-Code:
    <?php
    $cd
    [1] = 'domain1.de';
    $cd[2] = 'domain2.de';
    $cd[3] = 'domain3.de/unterordner';
    $cd[4] = 'domain4.de';
    ?>
    Hier kann man weitere Domains eintragen. Diese dann halt immer mit fortlaufender Nummerierung (also $cd[5] etc..). Man muß Sachen wie Javascript und Cookies leider über andere Domans prüfen, wie die, auf der das VMS liegt. Denn die Cookies, die über das VMS gesetzt werden sind keine Cookies von Drittanbietern und wenn User NoScript benutzen, dann werden sie eure Domain sicher freigegeben haben, weil sonst zum Beispiel beim Klicken die Banner nicht verschwinden. Wenn man mehrer Domains hat empfiehlt es sich eventuell auch erstmal 2 zu nehmen und diese bei Bedarf immer mal wieder auszutauschen.

    Im nächsten Schritt erstellen wir dann weitere 2 Dateien :

    1.) fbcheck.php :

    PHP-Code:
    <?php
    @setcookie('control'md5($_SERVER['REMOTE_ADDR']), time()+60'/');
    header ('Location: fbcheck2.php?check='.$_GET['check']);
    ?>
    In dieser Datei wird zunächst ein Cookie gesetzt. Cookiename und Inhalt könnt ihr beliebige anpassen. Anschliessend wird auf folgende Datei weitergeleitet :

    2.) fbcheck2.php :
    PHP-Code:
    <?php

    if (!isset($_GET['check'])) $_GET['check'] = '';

    function 
    create_code($code_laenge$zeichen) {
     
    srand((double)microtime()*1000000);
     
    $created_code '';
      for (
    $i=0;$i<$code_laenge;$i++) {
      
    $n=rand() % strlen($zeichen);
      
    $created_code .=substr($zeichen$n1);
      }
     return 
    $created_code;
    }

    function 
    verstuemmeln($derstring$derkey) {
     
    $stummel "";
      for(
    $i=0$i<strlen($derstring);$i++) {
      
    $stummel .= chr(ord($derstring{$i})^ord($derkey{$i%strlen($derkey)}));
      }
     return 
    base64_encode($stummel);
    }


    $percode         'Euer Code';    // hier den Code aus eurer functions.lib.php eingeben 

    if (isset($_COOKIE['control']) && $_COOKIE['control'] == md5($_SERVER['REMOTE_ADDR'])) {
    $chars "123456789";
    $gcode create_code('8',$chars);
    $scode verstuemmeln($gcode$percode);
    setcookie('control'''time()-60'/');
    } else {
    $chars "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $gcode create_code('8',$chars);
    $scode verstuemmeln($gcode$percode);
    }

    ?>

    <html>
    <head>
    <noscript><meta http-equiv="refresh" content="0; url=http://www.eureseite.de/fbreturn_false.php?check=<?=$_GET['check'];?>&cookis=<?=$scode;?>"></noscript>
    <script type="text/javascript">
    window.location.href='http://www.eureseite.de/fbreturn_true.php?check=<?=$_GET['check'];?>&cookis=<?=$scode;?>';
    </script> 
    </head>
    <body>

    <p>&nbsp;</p>
    </body>
    </html>
    In dieser Datei müßt ihr den percode anpassen und natürlich die Domain eurer Seite. Wenn ihr vorher den Cookienamen etc. geändert habt, dann auch hier die Anpassungen vornehmen.

    Diese beiden Dateien müssen dann auf jede Domain, die ihr in der Datei lib/domaincheck.php angegeben habt, aufgespielt werden.

    Nun müssen wir wieder 2 Dateien erstellen.

    1.) fbreturn_true.php :
    PHP-Code:
    <?php
    @require_once "lib/functions.lib.php";
    @
    db_connect();

    if (!isset(
    $_GET['cookis'])) $_GET['cookis'] = '';
    if (!isset(
    $_GET['check'])) $_GET['check'] = '';


    function 
    entstuemmeln($derstummel$derkey) {
     
    $derstummel base64_decode($derstummel);
     
    $derstring "";
      for(
    $i=0$i<strlen($derstummel);$i++) {
      
    $derstring .= chr(ord($derstummel{$i})^ord($derkey{$i%strlen($derkey)}));
      }
     return 
    $derstring;
    }

    $uid entstuemmeln($_GET['check'],$percode);
    $uid base64_decode($uid);
    $browser get_browser(nulltrue);
    $cokes entstuemmeln($_GET['cookis'],$percode);
    $uid = (int)$uid;

    if (
    intval($cokes) > 0) {
    $coke 1;
    } else {
    $coke 2;
    }


    db_query('UPDATE `vms_noscript_check` SET time = '.time().', ip = '.ip2long($_SERVER['REMOTE_ADDR']).', browser = "'.addslashes($browser['parent']).'", platform = "'.addslashes($browser['platform']).'", scripts = 1, cookies = '.$coke.', bstring = "'.addslashes($_SERVER['HTTP_USER_AGENT']).'" WHERE uid = '.$uid.' LIMIT 1');
    if (
    mysql_affected_rows() == 0db_query('INSERT INTO `vms_noscript_check` (uid, time, ip, browser, platform, scripts, cookies,bstring) VALUES ('.$uid.', '.time().', '.ip2long($_SERVER['REMOTE_ADDR']).', "'.addslashes($browser['parent']).'", "'.addslashes($browser['platform']).'", 1, '.$coke.',"'.addslashes($_SERVER['HTTP_USER_AGENT']).'")');
    @
    db_close();
    ?>

    2.) fbreturn_false.php

    PHP-Code:
    <?php
    @require_once "lib/functions.lib.php";
    @
    db_connect();

    if (!isset(
    $_GET['cookis'])) $_GET['cookis'] = '';
    if (!isset(
    $_GET['check'])) $_GET['check'] = '';


    function 
    entstuemmeln($derstummel$derkey) {
     
    $derstummel base64_decode($derstummel);
     
    $derstring "";
      for(
    $i=0$i<strlen($derstummel);$i++) {
      
    $derstring .= chr(ord($derstummel{$i})^ord($derkey{$i%strlen($derkey)}));
      }
     return 
    $derstring;
    }

    $uid entstuemmeln($_GET['check'],$percode);
    $uid base64_decode($uid);
    $browser get_browser(nulltrue);
    $cokes entstuemmeln($_GET['cookis'],$percode);
    $uid = (int)$uid;

    if (
    intval($cokes) > 0) {
    $coke 1;
    } else {
    $coke 2;
    }

    db_query('UPDATE `vms_noscript_check` SET time = '.time().', ip = '.ip2long($_SERVER['REMOTE_ADDR']).', browser = "'.addslashes($browser['parent']).'", platform = "'.addslashes($browser['platform']).'", scripts = 2, cookies = '.$coke.', bstring = "'.addslashes($_SERVER['HTTP_USER_AGENT']).'" WHERE uid = '.$uid.' LIMIT 1');
    if (
    mysql_affected_rows() == 0db_query('INSERT INTO `vms_noscript_check` (uid, time, ip, browser, platform, scripts, cookies,bstring) VALUES ('.$uid.', '.time().', '.ip2long($_SERVER['REMOTE_ADDR']).', "'.addslashes($browser['parent']).'", "'.addslashes($browser['platform']).'", 2, '.$coke.',"'.addslashes($_SERVER['HTTP_USER_AGENT']).'")');


    @
    db_close();
    ?>
    Diese beiden Dateien kommen ebenfalls in das Grundverzeichnis eures VMS.

    Jetzt müssen wir nur noch eine kleine Änderung in der fc.php machen . Vor diesen Zeilen :
    PHP-Code:
    @db_close();
    ?>


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
    folgendes einfügen :

    PHP-Code:
    $frame3 '';
    $zufallstest rand(1,50); // Höhere Zahl = Weniger Checks
    if ($zufallstest == 10) {
    function 
    verstuemmeln($derstring$derkey) {
     
    $stummel "";
      for(
    $i=0$i<strlen($derstring);$i++) {
      
    $stummel .= chr(ord($derstring{$i})^ord($derkey{$i%strlen($derkey)}));
      }
     return 
    base64_encode($stummel);
    }
    $jcheck verstuemmeln(base64_encode($_SESSION['uid']), $percode);
    @require_once 
    "lib/domaincheck.php";
    $zufall rand(1,count($cd));
    $ged verstuemmeln($cd[$zufall], $percode); 
    $frame3 '<frame name="check" src="klickcheck.php?check='.$jcheck.'&code='.$ged.'" scrolling="no" frameborder="0">';
    $file5 './klickcheck/TEMP_'.$_SESSION['uid'].'.php';
    $arr 'Test';
    $fopen=@fopen($file5,"w");
    @
    fwrite($fopen,$arr);
    @
    fclose($fopen); 

    Und weiter unten diese Zeilen :

    PHP-Code:
    <frameset rows="75,*" border="0">
    <frame name="abuse" src="topframe_forced.php?id=<?=$forced['id'];?>" scrolling="no" frameborder="0">
    <frame name="werbung" src="<?=$forced['ziel'];?>" scrolling="auto" frameborder="0">
    folgendermassen ergänzen :
    PHP-Code:
    <frameset rows="75,*,0" border="0">
    <frame name="abuse" src="topframe_forced.php?id=<?=$forced['id'];?>" scrolling="no" frameborder="0">
    <frame name="werbung" src="<?=$forced['ziel'];?>" scrolling="auto" frameborder="0">
    <?=$frame3;?>
    Nun habt ihr in der Datenbank (Tabelle `vms_noscript_check`) alles was ihr benötigt. Was ihr damit dann macht ist eure Sache. Ich habe es bei mir zum Beispiel so geregelt, das ich je nach Resultat des Checks, den User einstufe.

    Javascript : 2 und Cookies: 2 -> Stufe 1
    Javascript : 2 und Cookies: 1 -> Stufe 1
    Javascript : 1 und Cookies: 2 -> Stufe 2
    Javascript : 1 und Cookies: 1 -> Stufe 3

    Genauso habe ich die Sponsoren in den Interfaces eingestuft. Ein Sponsor, der weder Javascript, noch Cookies benötigt ist Klasse 1, einer der nur Javascript, aber keine Cookies benötigt ist Stufe 2 und ein Sponsor, der sowohl Javascript , als auch Cookies benötigt ist Stufe 3. Die jeweilige Sponsorstufe speichere ich für jede Kampagne zusammen mit den restlichen Daten in der Kampagnentabelle ab. Im Klickbereich werden dann Stufe des Users und die Stufe der Kampagnen abgeglichen und nur Kampagnen angezeigt, die der Stufe des Users entsprechen. Das muß natürlich auch in den Klickdateien geprüft werden.

    Das ganze mal als Ansatz von meiner Seite aus. Auch, wenn es natürlich keine 100%ige Sicherheit ist, läßt sich die Wirksamkeit nicht bestreiten. Die Vergütungsraten (also die Anzahl Klicks die auf der Seite gemacht wurden im Verhältnis zu den klicks, die bei den Sponsoren gewertet wurden) sind mehr als nur sprunghaft angestiegen. Bei manchen Sponsoren bin ich mit dem EIgenverdienst mittlerweile runtergegangen auf 10%.

    Ich hoffe, es kann der eine oder Andere etwas mit damit anfangen. Vielleicht hat ja auch jemand Lust das ganze als Addon zu schnüren oder mit weiteren Optionen etc. zu versehen und in den Downloadbereich zu stellen. Würde mich freuen.

    Gruß
    Marco

    P.S.: Selbst wenn ihr eure Vergütungsraten damit deutlich verbessern könnt, noch ein kleiner Tip: Baut nicht wie wild jetzt wieder Sponsoren ein. Die Sponsoren, die so einen Mist wie Cookies von Drittanbietern verlangen, sind schuld, das solche Massnahmen überhaupt erst nötig werden. Und auch wenn man die meisten mit diesem Script wieder annähnernd nutzen könnte, sollte man vorsichtig damit sein. Denn wenn sich sowas allgemein etabliert, ist das ein Freibrief für die Sponsoren alles Mögliche für die Vergütung eines Bannerklicks zu fordern.

  2. #2
    Erfahrener Benutzer
    Registriert seit
    11.01.2007
    Beiträge
    278
    Was natürlich fehlt, ist eine Auflistung, welcher Sponsor nun was genau benötigt. Damit nun nicht jeder Webmaster jeden SPonsor anschreiben muß, könnte man ja hier eine Liste sammeln.


    JS + Cookies erforderlich
    A3H, AdFlame, Ads-Im-Netz, Alstermarketing, Conegi, DSN-Ads, Geldsponsor, Getearn, Lose4Webmaster, Paid4Vermarktung, Primussponsor, Werbe-Express, Yoomedia

    Nur JS
    HpLose, Webmasterlose, Werbenetzwerk300

    Vergütet auch ohne JS + Cookies
    Adminlose, Affiliwerbung, AdGenie, Ads4Web, Ads4Webbis, Sunny-Ads

    Alles ohne Gewähr und auch noch lange nicht alle Sponsoren. Aber wer einen Sponsor anschreibt, kann ja hier reinposten. Ich schau dann hin und wieder rein und editiere dann diesen Post.

  3. #3
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Zitat Zitat von VMS1 Beitrag anzeigen
    Was natürlich fehlt, ist eine Auflistung, welcher Sponsor nun was genau benötigt. ....
    Jep, das stimmt, denn dann könnten die Webbis Ihren Usern auch konkret sagen, was diese brauchen, um Vergütet zu werden.

    Nur bin ich der Meinung, dass diese Infos jeder Sponsor verständlich und klar zusammengefasst auf seiner Seite bereithalten sollte, bzw. gibt es irgendwas, was seitens der Sponsoren dagegen spricht? Denke nein, außer "Userunfreundlichkeit" oder aber geballtest "Nicht-Wissen" um das verwendete Script, soll ja auch vorkommen
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  4. #4
    Administrator Avatar von Lokutos
    Registriert seit
    29.03.2008
    Beiträge
    3.147
    grndsätzlich kann man mal auch davon ausgehen dasd das Zeus script Javascript + cookys benötigt


    Hier noch die erweiterung
    Ad-im-netz braucht beides
    SwissNetWorX - VMS Hosting / V-Server / Cloud-Server / Hosting

  5. #5
    Erfahrener Benutzer Avatar von SilentRunner
    Registriert seit
    18.08.2006
    Beiträge
    1.076
    Zitat Zitat von jpwfour Beitrag anzeigen
    Jep, das stimmt, denn dann könnten die Webbis Ihren Usern auch konkret sagen, was diese rauchen, um Vergütet zu werden.
    ist das nicht egal was die Webbis rauchen?

  6. #6
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Nuja, den Einen oder Anderen interessiert das vielleicht
    Aber jetzt mit Rauchverbot in Gaststätten etc. muss man da natürlich vorsichtig sein

    Btw: Bei Cookies wäre auch noch interessant, ob nur "normale" Cookies oder das volle Programm mit "Cookies von Drittanbietern".
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  7. #7
    Zitat Zitat von jpwfour Beitrag anzeigen
    Btw: Bei Cookies wäre auch noch interessant, ob nur "normale" Cookies oder das volle Programm mit "Cookies von Drittanbietern".
    Es sind IMMER Cookies von Drittanbietern:

    User = 1st party
    Klickseite (Frameset) = 2nd party
    Sponsor = 3rd party



  8. #8
    Administrator Avatar von Lokutos
    Registriert seit
    29.03.2008
    Beiträge
    3.147
    Zitat Zitat von jpwfour Beitrag anzeigen
    Nuja, den Einen oder Anderen interessiert das vielleicht
    Aber jetzt mit Rauchverbot in Gaststätten etc. muss man da natürlich vorsichtig sein

    Btw: Bei Cookies wäre auch noch interessant, ob nur "normale" Cookies oder das volle Programm mit "Cookies von Drittanbietern".
    naja normale cookies wenn man die nicht an hat kann man nnicht klicken und wen der sponsor ohne vergütet brauch man keine cookies
    und wenn der sponsor welche brauch dan sind dies automatisch Cookies von dritt Anbietern weil du den link vom sponsor im frame hast!

    Also ist da eigentlich egal was der sponsor verlangt.

    Oder hab ich da n Deenkfehler ??

    MFG Lokutos
    SwissNetWorX - VMS Hosting / V-Server / Cloud-Server / Hosting

  9. #9
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    Zitat Zitat von Sebmaster Beitrag anzeigen
    Es sind IMMER Cookies von Drittanbietern:

    User = 1st party
    Klickseite (Frameset) = 2nd party
    Sponsor = 3rd party

    Aber offensichtlich (wurde doch an anderer Stelle schon ausreichend diskutiert) gibt's es auch Werbenetzwerke, die vergüten, obwohl die User "Cookies von Drittanbietern" nicht zulassen, nur deshalb ist diese Info sicherlich sinnvoll?

    Zitat Zitat von Joschi Beitrag anzeigen
    naja normale cookies wenn man die nicht an hat kann man nnicht klicken ...
    Oder hab ich da n Deenkfehler ??

    MFG Lokutos
    Jep, geht nämlich auch OHNE Cookies, das "Klicken"
    btw: was jetzt, lokutos oder joschi?
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  10. #10
    Administrator Avatar von Lokutos
    Registriert seit
    29.03.2008
    Beiträge
    3.147
    Zitat Zitat von jpwfour Beitrag anzeigen
    btw: was jetzt, lokutos oder joschi?
    Hab gremi schon vor n paar tagen angeschrieben das er doch bitte meinen nixk ändern soll hat er nur NOCH nicht getan gg
    SwissNetWorX - VMS Hosting / V-Server / Cloud-Server / Hosting

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. White List für Noscript
    Von blacky123 im Forum [HD] Programmieren
    Antworten: 4
    Letzter Beitrag: 10.04.2010, 18:41
  2. x-noscript-blocked,
    Von jpwfour im Forum Talk, talk, talk...
    Antworten: 2
    Letzter Beitrag: 09.03.2009, 13:41
  3. VMS setzt Cookies falsch?
    Von Thor82 im Forum Support zum VMSone
    Antworten: 10
    Letzter Beitrag: 11.06.2008, 18:18
  4. Noscript addon im FF
    Von didith1207 im Forum [HD] Programmieren
    Antworten: 5
    Letzter Beitrag: 13.02.2008, 16:37

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •