Capturar nuevo link de descarga

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Capturar nuevo link de descarga

Mensaje por avechuche »

Gente vengo con una duda, resulta que hice un programa para bajar las actualizaciones de los programas que más uso y me tope con un problema, resulta que al momento de descargar Silverlight, por cada versión que sale, la página de descarga cambia. Encontré por ahí la página que usa M$ para redireccionar directo a la web de descarga que es esta http://go.microsoft.com/fwlink/?LinkID=229320 que luego se transforma en http://silverlight.dlservice.microsoft. ... rlight.exe para podes descargarlo, lo que yo quiero es poder pasarle a au3 el link http://go.microsoft.com/fwlink/?LinkID=229320 con inetGet (o algo similar) y que empieze la descarga, es posible? Gracias!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Capturar nuevo link de descarga

Mensaje por Chefito »

Pues te va a tocar analizar el código de la página a ver si puedes capturar esa url de descarga de alguna manera. Prueba con funciones como _inetgetsource, y udfs inet (o las funciones nativas inet de autoit), objeto winhttp (winhttp.winhttprequest.5.1) o la udf winhttp (muy buena).
Aun así, hay algunas que son muy difíciles de analizar y tienes que saber mucho de html, javascript, y puede que en este caso al ser de microsoft asp :smt012 .

Una pregunta, de donde sacas esta url? http://go.microsoft.com/fwlink/?LinkID=229320

Y como sabes la de descarga?

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Capturar nuevo link de descarga

Mensaje por avechuche »

Gracias Chefito, veré que puedo hacer.

La página "http://go.microsoft.com/fwlink/?LinkID=229320" la saque de la web hace tiempo, porque antes M$ no ponía estos link que redirigen, ponian el link directo, pero ahora se avivaron y lo cambiaron.
La página de descarga la se por el IDM o lo que uses para descargar, como te explique arriba, si queres bajar Silverlight desde la página oficial de M$, lo que hace es mostrarte la página "http://go.microsoft.com/fwlink/?LinkID=229320", pero cuando la página esta cargando, el IDM me captura el nuevo link que es el verdadero link de descarga (http://silverlight.dlservice.microsoft. ... rlight.exe). Lo curioso de todo esto que yo tengo más links de esos y andan perfectamente, por ejemplo.
http://go.microsoft.com/fwlink/?LinkID=70631 (Definicions de Windows Defender x86)
http://go.microsoft.com/fwlink/?LinkID=70632 (Definicions de Windows Defender x64)

PD: Mientras te escribo se me prendió la lamparita, probe y me di cuenta de algo, este link "http://go.microsoft.com/fwlink/?LinkID=229320" es "universal" sirve tanto para descargar la version x86 como la x64, la misma página de M$ comprueba que SO tengo instalado y me devuelve el link para descargar silverlight x86 ó x64, ahi esta el problema con au3, no me descarga nada porque no sabe desde donde descargar si desde

"http://silverlight.dlservice.microsoft. ... rlight.exe"
"http://silverlight.dlservice.microsoft. ... ht_x64.exe"


Ya probe en dos pc con arquitectura diferente y es asi, segun la arquitectura, me devuelve el link correspondiente. Estoy peor que antes ^^
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Capturar nuevo link de descarga

Mensaje por Chefito »

Pues no se como lo estarás intentando bajar, pero con el primer ejemplo de la ayuda de la función Inetget funciona perfectamente.

Código: Seleccionar todo

#include <InetConstants.au3>
#include <MsgBoxConstants.au3>

; Download a file in the background.
; Wait for the download to complete.

Example()

Func Example()
    ; Save the downloaded file to the temporary folder.
    Local $sFilePath = @ScriptDir & "\Silverlight.exe"

    ; Download the file in the background with the selected option of 'force a reload from the remote site.'
    Local $hDownload = InetGet("http://go.microsoft.com/fwlink/?LinkID=229320", $sFilePath, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)

    ; Wait for the download to complete by monitoring when the 2nd index value of InetGetInfo returns True.
    Do
        Sleep(250)
    Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)

    ; Retrieve the number of total bytes received and the filesize.
    Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
    Local $iFileSize = FileGetSize($sFilePath)

    ; Close the handle returned by InetGet.
    InetClose($hDownload)

    ; Display details about the total number of bytes read and the filesize.
    MsgBox($MB_SYSTEMMODAL, "", "The total download size: " & $iBytesSize & @CRLF & _
            "The total filesize: " & $iFileSize)

    ; Delete the file.
;~     FileDelete($sFilePath)
EndFunc   ;==>Example
Ejecutado en w7 64 bits, por si te sirve de ayuda.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Capturar nuevo link de descarga

Mensaje por avechuche »

Es todo muy raro. Vengo de comprobar otra cosa.

En realidad hay dos links
http://go.microsoft.com/fwlink/?LinkID=149156
http://go.microsoft.com/fwlink/?LinkID=229320


En un sistema x64, los dos link funcionan de forma diferente, osea si uso http://go.microsoft.com/fwlink/?LinkID=229320 descargo la versión x86 y si uso http://go.microsoft.com/fwlink/?LinkID=149156 descargo la version x64, SOLO EN UN SISTEMA x64. Ahora en un sistema x86, los dos links, me descargan lo mismo, el Silverlight x86.

Si pudieras probar Chefito con el link http://go.microsoft.com/fwlink/?LinkID=149156 en Windows 7 x64 a ver si te descarga algo.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Capturar nuevo link de descarga

Mensaje por Chefito »

Si meto ese link en el explorador, se me descarga el instalador de 64 bits del Silverlight. Si utilizo ese enlace en el código que te pasé, me descarga el código de una página web, que supongo que será la que resuelva el fichero que debe descargar. Te tocaría analizar ese código.
Como no tenía ganas de analizarlo, he cogido un web debbuger y he descubierto que cuando me descargo el de 64 bits accede a la dirección http://go.microsoft.com/fwlink/?LinkID=229321, y sabíamos que con la dirección http://go.microsoft.com/fwlink/?LinkID=229320 te descarga la de 32 bits.
Pues sabiendo esto, y utilizando algo el autoit, la cosa está solucionada.

Te dejo un pequeño código que según que windows tengas instalado te descarga una u otra.

Código: Seleccionar todo

#include <InetConstants.au3>

; Save the downloaded file to the temporary folder.
Local $TipoWin= @OSArch
Local $direcDescarga="http://go.microsoft.com/fwlink/?LinkID=22932"
Local $NombreArchivoDescarga=""

If $TipoWin="X86" Then
	$direcDescarga&="0"
	$NombreArchivoDescarga="Silverlight.exe"
Else ;windos de 64 bits
	$direcDescarga&="1"
	$NombreArchivoDescarga="Silverlight_x64.exe"
EndIf
; Download the file in the background with the selected option of 'force a reload from the remote site.'
Local $hDownload = InetGet($direcDescarga, $NombreArchivoDescarga, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)

; Wait for the download to complete by monitoring when the 2nd index value of InetGetInfo returns True.
Do
	Sleep(250)
Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)

; Close the handle returned by InetGet.
InetClose($hDownload)
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
avechuche
Hacker del Foro
Mensajes: 188
Registrado: 13 Ago 2009, 09:53

Re: Capturar nuevo link de descarga

Mensaje por avechuche »

Listo, perfecto, lo que me faltaba era el link http://go.microsoft.com/fwlink/?LinkID=229321, ahi esta el secreto, ahora anda perfecto con x86 y x64. Muchas Gracias!
Responder