User Agent String
UserAgentString.com es una web muy sencilla pero que puede llegar a ser muy útil, veamos como.
Estos días estamos publicando una serie de entradas donde mostramos sencillos ejemplos con clientes HTTP en diferentes lenguajes de programación.
A veces lo sencillo no es la mejor solución. Un cliente tan sencillo como el que mostramos en el pequeño script de python:
import urllib
import urllib2
url = 'http://www.example.com/accion'
values = {'param1':'parametro','param2':'parametro'}
data = urllib.urlencode(values)
req = urllib2.Request(url,data)
res = urllib2.urlopen(req)
print res.read()
res.close()
Puede darnos algunos problemas para acceder a cierta información, que desde un navegador si que nos resulta accesible.
>>> import urllib >>> import urllib2 >>> url = 'http://www.google.com/search?q=iniqua' >>> req = urllib2.Request(url) >>> res = urllib2.urlopen(req) urllib2.HTTPError: HTTP Error 403: Forbidden
Google no nos quiere responder si no nos identificamos de alguna forma. Podemos incluir cabeceras en nuestra petición utilizando la libreria httplib.
La cabecera más importante en este caso es "User-Agent". Existen multitud de formas de averiguar nuestro propio "User-Agent", pero no siempre vamos a querer utilizar el mismo o una serie limitada de valores.
Es en este momento donde entra en juego useragentstring.com , esta web nos ofrece un listado más que amplio de códigos que podemos utilizar en la cabecera de nuestras preticiones.
Si accedemos a la URL nos muestra el navegador con el que estamos accediendo. Además nos permite acceder al listado por categorías de toda su base de datos, http://www.useragentstring.com/pages/useragentstring.php.
En la siguiente captura vemos el "User-Agent" que utilizaremos en el ejemplo que aparece a continuación.
>>> import httplib
>>> http = httplib.HTTP("www.google.com")
>>> http.putrequest("GET","/search?q=iniqua")
>>> http.putheader("User-Agent","Mozilla/5.0 (X11; U; Linux i686; en-US)
AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.277.0 Safari/532.8")
>>> http.putheader("Host","www.google.com")
>>> http.putheader("Accept", "*/*")
>>> http.endheaders()
>>> errcode = http.getreply()
>>> file = http.getfile()
>>> print file.read()
<!doctype html><head><title>iniqua - Google Search</title>
Esta es un opción de las muchas que hay.
Siempre se puede optar por lo que ya se ha codificado como la libreria xgoogle de Peteris Krumins, con una filosofía simplista.

Aún no hay trackbacks.

