Labels

Thursday, March 1, 2012

UserAgent

Estava lendo sobre User Agent e pesquisando no Google encontrei um site bem legal chamado User Agent String.Com, nesse site encontrei uma lista gigante de User Agent, e o mais legal nele é que possui uma API, aonde você passa a String do seu User Agent como parâmetro e ele devolve uma String com os dados separado por ";".
Ex: agent_type=Browser;agent_name=Opera;agent_version=9.70;os_type=Linux;os_name=Linux;os_versionName=;os_versionNumber=;os_producer=;os_producerURL=;linux_distibution=Null;agent_language=English - United States;agent_languageTag=en-us;  


Utilizando essa API criei uma classe onde você passa um "User Agent em uma String" e através do método "get()" você pode pegar as propriedades (agent_type, agent_name, agent_version...).

package com.blogspot.rozolin.utils;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.TreeMap;

public class UserAgent {

 private final static String URL = "http://www.useragentstring.com/?getText=all&uas=";
 public final static String AGENT_TYPE = "agent_type";
 public final static String AGENT_NAME = "agent_name";
 public final static String AGENT_VERSION = "agent_version";
 public final static String OS_TYPE = "os_type";
 public final static String OS_NAME = "os_name";
 public final static String OS_VERSION_NAME = "os_versionName";
 public final static String OS_VERSION_NUMBER = "os_versionNumber";
 public final static String OS_PRODUCER = "os_producer";
 public final static String OS_PRODUCER_URL = "os_producerURL";
 public final static String LINUX_DISTIBUTION = "linux_distibution";
 public final static String AGENT_LANGUAGE = "agent_language";
 public final static String AGENT_LANGUAGE_TAG = "agent_languageTag";

 private Map<String, String> map;

 private UserAgent(Map<String, String> map) {
  this.map = map;
 }

 public static UserAgent getUserAgent(String userAgent) throws IOException {
  userAgent = URLEncoder.encode(userAgent, "UTF-8");
  //  http://rozolin.blogspot.com/2012/03/urlutils.html
  String conteudo = UrlUtils.getHtml(URL + userAgent);
  String[] array = conteudo.split(";");
  Map<String, String> map = new TreeMap<String, String>();
  for (String s : array) {

   String[] array2 = s.split("=");
   if (array2.length > 1) {
    map.put(array2[0], array2[1]);
   }

  }

  return new UserAgent(map);
 }

 public String get(String key) {
  return map.get(key);
 }

 @Override
 public String toString() {
  StringBuilder builder = new StringBuilder();
  for (String key : map.keySet()) {
   builder.append(key + ": " + map.get(key) + "\n");
  }

  return builder.toString();
 }

 public static void main(String[] args) throws IOException {
  UserAgent userAgent = UserAgent
    .getUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21");
  System.out.println(userAgent);
 }

}

Resultado:
agent_name: Chrome
agent_type: Browser
agent_version: 19.0.1042.0
linux_distibution: Null
os_name: Linux
os_type: Linux

Obs: Qualquer mudança no User Agent String.Com, podera afetar o funcionamento da classe.

No comments:

Post a Comment