3 Stimmen

Identifizierung von nutzerinitiierten Webanfragen

Nur durch das Betrachten eines TCP-Captures einer vollständigen HTTP-Web-Browsing-Sitzung, wäre es möglich, zwischen Web-Anfragen zu unterscheiden, die vom Benutzer initiiert wurden (entweder durch Klicken auf einen Link oder durch Eingabe der URL in die Adressleiste) und Web-Anfragen, die (vom Browser) als Ergebnis von Webseitenobjekten (Bilder, Iframes, Ajax, usw.) gesendet wurden.

Der Referer-Header erfüllt nicht die Anforderung, da sein Wert sowohl bei einem vom Benutzer initiierten Klick auf einen Link als auch bei einer Browser-Anfrage nach einem Webseitenobjekt auf derselben Seite gleich wäre.

1voto

Martin Punkte 35108

Es gibt keine einfache Lösung dafür, und ich bezweifle, dass dies zuverlässig möglich ist, aber hier sind einige Tipps, wie Sie die Daten in mehreren Schritten filtern können:

  1. Keep-Alive: HTTP ermöglicht mehrere aufeinanderfolgende Anfragen über dieselbe TCP-Verbindung (sofern keepalive unterstützt wird). Es ist wahrscheinlich sicher anzunehmen, dass nur die erste Anfrage über eine TCP-Verbindung vom Benutzer initiiert wurde, während die anderen für Bilder/Scripts im Zusammenhang mit dieser Seite sein sollten. Dies sollte die Anzahl der Anfragen, die Sie weiter analysieren müssen, erheblich reduzieren.

  2. Content-Type: Wenn Sie davon ausgehen können, dass nur HTML durch benutzerinitiierte Anfragen heruntergeladen wurde, könnten Sie alles filtern, bei dem die Antwort nicht mit einem bestimmten Content-Type übereinstimmt (z. B. text/html).

  3. Antwortkörper: Sie haben jetzt nur noch HTML-Antworten übrig, aber wenn Sie sich die Anforderungs-/Antwortheader ansehen, ist es nahezu unmöglich, eine iframe-Anfrage von einem angeklickten Link zu unterscheiden, da Referer in beiden Fällen gleich sein wird (obwohl die meisten iframe-Downloads wahrscheinlich bereits im Schritt 1 herausgefiltert wurden). Um dies weiter zu verfeinern, müssten Sie jede HTML-Antwort parsen und nach jedem oder <code><link rel="prefetch"</code> suchen, das einen HTML-Download verursachen könnte, der nicht vom Benutzer initiiert wurde, und dann Anfragen filtern, die für diese Ressourcen gemacht wurden.</p></li> </ol> <p>All dies ergibt keine perfekte Analyse, aber es könnte für Ihre Zwecke ausreichen. Beispielsweise wäre es wahrscheinlich unmöglich, Anfragen von einem <code><meta></code> refresh zu erkennen.</p></x-turndown>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X