Fork me on GitHub
Você esta em:Home » Linux AWS » Saiba como bloquear web crawler, bots, scrapers e spiders no Varnish e Nginx que ataca seu Magento

Saiba como bloquear web crawler, bots, scrapers e spiders no Varnish e Nginx que ataca seu Magento

O processamento do seu servidor na Amazon esta alto? hum…

Opa pessoal, abordarei aqui rapidamente como detectar os bots que estão te atacando, onde estão te atacando e como se proteger. Primeiro para começar, você sabe o que é Bot, Scrapers, Spiders e Web Crawler??

 

O que é web crawler?

Segudno Wikepédia Web crawler (em português rastreador web), é um programa de computador que navega pela World Wide Web de uma forma metódica e automatizada. Outros termos para Web crawlers são indexadores automáticosbotsweb spidersWeb robot, ou Web scutter.

veja mais em: http://pt.wikipedia.org/wiki/Web_crawler

O processo que um Web crawler executa é chamado de Web crawling ou spidering. Muitos e-commerces, em particular os motores de busca, usam crawlers para manter uma base de dados atualizada. Os Web crawlers são principalmente utilizados para criar uma cópia de todas as páginas visitadas para um pós-processamento por um motor de busca que irá indexar as páginas baixadas para prover buscas mais rápidas. Crawlers também podem ser usados para tarefas de manutenção automatizadas em um shop, como checar os links ou validar o código HTML. Os crawlers também podem ser usados para obter tipos específicos de informação das páginas da Web, como minerar endereços de email (mais comumente para spam).

veja mais em: http://www.oficinadanet.com.br/artigo/otimizacao__seo/qual-a-diferenca-entre-robo-spider-e-crawler

e a super novidade???

E agora surgiu uma super novidade na web, como se não basta se os buscadores, agora temos vários SaaS “da hora!” Que monitora o seu concorrente em tempo real e te da uma análise de todas as mudanças dos preços, posição do estoque e quantas newsletter foram enviadas. Show de bola né? Agora coloque-se no lugar do seu concorrente… Fudeu né?

Pois é esses sistemas são maravilhosos quando nós queremos pesquisar nossos concorrentes, agora quando somos os pesquisados em tempo real não é nada bom :S Isso porque cada visitas de um bot é equivalente a visita de uma pessoa real. Agora vamos multiplicar essas visitas de todos os buscadores que conhecemos na web e das novas plataformas para monitoramento de preços da concorrência em tempo real… Seu servidor irá sentar, porque serão milhares de requisições por segundo somado ainda aos seus reais visitantes.

PS: NO BANNER QUE USEI PARA ESSE ARTIGO DEMOSTRO UM GRÁFICO REAL DE UM ATAQUE DOS CRAWLERS. OBSERVE O PICO QUE CHEGA A 99% DO USO DO PROCESSAMENTO DO EC2 E DO RDS E LOGO EM SEGUIDA A QUEDA BRUSCA DEVIDO AO BLOQUEIO FEITO.

Infelizmente esqueci de tirar print do processamento quando estava os 8 cores( 8 processadores ) alto, então peguei um print na web de como seria.

PS: No meu caso conseguiu ficar pior do que esse print, pois ficaram todos em 100% e a memória também em 100%.

Antes, vamos ver como bloquear os bots usando o robots.txt no Magento de forma eficiente:

 

Então como identificar se esta sendo atacado pelos web crawlers?

Bem como há tempo eu só trabalho com Nginx e Varnish e creio que grande parte do público de Magento também o usa por N vantagens já abordadas em dezenas de posts na web, vou explicar como detectar e bloquear usando Nginx e Varnish.

No nginx edite o arquivo de configuração que geralmente fica em: /sites-enabled/default  e adicione:

