Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Cabeçalho do agente do usuário - abreviação para armazenamento mysql


Não há regras para strings de User-Agent, portanto, não há como criar um analisador completamente correto e à prova de futuro. Porém, existe um padrão geral:
User-Agent: <engine-string> <engine-string> ...

Onde engine-string tem forma:
<agent-name> (<comment>; <comment>; ...)

Cada string de mecanismo (acabei de chamá-lo assim, pelo meu entendimento, isso pode não estar correto) pode ou não ter comentários.

Por exemplo:
Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) ↲
AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e ↲
Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

(Esta é uma única string, eu apenas a quebrei em linhas.) Parece que, sempre que alguém faz um fork de um mecanismo de navegador, eles apenas acrescentam sua coisa ao final. Portanto, temos um navegador abstrato "Mozilla" (um legado da "Primeira Guerra do Navegador") que pensa que está no iPhone. Então vemos que existe um WebKit (que lembra que nasceu como KHTML há muito tempo). Depois, há alguma modificação da Versão/6.0, que foi então modificada para Mobile/10A5376e, que se tornou Safari/8536.25, que finalmente revela o segredo de que na verdade é um bot móvel do Google.

Outro exemplo:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.4; ↲
InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; ↲
.NET CLR 3.5.30729; .NET CLR 1.1.4322)

Este é um único motor, mas tem muito a dizer entre parênteses.

Então a observação geral é:
  • as últimas strings do mecanismo são as mais importantes,
  • os últimos comentários entre parênteses são menos importantes.

Tendo isso em mente, minha ideia seria analisar a string nesses tokens de mecanismo e comentário e, em seguida, de cada seção do mecanismo, jogue fora os comentários a partir, digamos, do quinto. Então, se ainda não for suficiente, jogue fora as seções do motor a partir da segunda (a primeira geralmente é um "Mozilla" abstrato, mas geralmente tem comentários úteis; também às vezes é algo concreto, especialmente para rastreadores da web).

Ao analisar, precisamos levar em consideração que ocasionalmente pode haver strings que não seguem esse formato. Eles podem ser salvos em um arquivo de log para inspeção posterior e, em seguida, simplesmente cortados no comprimento necessário para caber no banco de dados.