Hallo
Hier mein Code zum absichern eines Besuchertauschers gegen Framebrecher und gegen hängenbleiben. (Test auf Hängenbleiben nur in Version 1)
Bitte beachten: Ich habe es lokal getestet, habe aber keine Seite wo ich es online testen kann.
Weitere Infos unten.
Das Script:
1. Version mit Popup.
1. StartBT.htm (Diese Seite im Browser laden)
Öffne diese Datei im Brower um das Script zu starten. In einem echten BT müsste der Code auf der Seite eingebaut werden, von der aus man BT aufruft.
Will man den direkten Aufruf des BT erlauben (z.B. aus den Lesezeichen), so muss man eine Startseite machen, die per JavaScript den BT nach Aufruf startet. (Punkt 6)
2. Frameset.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Besuchertausch starten</title> <script type="text/javascript"> function StartBT () { window.open("Kontroll_Popup.htm", "Framebrecher Meldung", "width=10, height=10"); } </script> </head> <body;> </body> Besuchertausch <a href="" onClick="StartBT();">Starten</a> </html>
Das Frameset. In einem echten Besuchertauscher wäre das das Dokument welches sich hinter der SurfURL verbirgt.
Es lädt einen oberen Frame (Vergütungsframe) und einen unteren (Werbung).
3. Vergütung.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title>Frameset</title> <frameset rows="300,*"> <frame src="Vergütung.htm" name="ab"> <frame src="ad.htm" name="werbung"> </frameset> </head> <body> ... </body> </html>
Der Vergütungsframe. Hier einfach nur ein Dokument ohne jede Funktion.
4. Ad.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Vergütungsframe</title> </head> <body> Ich bin der Vergütungsframe </body> </html>
Der Framebrecher. Er wird im unteren Frame des Frameset geladen.
5. Kontroll_Popup.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Framebrecher</title> <script type="text/javascript"> if (top != self) { top.location = self.location; } </script> </head> <body bgcolor="#000000" text="#FFFFFF"> <h1>Framebrecher</h1> </body> </html>
Dieses Popup enthält den Framebrecher test und den Test ob der BT gestoppt hat. Verweilt der BT länger als 200 Sekunden auf der selben WerbeKampange, so lädt er erneut.
6. AutoStartBT.htm (Diese Datei im Browser laden oder StartBT.htm)Code:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Kontroll Popup</title> <script type="text/javascript"> //Variablen //Austauschen gegen SurfURL des Besuchertauschers var FramesetURL="Frameset.htm"; //---------------------------------------------------- var Counter; var wegcount; var win; var Restartcount=0; var StopCount; var MaxCount=200; var Wo1=0; var Wo2; var X; var Y; var Z; //Start des Scriptes function start() { //URL bestimmen X = self.location.href; // von self.location.href den eigenen Dateinamen abschneiden // weil "Kontroll_Popup.htm" 18 Zeichen hat hier: -18 Z = X.length - 18; Y = X.substring(0, Z) + FramesetURL; //Start win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1"); Counter=setInterval("Wachen()", 1000); wegcount=setInterval("Restart()", 1000); } //Restart bei Popup close function Restart() { Restartcount++; if (Restartcount > 5) { win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1"); } } //Überwachung function Wachen() { //Framebrechertest if (win.location != Y) { win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1"); StopCount=0; } Restartcount=0; //Stopper Test Wo2=win.frames[1].location; if (Wo1==Wo2) { StopCount++; } else { Wo1=Wo2; StopCount=0; } if (StopCount>MaxCount) { win = window.open(FramesetURL, "Besuchertausch", "width=800,height=600, status=1"); StopCount=0; } } function stop() { win.close(); self.close(); } </script> </head> <body onload= start();> Wächter <a href="" onClick="{stop(); return false;}">Beenden</a> </body> </html>
Startet bei Aufruf automatisch den Besuchertausch.
Infos:Code:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Besuchertausch automatsich starten</title> <script type="text/javascript"> function StartBT() { window.open("Kontroll_Popup.htm", "Framebrecher Meldung", "width=10, height=10"); } </script> </head> <body onload="StartBT()";> </body> </html>
JavaScript muss aktiviert sein.
Das Kontroll_Popup muss geöffnet bleiben. Wird es beendet läuft der Besuchertausch zwar weiter, aber die Überwachung wird beendet.
Das Script enthält einen einfachen Wiederaufruf des BT nach Erkennung eines Framebrechers oder Countdownstoppers, könnte aber natürlich nach Erkennung eines Framebrechers, oder Countdown Stoppers auch eine Meldeseite aufrufen. Diese Meldeseite müste dann nach Annahme der Meldung selber zum BT zurückleiten.
Countdownstopper werden erkannt, indem überprüft wird ob sich die angezeigte Kampange geändert hat. Ändert sich die angezeigte Kampange für X Sekunden (hier 200 Sekunden) lang nicht, so wird das als Countdown Stopp gewertet. (Diese Funktion habe nicht getestet).
Wenn das Besuchertausch Popup geschlossen wird, so startet das Kontroll_Popup nach ca. 5 Sekunden den Besuchertausch in einem neuen Popup.
2. Version ohne Popup
Scheint nur mit FF 1.5 zu funktionieren.
1. Frameset.htm (Diese Datei im Browser laden)
Das Frameset.
2. Ad.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title>Frameset Test</title> <script type="text/javascript"> function FBMeldung() { top.location="melden.htm"; } </script> <frameset rows="30,*"; onunload="FBMeldung()"> <frame src="abuse.htm" name="ab"> <frame src="ad.htm" name="werbung"> </frameset> </head> <body> </body> </html>
Der Framebrecher
3. Abuse.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Framebrecher</title> <script type="text/javascript"> if (top != self) { top.location = self.location; } </script> </head> <body bgcolor="#000000" text="#FFFFFF"> <h1>Framebrecher</h1> </body> </html>
Der Vergütungsframe. Hier eine html Datei ohne funktion.
4. Melden.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Vergütungsframe</title> </head> <body> </body> </html>
Die Seite wird bei Framebrecher Erkennung aufgerufen und schickt den Browser nach 5 Sekunden zurück zum Frameset.
Da das Frameset auch nach einem vom User ausgelösten Reload diese Meldeseite aufruft, könnte an hier vielleicht auch einen Button oder Link einbauen, der die Meldung bei Klick rückgängig macht.
So würde die Kampange nicht zwangsläufig gemeldet werden nur weil ein User mal ausversehen die Seite reloadet.
Diese Art der Framebrecher Erkennung werden einige vielleicht aus einigen Besuchertauschern kennen. Eben weil ich sowas schon mal gesehn hatte wusste ich, dass es irgendie geht oder zumindest mal ging.Code:<html><head><title>Test</title> <script type="text/javascript"> function Go() { self.location="Frameset.htm"; } setTimeout("Go()", 5000); </script> </head> <body bgcolor="#BACBDE"> Meldung. Weiter in 5 Sekunden </body> </html>
Leider scheint sie (zumindest auf meinem System) nur im FF 1.5 zu funktionieren.
3. Version mit Restart Popup.
1. Frameset.htm (Diese Datei im Browser laden)
Das Frameset. Hier ist auch die Erkennung eingebaut.
2. Abuse.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title>Frameset Test</title> <script type="text/javascript"> var win; function FBMeldung() { win = window.open("Popup.htm", "Besuchertausch", "width=800,height=600, status=1"); } </script> <frameset rows="30,*"; onunload="FBMeldung()";> <frame src="abuse.htm" name="ab"> <frame src="http://www.gmx.de" name="werbung"> </frameset> </head> <body> </body> </html>
Der Vergütungsframe. Hier ein Dokument ohne Funktion
3. Ad.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Vergütungsframe</title> </head> <body> </body> </html>
Der Framebrecher
4. Melden.htmCode:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Framebrecher</title> <script type="text/javascript"> if (top != self) { top.location = self.location; } </script> </head> <body bgcolor="#000000" text="#FFFFFF"> <h1>Framebrecher</h1> </body> </html>
Die Meldeseite. Sie wird bei einem Framebrecherfund im selben Fentser aufgerufen, in dem der Besuchertausch läuft und schickt das Gebrochene Fenster nach 5 Sekunden in den BT zurück. Die Seite kann aber auch im Popup geladen werden.
5. Popup.htmCode:<html><head><title>Test</title> <script type="text/javascript"> function Go() { top.location.href="Frameset.htm"; //Wenn Die Seite im Popup geladen wird dann //top.location.href=... ändern in //opener.location.href=... } setTimeout("Go()", 5000); </script> </head> <body bgcolor="#BACBDE"> Meldung. Weiter in 5 Sekunden </body> </html>
Das Popup. Es entscheidet bei einer Framebrecher ähnliche aktivität, ob es wirklich ein Framebrecher war, oder ob der User den Besuchertauscher geschlossen hat.
Erkennt es einen Framebrecher, so schliesst es sich und lädt im gebrochenen Fenster die Meldeseite.
Das Frameset öffnet bei einem Framebrecherfund, bzw wenn es verlassen wird das Popup. Das Popup prüft ob es wirklich ein Framebrecher war oder ob der User den Besuchertausch nur geschlossen hat. Es beendet sich aber dann sofort nach dem laden.Code:<html><head><title>Popup</title> <script type="text/javascript"> function Close() { //Schliesst das Popup var x; x=opener; if (x) { //Framebrecher muss gemeldest werden opener.location.href="Melden.htm"; self.close(); } else { //User hat den Besuchertausch geschlossen self.close(); } } </script> </head> <body bgcolor="#BACBDE" onload="Close()";> </body> </html>
Erkennt es einen Framebrecher, so lädt es im Fenster welches gebrochen wurde die Meldeseite, welche nach 5 Sekunden in den Besuchertausch zurückleitet.




 
			
			 
					
						 
					
						 
					
					
					
						 Zitieren
  Zitieren