[...]
       server { 
                listen 80; 
                
                # Inclua a linha seguinte para gravar os logs de acesso 
                access_log /mnt/www/logs/seushop_com_br-access.log;
[...]

Reinicie o serviço do Nginx e verá que na pasta /mnt/www/logs/  terá o arquivo com o nome: seushop_com_br-access.log;

Lá você verá todos os acessos que seu servidor esta recebendo, que será +/- assim as linhas:

[...]

127.0.0.1 - - [05/Sep/2014:01:23:06 -0300] "GET /categoria/produto.html HTTP/1.1" 200 54 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36"

127.0.0.1 - - [05/Sep/2014:01:25:29 -0300] "GET /categoria/produto.html HTTP/1.1" 200 8627 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

127.0.0.1 - - [05/Sep/2014:01:25:30 -0300] "GET /categoria/produto.html HTTP/1.1" 200 11634 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"

127.0.0.1 - - [05/Sep/2014:01:25:30 -0300] "GET /categoria/produto.html HTTP/1.1" 200 11634 "-" "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)"

[...]

Como analisar os dados acima?

Nas linhas acima podemos ver os agentes que foram usados, seguindo a ordem (AppleWebKit/537.36,  Googlebot/2.1,  Baiduspider/2.0, DotBot/1.1)

  • AppleWebKit/537.36[Benigno] - Cliente comum usando Apple;
  • Googlebot/2.1[Benigno/Maligno] - Bot do Google (Ps: As vezes ele fica crazi!);
  • Baiduspider/2.0[Maligno] - Bot do buscador baudu (Cuidado!);
  • DotBot/1.1[Benigno/Maligno]Bot novo que passa poucas vezes, mas é preciso cuidado com todos os bots;

Ou seja, existem dezenas de bots, abaixo listo mais alguns:

Explicarei mais abaixo sobre como bloquear os bots em: Como bloquear os bots?

 

Como bloquear?

Você precisa bloquear tanto no Nginx tanto no Varnish(Principalmente o Varnish que fica na porta 80). No Nginx abaixo explico como bloquear países e bots. E porque bloquear países? Você vende para eles, como China, Alemanha, Rússia,…? Não? Então bloqueia os que possuem maior índice de ataque. Você pode identificar a origem do pais buscando pelo IP na web (http://www.iplocation.net/)

Como bloquear o país de origem dos bots ou países que não trabalhamos e são suscetíveis?

  • Primeiro instale: apt-get install geoip-database libgeoip1
  • Mova os arquivos: mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak
  • Entre na pasta: cd /usr/share/GeoIP/
  • Baixe o pacote com as referencias de GEOIP: wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  • Descompacte: gunzip GeoIP.dat.gz

 

Agora edite o arquivo em: /etc/nginx/nginx.conf  e aponte onde esta o pacote de referencias em seu servidor e configure:

[...]
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allow_visit {
        default yes;
        FK no;
        FM no;
        EH no;
    }
[...]

No exemplo acima eu apenas bloquei 3 países, mas nos meus projeto recentes estou bloqueando mais países, como:

map $geoip_country_code $allow_visit {
default yes;
CN no;
CY no;
CO no;
HR no;
FR no;
NL no;
HN no;
HK no;
HU no;
HM no;
CC no;
CK no;
CX no;
JM no;
JP no;
JE no;
JO no;
GB no;
CF no;
CZ no;
CH no;
PT yes;
BR yes;
}
PS: MUITO CUIDADO COM ISSO!!! POIS VOCÊ PODERÁ ESTAR NEGANDO ACESSO A PESSOAS REAIS, OU SEJA, BRASILEIROS NOS OUTROS PAÍSES OU INVESTIDORES OLHEIROS!
No nginx edite o arquivo de configuração que geralmente fica em: /sites-enabled/default  e adicione:
[...]
       server { 
                listen 80; 
                
                # Inclua a linha seguinte para bloquear os acessos dos países
                if ($allowed_country = no) { 
                     return 444; 
                }
[...]

Pronto, sua plataforma magento esta bloqueando o tráfego para os países acima!

 

Como bloquear os bots?

Como vimos bloquear países é uma alternativa, porém saiba que ali você esta bloqueando todos os países da lista em não acessar seu e-commerce! A lógica funciona para implementar países suscetíveis a terem um grande número de bots como China, Rússia,… Mas bloquear os bots seria mais eficaz, porém mais complexo, pois precisa saber o nome do bot que esta te atacando.

Muitos devops bloqueiam apenas o Nginx, porém esquecem que o Varnish esta de frente na porta 80. Por mais que o Varnish seja Jedi ele chega a um momento que não irá suportar a quantidade de requisições. Porém, veja bem! É importante se ter os bloqueios no Ningx, principalmente no server do Nginx que aponta para a porta 443(SSL), pois os bots podem realizar as buscas em cima do seu https. Bem vamos lá!

Bloqueando bots usando Robots.txt:

Como o próprio nome já diz, robots.txt é um arquivo no formato .txt (bloco de notas). Funciona como um filtro para os robôs dos sites de busca e faz com que os webmasters controlem permissões de acesso a determinadas páginas ou pastas dos sites. O robots.txt controla qual informação de um site deve ou não deve ser indexada pelos sites de busca. A sintaxe do arquivo é bem simples, e deve ser colocada pelo webmaster responsável pelo site na raiz da hospedagem. O próprio Google usa um arquivo em http://www.google.com/robots.txt, e navegar por ele é no mínimo curioso. Um outro bem interesante que podemos olhar e analisar seu conteúdo é o do Facebook em https://www.facebook.com/robots.txt

Um exemplo de robots.txt para uso no Magento seria https://gist.github.com/inovarti/bb6d43f88a4e290d92d3

Porém ele funciona somente com bots bonzinhos, agora os marvados não! (risos) Mas vale a pena ter ele também.

 

Bloqueando crawler no Nginx:

Bloquear pelo Nginx é bem simples, até mais simples que o passo acima de bloqueio por pais. basta editar o arquivo do nginx que geralmente fica em: /sites-enabled/default  e incluir a linha de bloqueio de bots.

[...]
       server { 
                listen 80; 
                
                # Inclua a linha seguinte para bloquear os acessos dos países
                if ($allowed_country = no) { 
                     return 444; 
                }

                # Inclue a linha de bloqueio de crawler
                if ($http_user_agent ~ “JikeSpider|proximic|Sosospider|Baiduspider|Sogou web spider|bingbot|TwengaBot|BLEXBot”) { 
                return 400; 
                }
[...]

Antes eu somente usava uns 10 bots, porém hoje em dia o meu tem uma porrada (risos):

[...]
                if ($http_user_agent ~ " JikeSpider|proximic|Sosospider|Baiduspider|Baiduspider+|BecomeBot|BecomeBot 3.0|BeslistBot|Bimbot|Sogou web spider|OpenVAS|msnbot-media|Bingbot|bingbot|bingbot/2.0|bingbot 2.0|AhrefsBot|Baiduspider/2.0|baiduspider|seznambot|Slurp|teoma|Yandex|Yeti|ia_archiver|DotBot/1.1") {
[...]

Para incluir mais um bot em sua lista negra (backlist de bots), basta colocar o “pipe” ou seja, a barrinha “|” e adicionar o nome do novo bot, como por exemplo na linha acima adicionei o novo bot que apareceu em nosso log de exemplo lá de cima chamado DotBot/1.1.

Segue um exemplo que encontrei na web com diversos outros nomes de agentes, porém para usuários do Apache: http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html

Pronto agora só dar reload em seu Nginx! Se tudo estiver ok, você não mais verá o Bot em seus logs caso eles venham do Nginx!

 

Bloqueando crawler no Varnish:

Como citei acima é muitíssimo importante o bloqueio dos bots pelo Varnish, pois geralmente o varnish fica aberto na porta 80 e o Nginx em seu 443, então vamos lá!

Edite o seu VCL do Varnish e inclua as linhas abaixo de sub vcl_recv

[...]

 include "/mnt/www/sites-enabled/agents.vcl";

[...]

Acima temos um if jogando para o forbidden e o arquivo de include que esta abaixo, chamado agents.vcl

if (req.http.User-Agent ~ "JikeSpider|proximic|Sosospider|Baiduspider|Baiduspider+|BecomeBot|BecomeBot 3.0|BeslistBot|Bimbot|Sogou web spider|OpenVAS|msnbot-media|Bingbot|bingbot|bingbot/2.0|bingbot 2.0|AhrefsBot|Baiduspider/2.0|baiduspider|seznambot|Slurp|teoma|Yandex|Yeti|ia_archiver|DotBot/1.1") {
 error 403 "Forbidden";
}

Pronto agora só dar reload em seu Varnish! Se tudo estiver ok, você não mais verá o Bot em seus logs caso eles venham do Varnish!

 

Bloqueando usuários/sistemas anonymous que usam TorProject para esconder o ip:

O navegador Tor é o núcleo do projeto de anonimato na web, sem fins lucrativos, chamado de Tor Project. O browser é uma versão do Firefox dedicada para a segurança. Ele tem foco total em manter a identidade do usuário secreta, e, por isso, muitos aplicativos e funcionalidades não estarão disponíveis de maneira usual. Matéria completa: http://canaltech.com.br/dica/seguranca/Como-usar-o-Tor-Project-e-se-manter-anonimo-na-web/#ixzz3CUW4i7I4

Ou seja, depois que o projeto Tor foi difundido pelo Edward Snowden, muitos sistemas adotaram para poder camuflar o web crawlers dos seus sistemas, exemplo os sistemas de monitoramento de preço do concorrente. Então recomendo bloquear as lista de ips utilizados pelo project tor, pois o próprio projeto possui um tutorial que explica como bloquea-lo.

Como project tor funciona?

Basicamente o TOR usa uma lista de ips aleatória para camuflar os ips dos seus usuários. Porém ele mesmo abre essa lista para quem desejar bloquear os usuários TOR, podemos conseguir a lista no link: https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=154.217.82.132&port=

Essa lista se atualiza em hora e hora e existe quantidade limitada(geralmente 1x) para obter tal lista. O bloqueio do tor se consiste em obter essa lista e usar o SED para implementar na frente de cada ip o DENY, no qual podemos colocar essa auto captura e geração da lista no cron do Varnish e/ou Nginx. Bem vamos ao script:

 

Bloqueando usuários do Tor Projetc pelo Varnish:

Primeiro vamos criar um SHELL onde irá criar a lista.

Depois vamos colocar a execução desse shell script no cron do linux:

#Gera o bloqueio do TOR - 05:00
0 5 * * * sudo /mnt/www/web/shell/block-tor.sh 54.232.103.86 /etc/varnish/block-tor.vcl

No arquivo block-tor.vcl vamos colocar os seguintes parametros:

#!/bin/bash
echo 'acl forbidden {' > $2
wget -q https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=$1 -O -|sed '/^#/d' |while read IP
do
echo " \"$IP\";" >> $2
done
echo '}' >> $2

Com isso passamos pela linha do cron o nosso ip do servidor e dentro do shell script ele pegará esse ip e gerará a lista. (Vale lembrar que na linha acima possui o comando sed para que ele pegue somente os ips e não os comentários).

Agora edite o seu VCL do Varnish e inclua as linhas abaixo de sub vcl_recv

[...]

include "block-tor.vcl";

sub vcl_recv {

 # Block access from these hosts
 if (client.ip ~ forbidden) {
 error 403 "Forbidden";
 }

Segue algumas referencias:

Pronto! Agora todo cliente que visitar o nosso sistema com um ip que faça parte da lista acima será negado a ele o acesso!

 

Bloqueando usuários do Tor Projetc pelo Nginx:

Basicamente consiste no mesmo entendimento que foi feito acima para Varnish, porém o que muda é no SED onde ele coloca na frente de todos os ips o DENY para degar acesso ao Nginx.

#No CRON colocar a linha:
wget -q https://www.dan.me.uk/torlist/ -O - | sed "s/^/deny /g; s/$/;/g" > /etc/nginx/block-tor.conf

Nesse link explica com detalhes esse processo: http://wiki.infinitevps.com/doku.php?id=blocktorexitnodes

NOTA: É IMPORTANTE FAZER ESSE BLOQUEIO NO NGINX, POIS A PORTA 443 QUE FICA ABERTA PARA O HTTPS E OS SISTEMAS QUE USAM TOR PODEM EXPLORAR O SEU HTTPS ONDE É MUITO PIOR POR CONTA DE NÃO TER SSL OFFLOADING PARA USO DO VARNISH NO HTTPS!

Outros métodos para bloquear web crawler bem mais eficaz!

(RISOS) Bem por incrível que pareça esses próximos métodos são bem mais eficazes do que os de cima, porém recomendo usarem todo em conjunto. Nesses próximos métodos explicarei como negar serviços limitando conexões simultâneas, tanto no Nginx tanto no Varnish.

Bloqueando conexões simultâneas com Nginx:

Antes de começar vale a penas apresentar rapidamente a solução para bloqueio de acesso a pastas importantes de nosso sistemas usando o Nginx. Edite a conf do seu shop no Nginx que geralmente fica em: /sites-enabled/default 

[...] 
server { 
 listen 80;

 ## These locations would be hidden by .htaccess normally
 location ^~ /app/ { deny all; }
 location ^~ /includes/ { deny all; }
 location ^~ /lib/ { deny all; }
 location ^~ /media/downloadable/ { deny all; }
 location ^~ /pkginfo/ { deny all; }
 location ^~ /report/config.xml { deny all; }
 location ^~ /var/ { deny all; }

[...]

Pois bem, vamos agora aos bloqueios de conexões simultâneas, edite o arquivo /etc/nginx/nginx.conf

[...]

http {

 #Limitando acessos - Deivison Arthur
 limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
 limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;

[...]

Veja mais em:

Ou seja, o Nginx irá verificar o número de request de conexões, se ultrapassar 5 conexões por segundos, ele irá negar serviços. Para testar seu 443, basta executar o o comando abaixo do siege para testar e ver o bloqueio:

sudo siege -r1 -d10 -c500 -t10m http://sualojacom.br

ab -n 1000 -c 100 https://sualoja.com.br/customer/account/login

LEMBRE-SE, ESSE COMANDO ACIMA NÃO DEVE SER EXECUTADO EM UMA LOJA EM PRODUÇÃO, SE A LOJA NÃO TIVER LIMITES DE CONEXÕES SIMULTANEAS, CERTAMENTE IRÁ CAIR ENQUANTO DURAR O TESTE.

 

Bloqueando conexões simultâneas no Varnish usando mod throttle:

Existem vários mods super legais para Varnish, o mod throttle nega serviço caso o cliente tenta passar pelas configurações setadas no default.vcl. O Varnish não possui essa configuração de bloqueio de conexões simultaneoas nativa, então se faz necessário compilar o mod-throttle usando o tutorial https://github.com/nand2/libvmod-throttle

Basicamente ele irá trabalhar assim:

sub vcl_miss {
    if(req.url !~ "\.(jpg|jpeg|png|gif|ico|swf|css|js|html|htm)$") {
        if(throttle.is_allowed("ip:" + client.ip, "3req/s, 10req/30s, 30req/5m") > 0s) {
                error 429 "Calm down";
        }
    }
}

No exemplo acima ele negará serviço caso receba 3 request por segundo ou 10 request a cada 30 segundos ou 30 request a cada 5 minutos.

Para maiores informações:

 

LEMBRE-SE DE UMA COISA IMPORTANTE! ASSIM QUE TERMINAR OS TESTES, COMENTE A LINHA DO NGINX QUE GERA OS LOGS DE ACESSO, POIS COMO ESTA LINHA SETADA IRÁ GERAR LOG DE TODOS OS ACESSOS NO SERVIDOR, OU SEJA, USE A SOMENTE PARA MONITORAR QUANDO HOUVER PICOS DE PROCESSAMENTO. COM ESSE ARQUIVO GRANDE VOCÊ PODE GERAR PROBLEMAS DE IO DE DISCO, MESMO QUE SEJA SSD. PARA ISSO A AWS VENDE EBS OTIMIZADO ONDE SE TEM UM PODER MAIOR PARA ESCRITA E LEITURA DE ARQUIVOS, EXEMPLO NOSQL E GRANDES ARQUIVOS DE LOGS.

 

Como verificar se o Googlebot é realmente o Googlebot no Varnish?

Pois é (risos) notei que alguns bots filho da P, se passam como Googlebot (Fake Googlebot) para acabar com o servidor. Você pode notar isso caso o Googlebot não respeite os parametros passados no Webmaster Tools ou se notar um alto tráfego do Google Bot em seu shop. Para isso existe um módulo para varnish que se chama libvmod-dns que verifica pelo DNS se a requisição é realmente do Google.

Para isso instale o mod usando o tutorial: https://github.com/kenshaw/libvmod-dns

O exemplo de uso no default.vlc fica assim:

# do a dns check on "good" crawlers
sub vcl_recv {
    if (req.http.user-agent ~ "(?i)(googlebot|bingbot|slurp|teoma)") {
        # do a reverse lookup on the client.ip (X-Forwarded-For) and check that its in the allowed domains
        set req.http.X-Crawler-DNS-Reverse = dns.rresolve(req.http.X-Forwarded-For);

        # check that the RDNS points to an allowed domain -- 403 error if it doesn't
        if (req.http.X-Crawler-DNS-Reverse !~ "(?i)\.(googlebot\.com|search\.msn\.com|crawl\.yahoo\.net|ask\.com)$") {
            return (synth(403, "Forbidden"));
        }

        # do a forward lookup on the DNS
        set req.http.X-Crawler-DNS-Forward = dns.resolve(req.http.X-Crawler-DNS-Reverse);

        # if the client.ip/X-Forwarded-For doesn't match, then the user-agent is fake
        if (req.http.X-Crawler-DNS-Forward != req.http.X-Forwarded-For) {
            return (synth(403, "Forbidden"));
        }
    }
}

Se for realmente Google PASS, senão Forbidden no FDP! O foda que acredito que esse processo de um delay (bem rápido) nas requisições para poder checar tal DNS.

 

Como falei pouco nesse artigo, vou rapidamente dar umas dicas para o Vanrish! (risos)

 

Como ter menos páginas cacheadas pelo Varnish e assim consumir menos memória?

Caso você note que o seu varnish esta consumindo muita memória isso pode significar que o seu projeto esta cacheando mais do que o necessário, ou seja, sabe aquele cliente que vem do email e junto com seu link vem as referencias de onde ele veio? Pois bem, o varnish vai notar essas urls e vai criar uma pagina em cache para cada requisição. Então para controlar isso peguei umas dicas com um amigo para remover o gclid.

Exemplo de URL com gclid

meusite.com?glid=e4ewrewr

ATENÇÃO: SE VOCÊ USA MARKETPLACE NO MAGENTO (COMO MERCADOLIVRE, RICARDOELETRO, NOVAPONTOCOM, B2W, RACKUTEM,…) CERTAMENTE QUEM USA O MAGENTO MARKETPLACE TERÁ ESSES PROBLEMAS. POIS ESSE TRÁFEGO É GERADO POR CONTA DOS DIVERSOS ENVIOS DE NEWSLETTER QUE ESSES MARCKETPLACE FAZEM.

    # remove Google gclid parameters
    set req.url = regsuball(req.url,"\?gclid=[^&]+$",""); # strips when QS = "?gclid=AAA"
    set req.url = regsuball(req.url,"\?gclid=[^&]+&","?"); # strips when QS = "?gclid=AAA&foo=bar"
    set req.url = regsuball(req.url,"&gclid=[^&]+",""); # strips when QS = "?foo=bar&gclid=AAA" or QS = "?foo=bar&gclid=AAA&bar=baz"

Assim os seus clientes serão mapeados, porém o varnish pegará a página já cacheada por outros ao invés de criar uma para cada requisição. No exemplo acima todos os clientes que vierem com gclid pegaram as páginas do cliente gclid=AAA

Outros exemplos de como remover o gclid:

# remove Google gclid parameters
    set req.url = regsuball(req.url,"\?gclid=[^&]+$",""); # strips when QS = "?gclid=AAA"
    set req.url = regsuball(req.url,"\?gclid=[^&]+&","?"); # strips when QS = "?gclid=AAA&foo=bar"
    set req.url = regsuball(req.url,"&gclid=[^&]+",""); # strips when QS = "?foo=bar&gclid=AAA" or QS = "?foo=bar&gclid=AAA&bar=baz"

Outro exemplo de como remover vários outros como utm_source|utm_medium|utm_campaign|gclid|cx|ie|cof|siteurl:

if (req.url ~ "[?&](utm_source|utm_medium|utm_campaign|gclid|cx|ie|cof|siteurl)=") {
    set req.url = regsuball(req.url, "(?:(\?)?|&)(?:utm_source|utm_medium|utm_campaign|gclid|cx|ie|cof|siteurl)=[^&]+", "\1");
    set req.url = regsuball(req.url, "(?:(\?)&|\?$)", "\1");
    }

ANTES QUE ME PERGUNTE SE REMOVER ISSO IRÁ PREJUDICAR SEU GOOGLE ANALYTICS, JÁ RESPONDO: NÃO IRÁ AFETAR SEU GA! POIS NESSE MOMENTO AI O GA JÁ PEGOU OS DADOS E AI ESTA ESTA NA ETAPA ONDE O CACHE IRÁ VERIFICAR SE JÁ EXISTE NO SERVIDOR A PAGINA CACHEADA, PARA PODER DEVOLVE-LA.

 

 

Mais uma última dica de como executar um reload no varnish sem apagar o seu cache.

visite o tutorial em: http://cosmicb.no/2014/01/02/reload-your-vcl-in-varnish-without-restart/

 

Bem pessoal, tomara que com essas dicas ajude a vocês a resolverem o problema de auto processamento do servidor e caso tenham duvidas ou dicas favor enviar nos comentários abaixo. vlw tchau!

Outras fontes:

Sobre o Autor

Designer, Web Developer & Linux Administrator

Meu nome é Deivison Arthur, tenho 29 anos, sou Administrador Linux, Analista de Sistema, Webdesigner e Pesquisador. há mais de dez anos. Nasci no Rio de Janeiro, atualmente trabalho como Gerente de Tecnologia e E-commerce at Grupo FFernandes e Freelancer nas horas vagas. Desenvolvimento em Joomla, Wordpress, Drupal, Magento e outros GPLs...

Quantidade de Artigos : 114

Comentários (6)

  • Felipe Pavão

    Ótimo artigo Deivison. Esse problema dos bots e crawlers são corriqueiros. Além de todas as preocupações que devemos ter com infra dos nossos sites, bloquear esses acessos deve estar em nosso roadmap.

    Parabéns.

    Responder
  • Eduardo Oliveira

    Cara, o seu é o melhor e mais completo artigo que já vi a respeito, é uma pena que eu uso apache e não vai dar pra implementar o seu tuto no meu server, tenho que encontrar um próprio para apache, esses bots estão colocando o meu server no chão pqp! Ótimo artigo, valeu por compartilhar!

    Responder
  • Thiago Santos

    Salve, Deivison!!!!
    Cara, eu perdi um final de semana tentando corrigir, instalando e desistalando tudo que vc possa imaginar. Depois de muito tentar, resolvi tirar o site do ar e utilizar em homologação, vi que o consumo da CPU foi perto de Zero, só então pensei nesses “ataques”, fiz o processo no NGINX, até acrescentei mais alguns: if ($http_user_agent ~ ” JikeSpider|archive.org_bot|proximic|Sosospider|Baiduspider|Baiduspider+|BecomeBot|BecomeBot 3.0|BeslistBot|Bimbot|Sogou web spider|OpenVAS|msnbot-media|Bingbot|bingbot|bingbot/2.0|bingbot 2.0|AhrefsBot|Baiduspider/2.0|baiduspider|seznambot|Slurp|teoma|Yandex|Yeti|ia_archiver|Mozilla/5.0|MJ12bot/v1.4.5|DotBot/1.1″)

    Foi como um passe de mágica!
    valeu!

    Responder
  • Marcelo Azeredo

    Bom dia amigo. Valeu por compartilhar, muito completo seu artigo.
    Pelo Google Analytics, criando filtros, também seria uma forma de excluirmos estes acessos de nossas análises?

    Abs,

    Responder
  • Julio César

    Gostei muito dessa idéia, mas teria algum script para bloquear essa lista no .htacess? Agradeço!

    Responder

Enviar Comentário

© 2012 Powered By Wordpress, Deivison Arthur

Ir para cima