Aufrufart des Besuchers feststellen

djjlx

---???---
ID: 62937
L
9 Mai 2006
599
21
Hallo zusammen!

Gibt es eine Möglichkeit die Aufrufart eines Besuchers festzustellen, besonders ob die Seite als Bild aufgerufen wird oder korrekt über den Browser!
zb.
HTML:
<a href='view.php'><img href='click.php'></a>

Dadurch wird ja der PHP Code in der "click.php" durchlaufen und man hat einen Besucher auf der Seite. Der was die Seite aber nie gesehen hat.

Hat jemand eine Idee?

Gruss
djjlx
 
Die click.php wurde auch korrekt über den Browser aufgerufen, du hast da irgendwie ein Denkfehler, wie HTTP und oder PHP funktioniert. Jeder Aufruf findet über das HTTP-Protokoll "wie ein Browser" statt. Du hast also keine Ahnung ob die Seite als Bild eingebunden wurde oder direkt aufgerufen wurde, falls du das meint.
 
Also der PHP-Code wird nur durchlaufen, wenn click.php als src-Attribut gesetzt wird:

HTML:
<a href='view.php'><img src='click.php'></a>

Anschließend kann dann zum Beispiel in der click.php der Referer über $_SERVER['HTTP_REFERER'] ausgelesen werden. Damit weißt Du zumindest von welcher Seite aus der Aufruf erfolgt ist.

Oder Du verwendest einen GET-Parameter um den Aufruf zu markieren:

HTML:
<a href='view.php'><img src='click.php?img=1'></a>

Ausgelesen wird der Parameter dann in der Datei click.php über $_GET['img'].
 
Damit weißt Du zumindest von welcher Seite aus der Aufruf erfolgt ist.
Sagt wer? :roll: Der HTTP-Referrer kann beliebig manipuliert werden. Was da drin steht, kannst du dich nicht drauf verlassen
Oder Du verwendest einen GET-Parameter um den Aufruf zu markieren:
Bringt auch nix :ugly: Wer sagt denn, dass man nicht die URL anderweitig aufruft?

Ein HTTP-Request ist ein HTTP-Request. Ob der jetzt durch das Laden eines Bildes, das Abtippen oder Copy&Pasten der URL in die Adresszeile, einen "AJAX"-Request von einem Greasemonkey-Script oder einen cURL-Aufruf von einem meiner Bots gemacht wurde, ... kannst du nicht wissen. Egal, wie du dich anstellst.

Du weißt nur:

  • jemand hat die Resource "/pfad/click.php" angefordert
  • du als PHP-Script musst sie nun ausliefern
 
Das ist natürlich alles richtig @theHacker. Aber ich denke der Threadersteller möchte einfach die Aufrufe der Datei zählen und der normale Standard-Nutzer wird wohl kaum den HTTP-Referer manipulieren und irgendwelche Parameter in der Adresszeile ändern. Von daher denke ich, dass man mit der Lösung schon vernünftige Daten sammeln kann. Man kann ja zudem noch Mehrfach-Aufrufe und Bot-Traffic aussortieren.

Wie Du schon sagtest, eine 100-prozentige Lösung gibt es ohnehin nicht. Warum also nicht zumindest die 99-Prozent-Lösung nehmen? ;)
 
... Man kann ja zudem noch Mehrfach-Aufrufe und Bot-Traffic aussortieren...

Wie sortiert man denn sowas aus ?
Da bin ich jetzt echt mal gespannt drauf


@djjlx:

Wie eine Seite aufgerufen wird, kannst du nicht herausfinden ( bzw. womit der Aufruf erfolgt ), nur das eine GET Anfrage per HTTP erfolgte, oder POST oder HEAD. Dazu kannst du gern mal hier nachlesen:

https://www.w3.org/Protocols/rfc2616/rfc2616.html


Interessant ist es, wenn Du eine tolle Seite hast die gut frequntiert ist, mal Logs zu sammeln und diese dann mal auszuwerten. Da siehst Du Dinge, wovon Du vorher nichts wusstest, vor allem, was auf Deinem Webspace so alles zu finden sein soll ...
 
Ich glaube, es wäre wichtig zu wissen, was Du konkret erreichen willst.

Mit ein wenig Aufwand könnte man schon den Browsertraffic vom "Bildtraffic" unterscheiden. Wenn die Seite über den Browser aufgerufen wird, werden vermutlich im nächsten Zuge auch sämtliche in der Seite vorhandenen Assets (Bilder / CSS / JS) abgerufen. Beim Einbinden über das img-Tag passiert das in aller Regel nicht...
 
