Navegação privada e o impacto nas estatísticas do Google Analytics

Hoje estava dando uma geral no Google Analytics (GA), vendo as estatísticas de acesso e percebi que um dos meus sites não possuía nenhum acesso registrado. Na dúvida verifiquei se o código de rastreamento do google estava no cabeçalho… e estava. Como tenho acesso aos logs do servidor, fui confirmar se não houve nenhum acesso, e realmente haviam acessos realizados esta semana. Com a pulga atrás da orelha, comecei a comparar alguns indicadores entre o GA e os logs do Apache (servidor web) e percebi que o GA sempre está com os totalizadores menores que os contabilizados pelos logs.

Meu primeiro chute, e não deixa de ser válida, é que o GA não consegue processar todas as requisições das centenas de milhares de sites que utilizam ele. Depois comecei a me lembrar de várias opções que os usuários têm de bloquear o rastramento do GA.. uma delas é um Addon oferecido pelo próprio Google (GA OptOut) disponível para vários navegadores e que impede que os sites que usam o GA coletem dados do usuário/navegador. Usuários de Firefox/Chrome/etc que suportam plugins, também  podem ter optado por desabilitar o GA usando as extensões AdBlock que possui uma subscrição específica para filtros de rastreamento (e.g EasyPrivacy).

E hoje me deparei com um artigo no Meio Bit falando de uma nova extensão para o Chorme chamada Disconnect que permite o bloqueio do rastreamento das redes sociais Digg, Facebook, Google, Twitter e Yahoo.

Revista info: 13 integrações bloqueadas

Acho importante frisar que esses bloqueios permitem uma navegação mais privada. Quando um site está usando estes serviços ou está integrado a uma rede social, ele estará permitindo que sejam coletadas diversas informações e até mesmo validando seus usuários por meio de cookies ou sessões previamente abertas em seus servidores. Ou seja, cada serviço/rede social poderá traçar um perfil de uso/tendência ou preferências dos seus usuários; o que acessam, em que momento, de onde acessam.

Mas voltando as estatísticas, tenho um site e quero saber quantas pessoas acessaram ele! bem, eu recomendo também o uso de ferramentas que analisam diretamente os logs do servidor como o AWStats. Não tem erro, se um navegador requisitou alguma coisa e o servidor web entregou, foi gerado um log da operação (salvo problemas de configuração do web server ou disco cheio :) .

Analisador de logs AWStats

A quantidade de informação com certeza é bem menor que a oferecida pelo GA (Esqueça informações como resolução da tela, se tem ou não flash/java instalado.. essas coisas), mas o importante estará lá: quantas pessoas acessaram, de onde vieram, para onde foram, qual o tipo de navegador, etc.

Nada impede de você usar as duas opções (GA / Logs do servidor). Os logs são gerados de qualquer jeito e é bem provável que você já tenha os logs de acesso ao seu site dos últimos dias… é só processá-las com o awstats e terá novos indicadores!

Como nem todo mundo tem acesso aos logs dos servidores, algumas empresas de hosting oferecem ferramentas próprias ou pré-configuradas para acessar os logs. O Dreamhost por exemplo oferece o Analog. Se você não tem acesso ao servidor (shell) para instalar o awstats, veja com seu hosting como poderá acessar as estatísticas geradas pelo web server.

E pra resumir a história é por isso que nem sempre temos os mesmos indicadores no Google Analytics e nas ferramentas de análise de logs..os usuários de ferramentas de privacidade não são contados no GA. ;)

Compressão de dados em transmissão HTTP

Recentemente efetuei alguns testes com o mod_deflate, um módulo que vem em conjunto com apache 2.0 que efetua a compressão de dados (html, xml, etc) antes de enviá-los ao browser. Fiquei satisfeito com o funcionamento e gostaria de compartilha-lo.

No primeiro exemplo que efetuei, o site do De-Grátis que tem seu tamanho avaliado (pelas propriedades do FireFox) em 3.81KB (3901 bytes) passou para 1.37KB (1407 bytes) – ou seja, a transferência foi reduzida em aproximadamente 64%. Já no segundo teste, utilizei o site do GSI Soluções que passou de 11.31KB (11579 bytes) para 2.94KB (3009 bytes), ou seja 25% do tamanho original (economia de banda de 75%).

