Como ver la descarga de un archivo desde internet por la terminal?

Iniciado por Drakaris, 6 Febrero 2020, 15:55 PM

0 Miembros y 1 Visitante están viendo este tema.

Drakaris

Buenas. Como hago para ve por la terminal, la transferencia que tiene una descarga desde internet.

Es decir, descargo desde internet cualquier cosa en mi pc (localmente), y al conectarme desde fuera por ssh a cuyo pc. Como hago para ver cuanto tiempo falta la descarga? A traves de la terminal.

Graicas
Lo increible, no es lo que ves, sino como es

WHK

Nopues, eso va a depender de como lo estés descargando y desde donde y desde que protocolo, por ejemplo, si descargas algo por wget puedes ir mirando el progreso, si lo haces desde un navegador web es caso imposible por el siguiente motivo:


El content length

No siempre los navegadores saben cuanto queda por descargar algo, el servidor puede estar infinitamente enviando contenido, para esto existe la cabecera http content-length el cual dice cuantos bytes debiera transferirse, de esta manera el navegador toma ese valor y le resta la cantidad de bytes descargados y saca un promedio en procentaje, si tu quisieras saber esto fuera del navegador tendrias que haber interceptado el paquete http, si usas tshark, tcpdump y similares deberás rearmar los paquetes con un buen filtro que te arroje únicamente los paquetes en plano de tu descarga, luego de eso tendrás que ir contando byte por byte, esto quiere decir que si no realizas un capturado de tráfico desde el inicio no podrás saber la longitud del contenido ni la cantidad de bytes que ya han sido transferidos.


El SSL

Otro problema es que si el contenido viaja por https entonces tendrás la complicación de tener que descifrar los paquetes y para ello deberás tomar la llave del certificado más la del storage interno de tu navegador para poder ver paquete por paquete cual es el contenido real e ir contando los bytes uno por uno ininterrumpidamente.


El rearmado de paquetes

Para hacer esto necesitas un filtro muy grande de captrado de paquetes ya que TCP sólo envía trozos de paquetes y no todo el tráfico de una ves, esto quiere decir primeramente que no puedes llegar a mitad de descarga y saber cuanto queda, sino que tendrás que crear una sesión desde el momento en que el navegador solicita el archivo y el servidor responde, a demás, debes interpretar elcontenido http, leer la cabecera y comenzar a rearmar los paquetes, por otro lado tendrás la complicación de que no puedes hacer un capturado según puertos y direcciones IP porque si el navegador WEB sigue navegando entonces tendrás m,ás tráfico asociado a la misma dirección IP y al mismo puerto, entonces tendrás que valerte por los flags de sesión de la estructura de TCP4 y no será para nada fácil.


La sandbox del navegador

Por otro lado, no puedes ir a buscar a la memoria ram el progreso del archivo ya que los navegadores modernos contienen cajas de arena que impiden que un proceso pueda acceder a la información del contenido de los sitios, contraseñas, etc, tendrías que encontrar una vulnerabilidad en el navegador para hacer esto.


Limitación del software

Por otro lado, no hay navegador WEB como Firefox que te permita saber el progreso de algo llamando a un simple comando, los navegadores no fueron diseñados para esto.


Costo v/s Beneficio

Podrías lograrlo fabricando un complemento para Firefox, es lo más fácil que se me ocurre, todo dependerá del navegador que estés usando.


Realismo

Para lo que tu quieres hacer te recomiendo descargar los archivos con wget sobre una sesión de tmux, es una sesión activa que queda viva aun despues de cerrar sesión en tu cuenta de ssh, cuando vuelves ejecutas tmux attach y vuelves a la misma ventana de la descarga que dejaste y asi sabrás cual es el progreso de tu descarga.

Saludos.

@XSStringManolo