0% encontró este documento útil (0 votos)
9 vistas7 páginas

Uso de Wget para Descargas HTTP

El documento describe la herramienta Wget, utilizada para descargar contenido de servidores web mediante el protocolo HTTP. Se detalla su implementación en Java, incluyendo la estructura de clases y métodos para gestionar descargas de archivos y directorios de manera recursiva. Además, se menciona la importancia del protocolo HTTP en el intercambio de datos en la web.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas7 páginas

Uso de Wget para Descargas HTTP

El documento describe la herramienta Wget, utilizada para descargar contenido de servidores web mediante el protocolo HTTP. Se detalla su implementación en Java, incluyendo la estructura de clases y métodos para gestionar descargas de archivos y directorios de manera recursiva. Además, se menciona la importancia del protocolo HTTP en el intercambio de datos en la web.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

PRÁCTICA 5 WGET

APOLONIO VILLEGAS DIEGO ARMANDO

HURTADO OLIVARES JUAN CARLOS

3CM16

AXEL ERNESTO MORENO CERVANTES

APLICACIONES PARA COMUNICACIONES EN RED

26 DE JUNIO DE 2023
Introducción

Wget es una herramienta informática creada por el Proyecto GNU. Puede ser usado para recuperar
contenido y archivos de varios servidores web. El nombre es una combinación de World Wide Web
y la palabra get. Admite descargas a través de FTP, SFTP, HTTP y HTTPS. Para el desarrollo de la
práctica, se desarrollará sobre el protocolo HTTP para descargar recursos de un servidor de manera
recursiva.
Su nombre deriva de World Wide Web (w) y de la palabra obtener (en inglés get). Este nombre
viene a querer decir: obtener desde la WWW.
Hoy en día existen decenas de aplicaciones para descargar archivos de manera muy eficiente. La
mayoría de ellas se basan en interfaces Web y de escritorio, y están desarrolladas para todos los
sistemas operativos. Sin embargo, en Gnu/Linux (también hay versión para Windows) existe el
poderoso gestor de descargas de archivos wget. Está considerado como el downloader más potente
que existe.

HTTP

HTTP, de sus siglas en inglés: "Hypertext Transfer Protocol", es el nombre de un protocolo el cual
nos permite realizar una petición de datos y recursos, como pueden ser documentos HTML. Es la
base de cualquier intercambio de datos en la Web, y un protocolo de estructura cliente-servidor,
esto quiere decir que una petición de datos es iniciada por el elemento que recibirá los datos (el
cliente), normalmente un navegador Web. Así, una página web completa resulta de la unión de
distintos sub-documentos recibidos, como, por ejemplo: un documento que especifique el estilo de
maquetación de la página web (CSS), el texto, las imágenes, vídeos, scripts, etc... . [1]

HTTP es un protocolo basado en el principio de cliente-servidor: las peticiones son enviadas por
una entidad: el agente del usuario (o un proxy a petición de uno). La mayoría de las veces el agente
del usuario (cliente) es un navegador Web, pero podría ser cualquier otro programa, como por
ejemplo un programa-robot, que explore la Web, para adquirir datos de su estructura y contenido
para uso de un buscador de Internet. [1]

Cada petición individual se envía a un servidor, el cuál la gestiona y responde. Entre cada petición y
respuesta, hay varios intermediarios, normalmente denominados proxies (en-US), los cuales
realizan distintas funciones, como: gateways o caches. [1]

Desarrollo

El programa realizado para la práctica fue desarrollado en Java con la versión 17 del JDK. Se
implementó la petición Wget para la descarga de recursos de un servidor mediante el protocolo HTTP
de manera recursiva, ya sea para descargar archivos o directorios, usando además un pool de hilos
para controlar las descargas y que no se descarguen más cosas de las especificadas en el pool.

Clase Wget y constructor

import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class Wget extends Thread {

URL url;
String path;
private final ExecutorService pool;

public Wget(String url, String path, int x) {


pool = [Link](10);
try {
[Link] = new URL(url);
[Link] = path;
if (x == 1) {
process();
} else {
writeData(new File(path + "/" + getName(url)));
}
} catch (Exception e) {
[Link]();
[Link]();
}
[Link]();
}

La primera sección del código corresponde a la declaración de librerías y la descripción de la clase


Wget, la cual contiene los miembros:
▪ URL: Que corresponde a la dirección URL de la página que se desea descargar con todo su
contenido
▪ path: la ruta donde serán descargados los datos obtenidos de la página web
▪ pool: corresponde al pool de hilos que será utilizado para la gestión de descarga de archivos

Además, se encuentra el constructor de la clase Wget donde se inicializan los valores de cada instancia
de la clase. En esta parte se define el uso de 10 hilos en el pool utilizado.

Constructor secundario y método process

public Wget(String url, String path, final ExecutorService pool, int x) {


[Link] = pool;
try {
[Link] = new URL(url);
[Link] = path;
if (x == 1) {
process();
} else {
writeData(new File(path + "/[Link]"));
}
} catch (Exception e) {
[Link]();
}
}

public void process() {


if ([Link]().indexOf(".") == -1) {
isDir();
} else {
writeData(new File(path + getName([Link]())));
}
}

Se tiene un segundo constructor de la clase Wget en la cual se puede pasar como parámetro el objeto
de tipo ExecutorService que es usado para realizar la operación recursiva y no continuar con la
generación de pool de hilos extra. También se define el método process, que es el encargado de hacer
la descarga de archivos, en caso de que sea un directorio el archivo a descargar, se llama a la función
isDir y en caso contrario se efectúa writeData.

Método writeData e isDir

private void writeData(File file) {


try {
[Link]("Descargando el archivo: " +
[Link]());
DataOutputStream dos = new DataOutputStream(new
FileOutputStream(file));
DataInputStream dis = new DataInputStream([Link]());
byte[] b = new byte[65535];
int l = [Link](b);
while (l != -1) {
[Link](b, 0, l);
l = [Link](b);
}
} catch (Exception e) {
[Link]();
}
}

private String getName(String file) {


String[] x = [Link]("/");
return x[[Link] - 1];
}

private void isDir() {


File file = new File(path + getName([Link]()));
if ([Link]()) {
path = [Link]() + "\\";
try {
DataInputStream dis = new
DataInputStream([Link]());
byte[] b = new byte[65535];
int l = [Link](b);
String st = "";
while (l != -1) {
st += new String(b, 0, l);
l = [Link](b);
}
int i = [Link]("PARENTDIR");
if (i == -1) {
[Link](getName("Error" + [Link]()) +
" No se reconoce");
[Link]("Obteniendo bytes.");
[Link](new Wget([Link](), path, pool,
2));
return;
}
i = [Link]("href", i);
[Link](new Wget([Link](), path, pool, 2));

while ((i = [Link]("href", i + 1)) != -1) {


String next = [Link](i + 6, [Link]("\"", i
+ 6));
[Link](new Wget([Link]() + next, path,
pool, 1));
}
} catch (Exception e) {
[Link]();
}
} else {
[Link]("Error: " + [Link]());
}
}
Apolonio Villegas Diego Armando

Hurtado Olivares Juan Carlos


Referencias

[1] Diana, C.. “Qué es y cómo usar el comando WGet”, Hostinger, 01-Dec-2021. [Online].
Available:[Link] [Accessed: 7-Jun-2022]

También podría gustarte