Qualquer ganho entre 50% e 80% justifica a instalação de uma solução dessas, só deve ser avaliado o custo/benefício em relação ao uso de rede e cpu. a Tabela abaixo pode auxiliar na configuração:

  Falta em tempo de CPU Abundância em tempo de CPU
Falta de largura de banda Compressão mínima Compressão máxima
Abundância em largura de banda Sem compressão Compressão mínima

Abaixo existem algumas referências que utilizei para chegar ao meu objetivo. De qualquer forma, listo a configuração que utilizei:

No arquivo /etc/httpd/conf.d/httpd.conf logo abaixo da seção <IfModule mod_mime_magic.c>:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE


# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html


# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip


# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html


# Don't compress these extensions
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary


# Configurando o nível de compressão
DeflateCompressionLevel 9
DeflateBufferSize 8192


# Logando o trabalho do mod_deflate
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
</IfModule>

No exemplo acima, é habilitado a compressão usando o módulo deflate. As linhas BrowserMatch tem por finalidade configurar a compactação de acordo com o browser que acessa. Na primeira linha, tratamos o browser Netscape Navigator 4.x que só permite compressão de tipos text/html. Já as versões 4.0.6, 4.0.7 e 4.0.8 possuem problemas na descompressão de htmls, e nesse caso (segunda linha) desabilitamos a compactação para não haver problemas. Na última linha BrowserMatch é efetuada uma correção dos browsers Internet Explorer que identificam-se como “Mozilla/4″ mas trabalha corretamente com compressão de dados, e neste caso é liberada a compressão.

As três linhas a seguir (SetEnvIfNoCase) informam para não compactar arquivos do tipo gif, jpeg, jpg, png, ico, exe, tgz, gz, zip, bz2 e pdf.

Em seguida é definido o nível de compressão que será aplicado no arquivo ( DeflateCompressionLevel 9) e o tamanho do buffer de compressão para cada iteração da zlib (DeflateBufferSize 8192).

Por fim, as linhas DeflateFilterNote colocam uma “nota” que será utilizada no momento de logging. Neste caso registrei as três possibilidades (Input, Output e Ratio) mas só utilizo a última, que é a porgentagem de compressão.

Como eu utilizo os logs no modo combined, alterei a linha de formatação adicionando o tamanho do arquivo original (%b) e o percentual de compactação do arquivo (mod_deflate: %{ratio}n pct.). Segue abaixo as linhas referentes ao logging:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %b mod_deflate: %{ratio}n pct." combined
CustomLog /var/log/apache/gsibr.com-access_log combined

Com isso pode-se escrever um script, para tirar a média de economia de banda feita com esse software. Acho que é isso… qualquer dúvida não relacionada aqui, consulte as referências recomendadas, ou me envie um e-mail.

<update>
Uma recomendação realizada pelo caio1982 no br-linux foi incluir alguma referência ao mod_gzip para os administradores que utilizam o Apache 1.3.x. Este módulo também permite a compressão de tráfego HTTP. Um bom artigo para a instalação configuração do mod_gzip foi escrito pelo Fábio Nunes no Viva o Linux.
</update>

Referências:

Tutorial: Instalando o Apache e PHP com suporte ao MapServer e MapLab em ambiente Windows

Introdução

Este documento apresentará de forma fácil e rápida a instalação do ambiente necessário para o uso do MapLab em uma máquina com Windows XP. O objetivo não é abordar a compilação dos pacotes, ou mesmo o uso do software MapServer/MapLab, e sim apenas descrever os passos realizados para instalar esses softwares de forma rápida e sem problemas. Esse documento não é recomendado como fonte única de informações para a instalação dos pacotes abaixo, muito menos para obtenção de informações referentes ao uso do MapLab. O Autor também isenta-se de qualquer problema que por ventura possa ocorrer no uso dos softwares ou no processo de instalação apresentados a seguir. Os softwares utilizados nesse documento, podem ser encontrados em:

É provável que o uso de outras versões funcionem adequadamente, porém é extremamente importante que a versão do MapServer utilizado seja compativel com a versão do PHP (nesse caso 4.3.3). No momento que este artigo está sendo escrito, já existe a versão 4.3.4 do PHP, mas infelizmente ainda não saiu uma versão do MapServer compativel.

Também deve estar previamente instalado, suporte à Java no Browser para o correto funcionamento do MapLab.

Uma vez “baixado” todos os arquivos, podemos iniciar a instalação. A instalação segue uma sequencia lógica e de pré-requisitos. Seguiremos da base do ambiente, a aplicação final.

