El cajón de Drazul

El lugar donde duerme el pequeño dragón

Certificados SSL Válidos a Coste Cero.

Tal y como mencioné en una entrada anterior, la utilización de certificados SSL válidos en nuestras aplicaciones webs es un punto importante en el tema de la seguridad.

La seguridad basada en certificado SSL, el utilizado para establecer conexiones HTTPS, se basa principalmente en la confianza en las Autoridades Certificadoras (CA), que garantizan la identidad del servidor firmando su certificado SSL. Pero la identidad del emisor es solo uno de los puntos fundamentales de seguridad, por lo que gracias al protocolo SSL y a la utilización de certificados válidos la conexión entre el servidor y cualquier cliente está cifrada punto a punto mediante el intercambio de las claves públicas y autenticación basadas en certificados digitales (ej. Diffie-Hellman).

Elementos Básicos De Seguridad

Nadie puede negar que en el ámbito de la seguridad se ha avanzado mucho en pocos años, sobretodo en la concienciación del público mayoritario, posiblemente gracias a las revelaciones de Edwar Snowden. Algo que considera negativo el director de Inteligencia de Estados Unidos pero positivo el resto de los mortales [1].

Pasando De Infraestructura De Testing a Infraestructura De Producción

En la entrada anterior hablé de cómo automatizar la creación y despliegue de nueva infraestructura con Vagrant y Ansible. Esto está muy bien para hacer pruebas rápidas sobre cómo se comporta la infraestructura o para refinar el proeso de creación y despliegue, por lo que son unas herramientas muy útiles para el testing.

En esta entrada hablaré sobre cómo pasar de un entorno de testing Vagrant + Ansible a un entorno de producción en el que sólo utilizamos Ansible.

Automatización De La Infraestructura: Vagrant Y Ansible

Desde hace un tiempo un ingeniero de sistemas, o mejor dicho, aquel ingeniero que se dedica a gestionar una infraestructura hardware, se pasa menos tiempo trasteando con el hardware y más programando. ¿Pero cómo es esto posible? Bueno, la respuesta es los múltiples sistemas de gestión de infraestructura mediante código, que permiten automatizar tareas tediosas o repetitivas como pudiera ser la configuración de una nueva máquina.

Pensemos en el caso en el que queremos ampliar nuestra infraestructura hardware y que compramos un nuevo servidor. ¿Cómo procedemos para instalarlo, configurarlo y dejarlo operativo? Pues tenemos varias opciones:

  • La clásica: donde una vez instalado el Sistema Operativo correspondiente cogemos la lista e instalamos a mano cada una de las dependencias software que se tienen que instalar para que nuestros procesos funcionen.
  • Forma actual: cogemos la misma lista de dependencias y la ejecutamos, de esta forma el proceso será totalmente automático y el ingeniero responsable podrá dedicarse a tareas más productivas (como leer este blog :P).

Automatizando Las Descargas

Para automatizar las descargas lo más cómodo es hacerlo mediante urllib2 o curl pero a veces no se puede hacer de esa forma porque, como el caso que voy a explicar, la descarga empieza después de rellenar un formulario o al resolver un captcha.

Una posibilidad es utilizar Selenium, pero no tiene soporte para la automatización de las descargas, por lo que la biblioteca a utilizar en este caso es Mechanize, que emula un navegador web y no depende de navegadores externos como Selenium, pero por contra es más difícil de utilizar ya que no tiene soporte para XPATH.

Cómo Saltarse Un Captcha Sencillo

Hace unos meses, durante las tareas rutinarias de mantenimiento de los web scrapers que mantenía en ese momento, me topé con un extraño caso que no venía sino a confirmar la voluntad de transparencia de los gobernantes, a cualquier nivel, de nuestro país.

La tarea que tenía automatizada era la de descargar los boletines oficiales que publica la Comunidad Autónoma de Cataluña y mi sorpresa fue mayúscula cuando vi que habían puesto un captcha para poder descargar estos documentos públicos.

A continuación voy a explicar brevemente, porque no tiene demasiada complejidad, el procedimiento que seguí para poder resolver el captcha de forma automática.

Web Scraping Y Automatización Del Navegador Web

En algunas ocasiones nos enfrentamos a tediosas tareas de extracción de datos de alguna página o servicio web consistentes en la recopilación de cierto contenido para almacenarlo o tratarlo posteriormente. En otras ocasiones tenemos el caso contrario, en el que tenemos cierta información y queremos ponerla en un sitio web y no sirve con copiar y pegar una sola vez, o subir un archivo en cierto formato legible, típicamente CSV. En realidad, en ambos casos propuestos, nos enfrentamos al mismo problema: procesar a mano un número considerable de datos estructurados de la misma forma que tenemos que procesar periódicamente.

Para estas ocasiones debemos hacer uso de herramientas de web scraping, cuya traducción podría ser recortar una web. Estas herramientas nacieron con el propósito de automatizar las tareas de navegación y recopilación de información a través de la web y son ampliamente utilizadas por todo tipo de empresas o por particulares para las tareas más diversas. Como ejemplo representativo de estas herramientas encontramos los robots de los buscadores (Google, Bing, Yahoo, …), contados por cientos de miles y que recorren toda la web conocida saltando de enlace en enlace y recopilando toda la información que encuentran.

En este post voy a comentar algunas alternativas con las que he trasteado y algunas ventajas y desventajas de cada una. Estas herramietnas funcionan perfectamente en python pero son compatibles o tienen alternativas en otros lenguajes.