Die Verkehrsquellenfunktion ist in Verkehrsstatistikdiensten verfügbar. Die Verkehrsquelle ist ein Konzept für die Besuchsebene. Mit anderen Worten, wenn der Besuch festgelegt wird, ist die Verkehrsquelle der Zielseite die Verkehrsquelle des Besuchs. Obwohl es viele Arten von Verkehrsquellen gibt, gibt es leider nur zwei Möglichkeiten, die Verkehrsquelle zu erhalten - document.referrer und window.opener. Unglücklicher ist, dass es nicht viele Szenarien gibt, in denen das Fenster geeignet ist, und das Dokument.Referrer ist so schwach, dass es unmöglich ist, die Verkehrsquelle in vielen Szenarien genau zu bestimmen.
Überblick über Dokument.Referrer
In Bezug auf die Nutzung hofft Dokument.Referrer, das Browserverhalten zu verfolgen. Wenn eine Seite A geöffnet wird, umfassen die Aktionen, die im Browser auftreten können, Benutzeroperationen und JS -Code.
Schauen wir uns zunächst die Aktionen an, die Benutzer beim Öffnen von Seite A ausführen können:
| 1 | Geben Sie die Adresse eines direkt in der Adressleiste ein |
| 2 | Klicken Sie mit link auf Link A von Seite B und springen Sie zu Seite A |
| 3 | Klicken Sie mit der rechten Maustaste A von Seite B, um in einem neuen Fenster zu öffnen |
| 4 | Klicken Sie mit der rechten Maustaste auf Link A aus Seite B und öffnen Sie ihn in der neuen Registerkarte |
| 5 | Ziehen Sie den Link A in die Adressleiste ziehen |
| 6 | Ziehen Sie den Link A in die Registerkartenleiste |
| 7 | Verwenden Sie die Vorwärts- und Rückenknöpfe des Browsers |
Beachten Sie, dass sich der Link hier auf das <a> Tag bezieht, aber wenn es ein Ereignis oder ein Ziel gibt, sollte es eine andere Angelegenheit sein.
Mögliche Möglichkeiten, eine Seite von JS zu öffnen:
| 1 | Fenster ändern.location |
| 2 | Verwenden Sie Window.open |
| 3 | Klicken Sie auf Flash |
In den oben genannten Auflistung werden einige Methoden für den Client aufgeführt, um die Seite zu öffnen. Wenn die Server -Umleitungstechnologie verwendet wird, kann Seite A auch den Besuchern vorgestellt werden.
Hier ist ein bestimmter Browser -Test. Wenn die oben genannten Situationen die oben genannten sind, wie kann Dokument.Referrer durchführen:
| Seriennummer | Szene | IE8.0 | Ff3.6 | Ff4.0 | Chrom |
| 1 | Geben Sie die Adresse eines direkt in der Adressleiste ein | "" " | "" " | "" " | "" " |
| 2 | Klicken Sie mit link auf Link A aus Seite B und Seite A Ersetzen Sie Seite B (Ziel = '_ Selbst'). | √ | √ | √ | √ |
| 3 | Linksklick -Link A von Seite B, A öffnet sich in einem neuen Fenster (Ziel = '_ leer') | √ | √ | √ | √ |
| 3 | Klicken Sie mit der rechten Maustaste A von Seite B, um in einem neuen Fenster zu öffnen | √ | √ | √ | "" " |
| 4 | Klicken Sie mit der rechten Maustaste auf Link A aus Seite B und öffnen Sie ihn in der neuen Registerkarte | √ | √ | √ | "" " |
| 5 | Ziehen Sie den Link A mit der Maus in die Adressleiste | / | "" " | "" " | "" " |
| 6 | Maus -Drag -Link A zur Registerkartenleiste | "" " | "" " | "" " | "" " |
| 7 | Verwenden Sie die Vorwärts- und Rückenknöpfe des Browsers | Halten | Halten | Halten | Halten |
| 8 | Ändern Sie die Fenster.Lokation, um Seite A zu öffnen (gleiche Domäne) | "" " | √ | √ | √ |
| 9 | Öffnen Sie die Seite A mit window.open | "" " | √ | √ | √ |
| 10 | Klicken Sie auf Flash, um Seite a zu öffnen | ||||
| 11 | Server umleiten auf Seite a | "" " | "" " | "" " | "" " |
Wob Aus dieser Tabelle können wir dieses Dokument sehen. Referrer kann etwa die Hälfte der Fälle abdecken. Für einige häufiger verwendete Operationen, wie z. B. das Ziehen der Link zur Registerkarte mit der Maus, sich vorwärts und rückwärts usw., kann sie nicht ordnungsgemäß behandelt werden.
Dokumentquelle.Referrer
Wenn der Browser Seite A vom Server anfordert, wird eine HTTP -Anforderung gesendet. Der Header dieser Anfrage hat das Referer -Attribut. Nachdem der Server die Anforderung empfangen hat, kann der Referator im Header extrahieren, um zu bestimmen, auf welcher Seite der Besucher die Anforderung initiierte.
Im Allgemeinen ist der Referator in dem vom Browser gesendeten Header, der bei der Anforderung von a gesendet wird, und wie hoch ist der Wert des Dokuments. Nach Erhalten von Seite A ist das obige Bild ein Header -Anforderungs -Seite A und das Dokument.
Wenn der Header kein Referenz enthält, wird er bei Verwendung von document.referre als leere Zeichenfolge zugewiesen.
Über HTTPS -Anfrage
Wenn Sie auf einer normalen HTTP -Seite auf einen HTTPS -Link klicken, können Sie die Referenteninformationen an den HTTPS -Anforderungsheader anhängen. Sie können dennoch document.referre verwenden, um die normale HTTP -Seite in der HTTPS -Seite zu erhalten.
Wenn Sie auf einer HTTPS -Seite auf einen anderen HTTPS -Link klicken, können Sie die Refererinformationen an den Header der Anforderung anhängen.
Wenn Sie jedoch von einer HTTP -Seite auf den HTTP -Link klicken, kann der gesendete HTTP -Anforderungsheader leider keine Informationen zur HTTP -Seite enthalten, die möglicherweise auf eine Schutzmaßnahme für die HTTP -Seite zurückzuführen sein.
Forged Referer -Informationen
Gemäß der obigen Beschreibung wird Dokument.Referre vom Referer im Header abgeleitet. Wenn Sie dann den Wert von document.referre ändern möchten, müssen Sie den Anforderungsheader nur ändern. Sie können den vorhandenen Referator im Header durch den gewünschten Wert ersetzen. Wenn es ursprünglich nicht verfügbar ist, können Sie den Referator hinzufügen.
Auf der Client -Seite ist man überzeugt, dass man sich mit dem Header manipuliert. Bevor eine HTTP -Anforderung auf einer Seite gesendet wird, können Sie das Paket -Interceptor -Tool zum Abfangen verwenden, dann die Header -Informationen analysieren und das Referen ändern.
Nach der Suche kann Firefox mit dem RefControl-Plug-In problemlos geändert werden. Wie auch immer, das Betrügen der Verkehrsquelle ist ein Kinderspiel.
Seitenkraft Aktualisierung
Kurz nachdem ich das Schreiben fertiggestellt hatte, stellte ich fest, dass ein Weg zum Springen von Seite fehlte, dh die Seite zum Auffrischen im Meta -Tag in der HTML zu zwingen. Zum Beispiel in B.html schreiben
Kopieren Sie den Codecode wie folgt: <meta http-äquiv = "aktualisieren" content = "5; url = a.html">
Nach 5 Sekunden initiiert der Browser dann automatisch eine Seitenanforderung an den Server.
Nach dem Testen in IE8, ff3.6-fff4.0, gibt es keine Referenzinformationen, aber Chrome kann b.html als Verweis auf den Kopfzeile versehentlich hinzufügen.