Instalando o Apache 1.3.29

A Instalação do Apache é fácil, primeiro execute o arquivo de instalação (apache_1.3.29-win32-x86-no_src.exe) e em seguida siga os passos descritos a seguir:

  1. Na janela de boas vindas pressione [Next];
  2. Em seguida aceite a licença de uso e pressionar [Next];
  3. Pressione novamente [Next] na janela intitulada “Read this First“;
  4. Essa janela é responsavel por ajustar o domínio onde o servidor está alocado, o nome do servidor e o e-mail do administrador. Nesse caso, como utilizaremos o sistema localmente na máquina (sem acessos externos) utilizaremos localhost para os dois primeiros campos e root@localhost para o campo de e-mail do administrador. Também é apresentado duas opções ondem pode-se escolher se o apache será executado como serviço na maquina local (para todos os usuários) ou se ele será inicializado manualmente pelo usuário que instalou. Nesse ponto podemos deixar a opção já escolhida (Run as service for All Users) para que o apache rode como serviço. Pressione novamente [Next];
  5. Seleciona a opção complete (para a instalação completa do apache) e pressione o botão [Next];
  6. Aparecerá uma opção para escolher o diretório de destino, pressione o botão [Change] e escolha C:\Arquivos de programas\ como destino. Pressione [Next] novamente;
  7. Pressione o botão [Install];
  8. a Instalação deverá decorrer normalmente até aparecer uma janela intitulada “Installation Wizard Completed“.

Nesse momento o Apache já está funcionando. Para testar, basta abrir um Navegador e acessar o endereço http://localhost/. Deverá aparecer uma página informando que o servidor está funcionando corretamente.

Instalando o PHP 4.3.3

É comum instalarmos o PHP como módulo do Apache, mas nesse caso para que o MapLab consiga executa-lo, o PHP será instalado como um binário CGI. Para isso siga as seguintes instruções:

  1. Copie o arquivo php-4.3.3-Win32.zip para o diretório c:\Arquivo de Programas e em seguida descompacte-o (será criado o diretório c:\Arquivos de Prograpas\php-4.3.3-win32, renomeie essa diretório parac:\Arquivos de Programas\PHP)
  2. Copie todos os arquivos com extensão .dll localizados no diretório c:\Arquivo de Programas\php\dlls para o diretório c:\windows\system32 (no caso do MS Windows da série NT (Windows 2000 ou XP) para MS Windows 9x o diretório correto deve ser c:\windows\system). Caso seja solicitado alguma substituição de arquivos, escolha a opção não (obs. **NÃO SUBSTITUA NENHUM ARQUIVO!**)
  3. Copie o arquivo c:\Arquivos de programas\php\php4ts.dll para o diretório c:\windows\system32
  4. Copie o arquivo c:\Arquivo de Programas\php\php.exe para o diretório C:\Arquivos de programas\Apache\cgi-bin
  5. Nos próximos passos o Apache será configurado para interpretar arquivos PHP. Para isso edite o arquivo C:\Arquivos de programas\Apache\conf\httpd.conf e procure pela seguinte linha:
    AddType application/x-tar .tgz
    Ao encontra-la, adicione logo abaixo dela a linha:
    AddType application/x-httpd-php .php .php3 .phtml
    Essa alteração fará com que o Apache interprete arquivos com as extensões .php.php3.phtml como aplicações PHP (x-httpd-php).
  6. Em seguida procure pela linha:
    #AddDescription “GZIP compressed tar archive” .tgz
    e adicione logo abaixo dela:
    Action application/x-httpd-php “/cgi-bin/php.exe”
    E essa alteração fará com que aplicações PHP (x-httpd-php) serão executadas com o binário php.exe.
  7. Agora vamos configurar o Apache, para interpretar algumas extensões de arquivos index que são utilizados como primeiro arquivo a ser aberto pelo apache (default). Procure pela linha:
    DirectoryIndex index.html
    e altere-a para:
    DirectoryIndex index.html index.htm index.php index.phtml
  8. Procure pela linha:
    DocumentRoot “C:/Arquivos de programas/Apache/htdocs”
    e ao encontra-la, altere-a para:
    DocumentRoot “C:/WEB”
  9. Procure pela linha
    <Directory “C:/Arquivos de programas/Apache/htdocs”>
    e também altere-a para:
    <Directory “C:/WEB”>
    Com as duas últimas alterações (passo 8 e 9), estamos instruindo o Apache a utilizar o diretório c:\web como diretório raiz para aplicações Web.
  10. Agora deve-se copiar o arquivo c:\arquivos de programas\php\php.ini-dist para c:\windows\php.ini. Esse arquivo é responsável pelas configurações pertinentes ao PHP. Em seguida edite-o e procure pela linha:
    extension_dir = “./”
    para altera-la para:
    extension_dir = “c:/Arquiv~1/PHP/extensions”
    Agora procure pelas linhas abaixo comentadas (;) e descomente-as deixando-as assim:
    extension=php_gd2.dll
    extension=php_dbase.dll
    extension=php_curl.dll

    Essa alteração fará com que o PHP suporte as bibliotecas CURLDBASEGD, que são necessárias pelo MapLab.

    No arquivo encontra-se outras duas variáveis que devem ser alteradas: register_globals do valor Off para Onsession.save_path do valor /tmp para c:/temp. Deverão ficar assim:
    register_globals = On
    session.save_path = c:/temp

    e criar o diretório c:\temp

  11. Agora devem ser criados os diretórios c:\webc:\temp. No diretório c:\web crie um arquivo com o nome index.php e adicione o seguinte conteudo:
    <? phpinfo(); ?>
  12. Por fim reinicie o Apache e em seguida acesse no seu browser o endereço http://localhost novamente para verificar se o PHP está funcionando normalmente. O que deverá aparecer é uma tela com informações referentes ao PHP.

