Jue
31
Jul

UserAgent Spy: Plugin para WordPress


Les presento mi más reciente mini-proyecto. En este caso se trata de UserAgent-Spy, un plugin para WordPress que detecta el navegador web y sistema operativo de quienes dejan comentarios, mostrando el logo. Seguramente muchos dirán “eso ya existe“, o “yo ya lo tengo instalado en mi blog” o “PicandoCódigo mismo viene usando eso hace rato“.

El plugin que “ya existe” es BrowserSniff. Venía usándolo desde hace un tiempo en PicandoCódigo. Sin embargo, le hice unas modificaciones al código, y agregué algunos navegadores web más, aparte de los que ya tenía, y alguna otra cosa que no me acuerdo. Intenté comunicarme con el autor original para informarle de los cambios y bajo qué licencia podía re-distribuirlos. Sin embargo, nunca obtuve respuesta.

¿Porqué no escribirlo de cero? Así podía diseñarlo como quisiera, agregarle las opciones que me parecieran, mantenerlo actualizado, y re-distribuirlo bajo GPL v3. Así que lo hice, y le fui agregando más características. Para empezar, hice que su instalación fuera mucho más sencilla, bien al estilo WordPress, y agregué una página de opciones para personalizar un poco el aspecto del plugin.

UserAgent Spy on WordPress 2.6 default theme

UserAgent Spy en WordPress 2.6 tema por defecto

Comencé escribiéndolo como prueba, para aprender un poco sobre el API de WordPress, y cómo se maneja con los plugins. Y desde ahí seguí adelante. WordPress es muy adaptable y modificable, podemos hacerle de todo. Una cosa divertida que agregué, es que se puede personalizar el mensaje de “Usando tal navegador en tal sistema operativo”. Por ejemplo:

  • Navegando la web con Firefox sobre Ubuntu
  • Mirando esta página en IceWeasel corriendo sobre Debian

Seguro se les ocurren frases más originales… La idea es hacer mensajes personalizables también según el S.O. / Navegador. Por ejemplo: “Pseudo-navegando con IE que a duras penas levanta en su Windows Vista” :D

Recién voy en la versión 0.4, creo que me falta bastante para una versión 1.0, pero de a poco le voy metiendo código en los ratos libres. El plugin filtra mediante expresiones regulares el string del UserAgent y en base a eso muestra el sistema operativo y navegador web del usuario que comentó. Las expresiones regulares están hechas medias “así nomás” y probablemente les falte algo de trabajo, como así también al código en general. Digamos que por ahora, hace lo que tiene que hacer, pero hay lugar para aprolijarlo.

Lleva un simpático logo del navegador/s.o.
Esto sirve para lucir o humillarse :P .

Subir un plugin al repositorio de plugins de WordPress está muy bueno. Si tu plugin es aceptado, te dan un repositorio SVN propio para hostearlo. Hay que seguir unos estándard para que se muestre la información, se descargue, etc. Desarrollamos el plugin en trunk, como siempre con SVN, y agregamos versiones estables a tags, las cuales hay que especificar en el readme del plugin para que sea la versión a descargar.

Una experiencia más en PHP. Por cierto, UserAgent Spy está instalado en PicandoCódigo desde hace unos cuantos días. Los invito a descargarlo, probarlo, criticarlo, reportar errores, etc. Apenas detecta 11 navegadores web y 14 sistemas operativos recién, pero va creciendo de a poco.

Página de UserAgent-Spy en Wordpress.org


Si te gustó éste post, podés apoyar a PicandoCódigo a través de PayPal!

