sql >> Databáze >  >> RDS >> Mysql

Záhlaví uživatelského agenta - zkratka pro ukládání mysql

Pro řetězce User-Agent neexistují žádná pravidla, takže neexistuje způsob, jak vytvořit zcela správný a do budoucna odolný analyzátor. Existuje však obecný vzorec:

User-Agent: <engine-string> <engine-string> ...

Kde engine-string má tvar:

<agent-name> (<comment>; <comment>; ...)

Každý řetězec motoru (jen jsem to tak nazval, jak jsem pochopil, nemusí to být správné) může nebo nemusí mít komentáře.

Například:

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)

(Toto je jeden řetězec, jen jsem ho rozdělil na řádky.) Zdá se, že kdykoli někdo udělá větev enginu prohlížeče, prostě připojí svou věc na konec. Takže máme nějaký abstraktní prohlížeč "Mozilla" (dědictví "první války prohlížečů"), který si myslí, že je to na iPhone. Pak vidíme, že existuje WebKit (který si pamatuje, že se kdysi dávno zrodil jako KHTML). Pak je tu nějaká modifikace verze/6.0, která byla následně upravena na Mobile/10A5376e, ze kterého se stalo Safari/8536.25, což konečně odhaluje tajemství, že se ve skutečnosti jedná o mobilního robota Google.

Další příklad:

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)

Toto je jediný motor, ale má mnoho co říct v závorkách.

Takže obecný postřeh je:

  • nejdůležitější jsou poslední řetězce motoru,
  • poslední komentáře v závorkách jsou méně důležité.

S ohledem na to by mým nápadem bylo analyzovat řetězec do těchto enginů a tokenů komentářů a pak z každé sekce enginu vyhodit komentáře počínaje, řekněme, pátou. Pak, pokud to stále nestačí, zahoďte sekce motoru počínaje druhou (první je často abstraktní "Mozilla", ale často má užitečné komentáře; někdy je to také něco konkrétního, zejména pro webové prohledávače).

Při analýze musíme vzít v úvahu, že občas se mohou vyskytnout řetězce, které tento formát nedodržují. Lze je uložit do souboru protokolu pro pozdější kontrolu a poté je jednoduše zkrátit na potřebnou délku, aby se vešly do databáze.




  1. Top 2 nabídky se součtem všech nabídek

  2. Význam délky varchar v tabulce MySQL

  3. Jak zřetězit řetězce v PostgreSQL

  4. Vylepšení výkonu MySQL bez mezipaměti