Páginas

02 octubre, 2015

Descargar un website a un directorio local [HTTrack, Cyotek WebCopy y wget]

HTTrack es un software freeware, tanto para sistemas Windows como para Linux, que nos permitirá descargar un sitio Web por completo a un directorio local de nuestro equipo. Construye recursivamente todos los directorios, consiguiendo HTML, imágenes y otros archivos desde el servidor a tu equipo.

Figura 1: HTTrack descargando una website de ejemplo.

Una vez descargado todo el website, podremos navegador de forma local sin conexión a Internet o a ese sitio web, navegar entre todos los hipervínculos de dicha website.

Dependiendo el "tamaño" que pueda tener el sitio web a descargar el proceso tardará más o menos tiempo, aunque esto dependerá también del tipo de conexión a Internet que tengamos.
Para hacerse una idea unos 330MiB tardaríamos unas 4 horas en descargar.

Cyotek WebCopy se trata de otro software con el que poder descargar un sitio web. Similar a HTTrack. Admite URLs con esquema HTTPS, estableciendo campos de formulario o login si se trata de un portal con autenticación previa.

Figura 2: Cyotek WebCopy descarga de sitio web.

wget: Linux y Windows

Otra forma de poder descargar todo un website a nuestro equipo local es a través del uso de wget en sistemas Linux esta utilidad ya viene integrada por defecto.
wget [WEBSITE] -r -k -page-requisites
Figura 3: wget sobre Ubuntu.

Algunos modificadores útiles de wget:

-r o -recursive: indica que de forma recursiva profundice en el árbol de directorios del sitio remoto.
-k o -html-extension: convierte todas las extensiones de fichero a .html.
-page-requisites: descarga absolutamente todo lo que necesite cada página web (imágenes, CSS, etc…).
-no-clobber: evita re-descargar archivos que ya se hubieran descargado.
-convert-links: convierte los enlaces a fichero local, de modo que pueda navegar por todos los hipervínculos de forma local, offline.
-domains [Website]: no descargará ningún enlace o nada que se salga del dominio indicado.
-no-parent: no subirá a niveles superiores al dominio

Figura 4: wget sobre Windows.

Descargar wget para Windows: http://gnuwin32.sourceforge.net/packages/wget.htm

Después de descargarlo y ejecutarlo seguramente nos pedirá las siguientes librerías:
libssl32.dll y libeay32.dll: https://openvpn.net/release/openssl
libintl3.dll: http://gnuwin32.sourceforge.net/packages/libintl.htm
libiconv2.dll: http://gnuwin32.sourceforge.net/packages/libiconv.htm

Saludos!

23 septiembre, 2015

Diferencia entre las carpetas "Archivos de programa" y "System32" en arquitecturas x86 y x64

Aunque a estas alturas tecnológicas es algo tarde para explicar esto, creo que nunca viene de más dar un repaso y quizás aclarar determinados conceptos.

En una entrada anterior comentara como "listar aplicaciones y actualizaciones instaladas en Windows de forma remota". Había comentado la diferencia de las claves de registro que había entre OS de 32 bits (x86) y 64 bits (x64).

Simplemente detallaré un poco más las diferencias más considerables entre ambas arquitecturas entre directorios y algunas carpetas y como afecta esto a la compatibilidad de todo en sistemas Windows.

Saber que hay dos diferencias en cuanto a los nombres: 'WOW64' y 'x86'.

WOW64: viene de "Windows on Windows 64 bits" (algo como Windows de 32 bits en Windows de 64 bits). Es un emulador que permite a las aplicaciones basadas en Windows de 32 bits correr indistintamente en Windows de 64 bits. Se utiliza una capa de compatibilidad entre un programa de 32 bits y el sistema operativo de 64 bits.

x86: inicialmente es un nombre que viene de la arquitectura de procesadores Intel que usaba instrucciones de 32 bits. El término x86 hace referencia referirse a los procesadores de Intel que usaban instrucciones de 32 bits. Eran procesadores llamados 8086, 80186, 80286, 80386, etc, este último fue usado para referirse a procesadores de 32 bits.

Existen dos variantes diferentes de la carpeta "Archivos de programa" y la carpeta de "Sistema de Windows".

Windows de 64 bits tiene dos versiones diferentes de la carpeta program files y la carpeta de sistema de Windows. Una versión está orientada para archivos de 32 bits y la otra versión para archivos de 64 bits. Los nombres de estas carpetas y los bits a que coresponden, son de la siguiente manera:

C:\Windows\System32: Carpeta de sistema de Windows para archivos 64 bits.
C:\Windows\SysWOW64: Carpeta de sistema de Windows para archivos 32 bits.
C:\Archivos de programa: Carpeta para archivos de programa 64 bits.
C:\Archivos de programa (x86): Carpeta para archivos de programa 32 bits.
La carpeta SysWOW64 está dedicada únicamente para archivos de 32 bits
La carpeta System32 está únicamente destinada para archivos de 64 bits
Aquí seguramente veremos algo que nos puede resultar confuso, resulta que la carpeta System32 está dedicada para archivos 64 bits y la carpeta SysWOW64 está dedicada para archivos 32 bits. Esto puede verse un poco ilógico atendiendo a los nombres de las carpetas, pero hay una explicación para ello.
Tiene que ver con la compatibilidad. Muchos desarrolladores han codificado el nombre de la ruta de la carpeta de sistema en el código fuente de sus aplicaciones con el fin de preservar la compatibilidad, si la aplicación se convierte a código de 64 bits, la carpeta de sistema de 64 bits, aún se llamará System32.

¿Qué ocurre con las aplicaciones de 32 bits que tienen codificada la ruta de system y están corriendo en Windows de 64 bits? ¿Cómo pueden encontrar la nueva carpeta SysWOW64 sin cambios en el código del programa?.

La respuesta es que el emulador redirecciona las llamadas a la carpeta System32 a la carpeta SysWOW64 de manera transparente, aún si la carpeta ha sido codificada a la carpeta System32 (C:\Windows\System32), el emulador se asegurará que la carpeta SysWOW64 se use en su lugar. De modo que el mismo código fuente, que utiliza la carpeta System32, puede compilarse tanto en códigos de programas de 32 bits como de 64 bits sin cambio alguno.

Es muy importante que archivos binarios compilados en 32 bits o 64 bits se instalen en la carpeta correcta de system. De otra forma el programa que necesite determinado archivo no podrá cargarlo y probablemente no funcionará correctamente.

Si tenemos instalado un sistema Windows de 64 bits, tendremos instaladas dos carpetas para archivos de programa (Program Files):
Archivos de programa (x86) instala siempre un programa de 32 bits.
Archivos de programa instala siempre un programa de 64 bits.
En muchos casos el programa iniciará y funcionará pese a que coloques el programa en carpetas equivocadas, pero si el programa pide a Windows la ruta de archivos de programa y desea accesar los archivos instalados en la carpeta, se utilizará la carpeta errónea y el programa fallará en su función. De modo que para asegurarse de que todo funcionará como se espera, deberás siempre instalar las aplicaciones que corran a 64 bits o en 32 bits en sus carpetas correspondientes.

Por último señalar las diferencias de esto el registro de Windows. En el caso de aplicaciones tanto de 32 bits como de 64 bits, se ven reflejadas en el siguiente path del registro:

Para arquitecturas x86 (32bits):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Para arquitecturas x64 (64bits):
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Y esto viene siendo la explicación de las diferencias entre arquitecturas de x64 y x86 en sistemas Windows.

Saludos!

Entradas Populares