A função da fonte de tráfego está disponível nos serviços de estatísticas de tráfego. A fonte de tráfego é um conceito para o nível de visita. Em outras palavras, quando a visita é estabelecida, a fonte de tráfego da página de destino é a fonte de tráfego da visita. Embora existam muitos tipos de fonte de tráfego, infelizmente, com base no JS agora, existem apenas duas maneiras de obter a fonte de tráfego - document.Referrer e Window.opener. O mais lamentável é que não há muitos cenários que a janela.
Visão geral do document.Referrer
Em termos de uso, o Document.Referrer espera rastrear o comportamento do navegador. Se uma página A for aberta, as ações que podem ocorrer no navegador incluem operações do usuário e código JS.
Vamos primeiro dar uma olhada nas ações que os usuários podem executar ao abrir a página A:
| 1 | Digite o endereço de um diretamente na barra de endereço |
| 2 | Clique com o link A da página B e pule para a página A |
| 3 | Clique com o botão direito do mouse link A da página B para abrir em uma nova janela |
| 4 | Clique com o botão direito do mouse link A da página B e abra-o na nova guia |
| 5 | Arraste o link A para a barra de endereço |
| 6 | Arraste o link A para a barra de guia |
| 7 | Use os botões de frente e para trás do navegador |
Observe que o link aqui se refere à tag <a>, mas se houver um evento ou destino, deve ser uma questão diferente.
Possíveis maneiras de abrir uma página por JS:
| 1 | Modificar window.Location |
| 2 | Use window.open |
| 3 | Clique em Flash |
O acima lista alguns métodos para o cliente abrir a página. Além disso, se a tecnologia de redirecionamento do servidor for usada, a página A também poderá ser apresentada aos visitantes.
Aqui está um teste específico do navegador. Se as situações acima forem as opções acima, como o document.Referrer se executa:
| Número de série | Cena | Ie8.0 | FF3.6 | FF4.0 | cromo |
| 1 | Digite o endereço de um diretamente na barra de endereço | "" | "" | "" | "" |
| 2 | Clique com o link A da página B e a página A substituir a página B (Target = '_ self') | √ | √ | √ | √ |
| 3 | Clique com o link A da página B, a abre em uma nova janela (Target = '_ Blank') | √ | √ | √ | √ |
| 3 | Clique com o botão direito do mouse link A da página B para abrir em uma nova janela | √ | √ | √ | "" |
| 4 | Clique com o botão direito do mouse link A da página B e abra-o na nova guia | √ | √ | √ | "" |
| 5 | Arraste o link A para a barra de endereço com o mouse | / | "" | "" | "" |
| 6 | Link de arrasto do mouse A para a barra de guia | "" | "" | "" | "" |
| 7 | Use os botões de frente e para trás do navegador | Manter | Manter | Manter | Manter |
| 8 | Modifique o Window.Location para abrir a página A (mesmo domínio) | "" | √ | √ | √ |
| 9 | Abra a página A Using Window.open | "" | √ | √ | √ |
| 10 | Clique em Flash para abrir a página A | ||||
| 11 | Servidor redirecionado para a página a | "" | "" | "" | "" |
Onde "" significa uma sequência vazia, √ significa que a página de origem pode ser julgada corretamente e manter significa que o referenciador que não mudará a página quando a frente e para trás não mudará. A partir desta tabela, podemos ver que o documento.Referrer pode cobrir cerca de metade dos casos. No entanto, para algumas operações mais usadas, como arrastar o link para a barra de guias com o mouse, avançar e para trás, etc., ele não pode ser tratado corretamente.
Fonte do documento.Referrer
Quando o navegador solicita a página A do servidor, ele enviará uma solicitação HTTP. O cabeçalho desta solicitação terá o atributo do referente. Depois que o servidor recebe a solicitação, ele pode extrair o referente no cabeçalho para determinar qual página o visitante iniciou a solicitação.
De um modo geral, qual é o referente no cabeçalho enviado pelo navegador ao solicitar um, então qual é o valor do documento.
Se o cabeçalho não conter o referência, ao usar o Document.Referre, ele será atribuído como uma string vazia.
Sobre a solicitação HTTPS
Se você clicar em um link HTTPS em uma página HTTP normal, poderá anexar as informações do referente ao cabeçalho da solicitação HTTPS e ainda poderá usar o Document.Referre para obter a página HTTP normal na página HTTPS.
Da mesma forma, se você clicar em outro link HTTPS em uma página HTTPS, poderá anexar as informações do referente ao cabeçalho da solicitação.
No entanto, se você clicar no link HTTP de uma página HTTP, infelizmente, o cabeçalho de solicitação HTTP enviado não poderá conter informações sobre a página HTTP, que pode ser devida a uma medida de proteção para a página HTTP.
Informações do referente forjado
De acordo com a descrição acima, o documento.Referre é derivado do referente no cabeçalho. Então, se você deseja modificar o valor do documento.Referre, teoricamente, você só precisa modificar o cabeçalho da solicitação. Você pode substituir o referente existente no cabeçalho pelo valor desejado. Se não estiver disponível originalmente, você pode adicionar o referente.
No lado do cliente, adulterar o cabeçalho é uma coisa muito fácil. Antes que uma solicitação HTTP em uma página seja enviada, você pode usar a ferramenta de interceptores de pacotes para interceptá -la e analisar as informações do cabeçalho e modificar o referência.
Após a pesquisa, o Firefox pode ser facilmente modificado usando o plug-in refControl. De qualquer forma, trapacear na fonte de tráfego é uma brisa.
Atualização da força da página
Logo depois que terminei de escrever, descobri que estava faltando uma maneira de pular a página, ou seja, para forçar a página a ser especificada na metatag no HTML para atualizar. Por exemplo, escreva em B.html
Copie o código do código da seguinte forma: <meta http-equiv = "refresh" content = "5; url = a.html">
Depois de 5 segundos, o navegador iniciará automaticamente uma solicitação de página ao servidor.
Após o teste, no IE8, FF3.6-FF4.0, não haverá informações do referente, mas o Chrome pode adicionar B.Html como um referente ao cabeçalho por engano.