47 Comentarios para “UserAgent Spy: Plugin para WordPress”

  1. nenesio a las 5:35 am 3 Agosto. 2008
    Firefox 3.0.1GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1 MEGAUPLOAD 3.0

    voy a usar este pluging en dos blogs, fuera del tema que tal esta debian ahora uso ubuntu desde hace mas d eun año y quisiera intentar con otro linux, ya lo hice con suse y fedora pero ya los RPM nose no me gustan ma sni puedes hacer upgrade automaticos.

    checo si tienes un disco duro mas o menos grande deberias hacer una particion y probar un linux y veras la cosa de otro punto de vista, microsoft te usa hasta el msn que segun es “gratis” es adware…

  2. fernando a las 6:02 am 3 Agosto. 2008
    Debian IceWeasel 3.0.1Debian GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071618 Iceweasel/3.0.1 (Debian-3.0.1-1)

    nenesio:
    Buenísimo gracias por instalarlo, cualquier error o detalle que le encuentres, bienvenido sea. Está en desarrollo bastante activo, cuando le encuentro algún defectito trato de arreglarlo en el menor tiempo posible.

    Debian, a mi gusto, es la mejor distribución que hay. Por lo menos de las que he probado, es la que más me ha gustado.

    Si venís usando Ubuntu hace tiempo, te vas a sentir familiarizado con Debian. En el foro hemos tenido mucha gente que se instaló Debian, y planteó sus dudas y opiniones. Usá el buscador, y fijate los distintos puntos de vista (no solo el mío). La instalación es sencilla, y el resultado final es mejor que Ubuntu. Personalmente te lo recomiendo altamente.
    Usé RPM antes, pero nada se compara con apt. Ojo, todavía me quedan distros por probar.

  3. fernando a las 2:26 am 5 Agosto. 2008
    Opera 9.51GNU/Linux
    Opera/9.51 (X11; Linux i686; U; en)

    Jujuju, recién subida la versión 0.4.2 con un par de errores corregidos en el código. Aparentemente nadie notó que hubieron dos errores:
    -No mostraba los saltos de línea en los comentarios.
    -Al arreglar esto, rompí otra cosa, y no se mostraba el contenido del primer comentario de cada post.

    Por suerte, ya quedó arreglado, y detecta más navegadores :D

  4. albertux7 a las 5:19 pm 5 Agosto. 2008
    Firefox 3.0.1GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1

    Efectivamente la version 0.4.2 funciona muy bien. Saludos

  5. antonio a las 8:13 pm 22 Agosto. 2008
    Firefox 2.0.0.12OpenBSD
    Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.8.1.12) Gecko/20080310 Firefox/2.0.0.12

    Probando con OpenBSD

  6. fernando a las 8:29 pm 22 Agosto. 2008
    Debian IceWeasel 3.0.1Debian GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071618 Iceweasel/3.0.1 (Debian-3.0.1-1)

    antonio:
    ¿Prueba superada? :P

    Gracias por probarlo!

  7. Aarón a las 9:55 pm 7 Septiembre. 2008
    Opera 9.52Windows XP
    Opera/9.52 (Windows NT 5.1; U; es-LA)

    Probando en Opera…

  8. Aarón a las 9:56 pm 7 Septiembre. 2008
    Google Chrome 0.2.149.27Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

    Probando en Google Chrome…

  9. Aarón a las 9:57 pm 7 Septiembre. 2008
    Firefox 3.0.1Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1

    Probando en Firefox…

  10. Aarón a las 9:57 pm 7 Septiembre. 2008
    Safari 525.21Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21

    Probando en Safari…

  11. Aarón a las 9:57 pm 7 Septiembre. 2008
    Internet Explorer 8.0Windows XP
    Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; InfoPath.1; .NET CLR 3.0.04506.648)

    Probando en Explorer…

  12. Aarón a las 9:59 pm 7 Septiembre. 2008
    Opera 9.52Windows XP
    Opera/9.52 (Windows NT 5.1; U; es-LA)

    Toma ya! esta perfecto, me gusta mucho los variantes de los iconos, si señor mis mas sinceras felicitaciones, perdona por los repetidos post, puedes borrarlos ya que aquí queda constancia que funciona perfectamente en mi Google Chrome, Opera, Safari, Firefox y IExplorer.

  13. albertux7 a las 8:13 pm 21 Septiembre. 2008
    Firefox 3.0.1GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1

    Fernando aqui te dejo una pequeña aportacion para tu useragent-spy:

    function detect_ies(){
    	global $useragent, $code, $link, $title, $img;
    	$link="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx";
    	$title="Internet Explorer";
    	$code.="ie";
    	//TO-DO: Detect Internet Explorer different versions and make fun of the user...
    	if (preg_match('/MSIE 5.5/i',$useragent)) {
    		$version = '5.5';
    	} elseif (preg_match('/MSIE 6.0/i',$useragent)) {
    		$version ='6.0';
    	} elseif (preg_match('/MSIE 7.0/i',$useragent)) {
    		$version ='7.0';
    	} elseif (preg_match('/MSIE 8.0/i',$useragent)) {
    		$version ='8.0';
    	} else {
    		$version ='5.0 or less';
    	}
    	$title.=' '.$version;
    }

    Saludos

  14. Guillermo a las 10:39 am 15 Febrero. 2009
    Firefox 3.0.5Ubuntu
    Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.5) Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5

    lo voy a probar a ver q pasa jaja, felicitacines y gracias por el aporte

  15. Deco a las 12:35 am 21 Diciembre. 2009
    Google Chrome 4.0.253.0Chrome OS
    Mozilla/5.0 (X11; U; CrOS i686 9.10.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.253.0 Safari/532.5

    Pues yo en este momento estoy probando Google Chromium OS y esta muy bien para las necesidades basicas del usuario. Ademas estoy desarrollando un sitio web con foro incluido y me encontre con este articulo muy bueno. Saludos!

Trackbacks y pingbacks:

Dejar un comentario

Al agregar un comentario en esta página, usted acepta la siguiente licencia para su publicación:
Creative Commons License Creative Commons Attribution-Share Alike 3.0 Unported License.




Si quieres mostrar código, enciérralo entre los tags pre de esta forma:
<pre lang="L"> y </pre>, donde L es un lenguaje compatible GeSHI. Más info.

XHTML: Las siguientes tags están permitidas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">


Additional comments powered by BackType

Búsqueda personalizada