Wie sortiert man denn sowas aus ?
Da bin ich jetzt echt mal gespannt drauf

Am einfachsten wohl über die IP-Adresse oder per Session.
Bots können über die robots.txt ausgesperrt werde. (Ja ich weiß, nicht alle halten sich daran)

Ne, aber den Referrer wegen Sicherheitsbedenken deaktivieren - was einer Manipulation gleichkommt und somit dein Verfahren nutzlos macht ;)

Wie gesagt wenn ich damit 99% aller Aufrufe auswerten kann, ist das doch immer noch besser als 0% oder? Nur weil mir bei einigen Aufrufen der Referer fehlt, ist das Verfahren ja nicht nutzlos.

Bei allen wichtigen Browsern ist der Refer standardmäßig an und der "Otto-Normal-User" wird diese Einstellung wohl nie ändern.
 
Per Session gehts natürlich auch:

PHP:
session_start();
$_SESSION['aufrufart'] = "bild";

In der click.php dann einfach:

PHP:
session_start();
if(isset($_SESSION['aufrufart'])){
	$aufrufart = $_SESSION['aufrufart'];
	unset($_SESSION['aufrufart']);
	// $ aufrufart in Datenbank schreiben oder ähnliches
}

und den Wert in eine Datenbank schreiben oder ähnliches.

So kann man auch die Aufrufseite loggen und ist nicht auf den HTTP-Referer angewiesen.
 
Du könntest höchstens tracken, ob click.php direkt oder indirekt aufgerufen wird.
Wie das gemeint ist, wirst Du wohl selbst herausfinden können.

@tleilax:

Nur wenn das Element-Tag nicht ausgewertet oder interpretiert wird (quasi kein neuer Header gesendet wird mit Anfrage auf das entsprechende Element). Aber das weißt Du ja :)
 
Zuletzt bearbeitet:
Hallo!

Danke für die ganzen Inputs!

Grundsätzlich geht es darum "Faker" auf die schliche zu kommen bzw. das Leben zu erschweren. Wenn jemand denn Ref-Banner eben umdreht hat er automatisch einen Linkaufruf was aber tatsächlich nicht der Fall ist. Das ganz dann in eine entsprechende Werbeform bei unseriöseren Werbenetzwerken und man generiert schon massenhaft Aufrufe. Dies würde ich gerne bekämpfen.

Das heißt grundlegent kann ich nur die Logs auswerten und eindeutig Referrer sperren. Um einen kleinen Schritt in diese Richtung zu machen oder?

Lg
djjlx
 
Nein.

Meistens geht man falsch an die Dinge heran. Probiers doch mal so herum.
Du bist jemand,der eine Klickseite gefunden hat. Du willst wissen, ob Du schnelle Klicks generieren kannst, die auch vergütet werden.
Was probierst Du alles aus ?
Und dann musst die Rolle des "Hacker" | "Buguser" | was auch immer einnehmen und probieren Dein System zu durchdringen. Allerdings darfst Du nicht gleichzeitig daran denken, hehe so werde ich dem her. Und programmierst gleich was dagegen.
Sorgfälltige Planung, Durchführung und Tests sind 90% der Miete. Fehlersuche minimieren das Ganze vll. nochmal umeinige Prozente.
100% Sicherheit gibt es nicht, schon allein weil Du Software nutzt, die DU nicht geschrieben hast, und gesetzmäßig enthalten x LoC y Fehler (unumstöslich weil vieles Denkfehler sind und nicht abgefangene Fehler) - oder aber du bietest keinen solchen Service an ;) - was nicht Dein Wille ist.

Mach Dich schlau, welche möglichen Angriffsszenarien jemand haben kann, wo alles schwachstellen sind.
Dann kannst Du zu 99% Sicherheit haben.
1 % Fehler liegen in der nichtbearbeitung der Pakte Deines Hosters, der jedes Paket ungefiltert auf Deine IP weitergibt. Leider ...

So viel Spaß bei der Arbeit ;)

PS: ich sage nicht, es ist unmöglich, aber man muss Arbeit dahinein investieren und viel Zeit beim Lesen von hilfreichen Informationen! Dann wirst Du eines Tages glücklicher Anbieter Deines Services sein