Obs: Ao criar o arquivo, verifique se o arquivo realmente ficou com a extensao .php e nao .txt.

Instalando o MapServer 4.0.1

A Instalação do MapServer é rápida e sem muitas complicações resumindo-se em 5 passos:

  1. Descomprima o arquivo mapserver-4.0.1-win32-php4.3.3.zip em um diretório temporária.
  2. Descomprima os seguintes arquivos .zip localizados dentro do diretório criado pelo mapserver:
    ECW_DLL.zip
    gdal.zip
    libcurl-7.10.7_dll.zip
    libpq pdfdll.zip
    xerces_dll.zip

    e copie todos os arquivos com extensão .dll extraidos desses arquivos compactados para o diretório c:\windows\system32;
  3. Copie os arquivos php_mapscript_4.0.1.dllphp_proj.dll para o diretório c:\Arquivos de Programas\php\extensions;
  4. Edite o arquivo de configurações do PHP (c:\windows\php.ini) para adicionar o suporte ao MapServer. Procure pela seção de extensões extensions adicione as seguintes linhas:
    extension=php_mapscript_4.0.1.dll
    extension=php_proj.dll
  5. Agora basta reiniciar o servidor Web (Apache) e pronto, já existe suporte ao MapServer no nosso Web Server.

Instalando o MapLab 2.0.1

A instalação do MapLab é mais fácil, pois basta apenas descomprimir a aplicação em um diretório e criar uma diretório temporário para armazenamento das imagens geradas dinamicamente. De qualquer forma, serão apresentados os passos necessários abaixo:

  1. Primeiro descomprima o arquivo do maplab-2.0.1-release.zip no diretório c:\web\maplab, assim o diretório htdocs (onde fica a aplicação MapLab em si) deverá ficar em c:\web\maplab\htdocs;
  2. crie um diretório temporário para hospedagem das imagens geradas dinamicamente em c:\web\ms_tmp;
  3. Agora basta configurar o MapLab para reconhecer o diretório temporário. Acesse http://localhost/maplab/htdocs e escolha no Menu Configuration a opção Open XML Configuration Tools e altere a variável tmp_img_pathpara o valor c:/web/ms_tmp e pressione o botão [Apply];
  4. Selecione a opção MapEdit e no menu MapEdit pressione o botão Open Map File. Na janela que se abre, entre no diretório tutorial do diretório corrente, selecione o arquivo tutorial.map e pressione o botão [Open]. Na árvore ao lado esquerdo (Object Browser) selecione a opção Web e altere a variável ImagePath para o valor c:/web/ms_tmp/ e conclua pressionando o botão [Apply Changes].
  5. Para visualizar o mapa do tutorial, no menu principal (MapEdit) pressione o botão [preview map], que abrirá uma nova janela com o mapa.

Fontes de Informação

Web Sites Oficiais: