Como posso obter o Apache para registrar todas as solicitações da mesma visita com o mesmo ID?

2

Por quê? No momento, estou comprando tráfego do Google AdWords para o meu site de comércio eletrônico. No Google AdWords, posso ver quantas visitas eu comprei e estou tentando verificar o número de visitas ao meu site analisando o access_log do Apache.

Note que eu tenho o Mixpanel instalado e está reportando um número muito menor.

Então eu tentei instalar o mod_unique_id do Apache. Eu adicionei ao meu access_log e tentei visitar a primeira página do meu site (uma página wordpress). Este é o log:

W2P5AswfRANRW1uZBgVINAAAAAA 50.74.231.163 - - [03/Aug/2018:06:41:06 +0000] "GET / HTTP/1.1" 200 15571
W2P5A8wfRANRW1uZBgVINQAAAAE 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/plugins/LayerSlider/static/layerslider/css/layerslider.css?ver=6.7.1 HTTP/1.1" 200 3876
W2P5A8wfRANRW1uZBgVINgAAAAM 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.0.1 HTTP/1.1" 200 656
W2P5A8wfRANRW1uZBgVINwAAADw 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/css/magnific-popup.css?ver=4.9.5 HTTP/1.1" 200 1816
W2P5A8wfRANRW1uZBgVIOAAAADI 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/css/animate.css?ver=4.9.5 HTTP/1.1" 200 4348
W2P5A8wfRANRW1uZBgVIOQAAACY 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/css/theme-style.css?ver=4.9.5 HTTP/1.1" 200 3035
W2P5A8wfRANRW1uZBgVIOgAAABI 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/themes/themextend/style.css?ver=4.9.5 HTTP/1.1" 200 2136
W2P5A8wfRANRW1uZBgVIOwAAACQ 50.74.231.163 - - [03/Aug/2018:06:41:07 +0000] "GET /wp-content/plugins/kingcomposer/includes/frontend/vendors/owl-carousel/owl.theme.css?ver=2.6.17 HTTP/1.1" 200 658
W2P5BMwfRANRW1uZBgVIPAAAADE 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/plugins/kingcomposer/includes/frontend/vendors/owl-carousel/owl.carousel.css?ver=2.6.17 HTTP/1.1" 200 528
W2P5BMwfRANRW1uZBgVIPQAAACU 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/slick.css?ver=4.9.5 HTTP/1.1" 200 557
W2P5BMwfRANRW1uZBgVIPgAAAC0 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/owl.carousel.min.css?ver=4.9.5 HTTP/1.1" 200 912
W2P5BJARzZ5ERwnzv6rD5gAAAIs 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/meanmenu.min.css?ver=4.9.5 HTTP/1.1" 200 682
W2P5BNIyikkB8rhsjsyUkQAAAMw 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/theme-default.css?ver=4.9.5 HTTP/1.1" 200 2643
W2P5BISOELTKgpmuElDYuQAAAEI 50.74.231.163 - - [03/Aug/2018:06:41:08 +0000] "GET /wp-content/themes/themextend/css/blog-post.css?ver=4.9.5 HTTP/1.1" 200 4773

Como você pode ver:

  1. Tudo incluído de cima é 1 visita
  2. mod_unique_id gera um ID exclusivo para cada solicitação da web. O html da minha página inicial inclui > 30 ativos, como CSS e imagens hospedadas localmente.
  3. O registro de data e hora de cada solicitação acima pode ser diferente.
  4. Pode haver várias visitas acontecendo simultaneamente (o IP será diferente)

Como posso configurar o Apache para permitir que eu conte cada visita ao meu site corretamente?

    
por Sparrowcide 03.08.2018 / 08:54

2 respostas

3

Com acompanhamento no lado do cliente, cookies e outros. Lembre-se de que a maioria dos endereços IPv4 está atrás do NAT, portanto, pode haver vários usuários por endereço.

Uma implementação para o httpd é mod_usertrack .

Se você estiver no Google, poderá obter o Google Analytics junto com seus anúncios .

    
por 03.08.2018 / 09:54
1

O seguinte é um trecho de código PHP que eu escrevi que define um cookie com um valor aleatório, sobrescrevendo o cookie se ele já estiver definido. Você pode anexá-lo ao início (ou fim) de cada página que você gostaria de contar como uma visita individual (que lhe dá uma extensão .php ).

<?php
    /*
     * generateRandomString() is used to generate the ID, taken from 
     * https://stackoverflow.com/questions/4356289/php-random-string-generator/4356295#4356295
     */
    function generateRandomString($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
             $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }

// Will generate an ID 12 characters long.
    setcookie("visit", generateRandomString(12));
?>

Em seguida, insira %{visit}C na entrada LogFormat no lugar do ID que mod_unique_id estava gerando. Isso funciona configurando um cookie com o ID toda vez que um cliente visita uma página real, e esse cookie aparecerá no log no lugar de %{visit}C a cada visita. Quando eu estava escrevendo esta resposta, eu usaria uma variável de sessão do PHP , mas não consegui descobrir uma maneira de incluir isso em um arquivo de log do Apache.

Esta é uma solução mais simples que escrevi antes de criar o script PHP e não queria excluir. Esta solução não responde à sua pergunta com a mesma precisão que a outra, mas você (ou outra pessoa que leia isso) ainda pode achá-la útil.

Você pode registrar as solicitações de recursos em outro log, para que o log principal tenha apenas visitas de páginas (e robôs). O código a seguir verifica se o URL simplesmente contém .css ou .jpg (adicione ou remova suas próprias extensões conforme necessário) na seção VirtualHost da configuração do site:

SetEnvIf Request_URI /.css/ assets
SetEnvIf Request_URI /.jpg/ assets

Para gravar "visitas", anexe env=!assets ao seu CustomLog entry: CustomLog /path/to/visit/log <logformat identifier> env=!assets

Para gravar recursos, conforme indicado pela lista: CustomLog /path/to/asset/log <logformat identifier> env=assets

    
por 03.08.2018 / 10:04