Python Lib: iptools
#!/usr/bin/env python
import iptools
INTERNAL_IPS = iptools.IpRangeList(
'127.0.0.1', # single ip
'192.168/16', # CIDR network block
('10.0.0.1', '10.0.0.19'), # inclusive range
)
- validate_ip: Validar una dirección IP.
- validate_cidr: Valida el CIDR de una dirección IP.
- cidr2block: Convierte la notación CIDR en una tupla donde se muestra la IP de inicio y la IP final.
- IpRange: Rango de IPs 'iterable'.
- IpRangeList: Listado de rangos de IPs 'iterables'.
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
HTTP client (I): python-ruby-perl
En muchas ocasiones podemos vernos en la necesidad de realizar consultas HTTP de una forma más automática, como por ejemplo hacer uso de servicios como el que comentamos en nuestra anterior entrada. Para estos casos el uso de los navegadores web puede resultar poco útil.
A continuación, y a modo de "cheat sheet", listamos sencillos ejemplos del uso de librerías para realizar peticiones HTTP en los tres lenguajes interpretados más utilizados, por lo menos por nosotros.
# Importacion de las librerias.
import urllib
import urllib2
# Definicion de la URL que se pedira.
url = 'http://www.example.com/accion'
values = {'param1':'parametro','param2':'parametro'}
# Codificacion de los parametros de la url.
data = urllib.urlencode(values)
req = urllib2.Request(url,data)
# Lanzamiento de la peticion.
res = urllib2.urlopen(req)
# Mostramos los resultados.
print res.read()
# Cierre del descriptor.
res.close()