elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Descarga desde WebBrowser
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Descarga desde WebBrowser  (Leído 13,077 veces)
Dragonatak

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Descarga desde WebBrowser
« en: 28 Octubre 2011, 09:46 am »


Saludos:

Mi problema es este, estoy realizando una aplicación en la que entro a una página que pide login y password, postriormente necesito ingresar a un link para que me envíe a la siguiente pantalla, una vez que cargó toda la nueva pagina, la cual contiene una tabla con hypervinculos en forma de imagen de boton para descaragar los archivos que necesito.

Ya tengo todo el acceso hasta la 3er pantalla y las cadenas cortadas para sus descargas, pero al tratar de descargar los archivos estos se bajan incompletos, con:

My.Computer.Network.DownloadFile me terminan pesando menos de 1Kb
Y con objWebClient = New System.Net.WebClient
         objWebClient.DownloadFile
Me descarga hasta 3 Kb.

Ya etsuve leyendo mucho e intentando varias cosas pero aún no logro que los archivos se descarguen completos.

Mi pregunta es existe alguna forma de descargarlos de la página que se argo en el WebBrowser???, de antemano gracias por su ayuda!! =)


En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Descarga desde WebBrowser
« Respuesta #1 en: 28 Octubre 2011, 14:32 pm »

A mi parecer es que talves esta mal hecho los parametros para descargar, ya que si descarga solo 1 kb es raro, seria incompleto si descargara & que le faltaran unos kb's o algo asi.

Pero bueno tambien puedes descargar parte por parte en bytes, yo uso una clase llamada DownloadFilesWithProgressBar en Google la encuentras facil hehehe

Suerte n_n


En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Descarga desde WebBrowser
« Respuesta #2 en: 28 Octubre 2011, 14:50 pm »

podes poner cual es la pagina web ?
En línea

Dragonatak

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Descarga desde WebBrowser
« Respuesta #3 en: 2 Noviembre 2011, 10:02 am »


Saludos:

Antes que nada les doy las gracias por responderme, les comento en lo que voy con esto, efectivamente o al menos eso creo, que como comentas s00rk estaba planteando mal al descarga, puesto que estaba accesando a las páginas atravez del webbrowser, pero después pedía la descargas de los archivos con las sentencias Downloadfile y objWebClient.Downloadfile; por lo que se me impedía la descarga de los archivos y supongo que solo se generaba el archivo.

Al pensar en ello se me ocurrió tratar de descargarlo desde el Webbrowser, estuve buscando pero no existe algo tal cual para hacerlo, así que utilizando

WebBrowser2.Navigate

pude llegar a los archivos, ahora mi problema es la ventana de save as y que todo se haga automático.

Lo que estoy haciendo es mandar un tiempo de espera de 5 segundos entre archivo y archivo y después enviarle tabs y enter's, pero o no lo hace o se traba, que pueden recomendarme????????

Por cierto la página Seba123neo es:

http://www.masteredi.com.mx

al entrar con el user y el pass pasa a una página donde te pide que deseas realizar con hipervínculos, y ahí se debe de presionar la liga de archivos nuevos y en la siguiente págian que es la que interesa hacer la descarga de todos los archivos. La clave es 1809
En línea

Dragonatak

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Descarga desde WebBrowser
« Respuesta #4 en: 3 Noviembre 2011, 04:01 am »

Saludos:

He seguido con esto y el problema sigue siendo el mismo me genera 1 sola ventana de descarga después de hacer la petición de todos los hipervinculos que se deberían de descargar. Pero lo que no logro es como decirle que se guarde cuando se presenta el cuadro de Dialogo Guardar Como, les comento he intentado inmediatamente después de la petición de navegación y que se debería de generar la descarga los Enter's y Tab's y no lo hace, enviando el foco al form al terminar la Subrutina e igual nada, por favor échenme la mano, de antemano gracias.
En línea

Dragonatak

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Descarga desde WebBrowser
« Respuesta #5 en: 3 Noviembre 2011, 10:05 am »

Ya tuve un nuevo avance, lo que hice fue separarlo por subrutinas, la de la obtención de cadenas, la de la descarga y la importante por así decirlo y que creo que es la que me ha ayudado, la del Timer.

Cada 10 seg's me descarga un archivo diferente, ya me aparecen las ventanas de guardado consecutivas, ahora mi problema es el control de las mismas, si conocen algún método de manejo o alguna recomendación se agradece muchísimo, de cualquier forma, comento si hay algún nuevo avance, saludos.
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Descarga desde WebBrowser
« Respuesta #6 en: 3 Noviembre 2011, 14:09 pm »

Hola, despues te publico lo que pude hacer, paciencia, pero te ahorras muchisimo codigo con lo que hice yo, desde ya te digo.

saludos.
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Descarga desde WebBrowser
« Respuesta #7 en: 3 Noviembre 2011, 14:10 pm »

Hola, despues te publico lo que pude hacer, paciencia, pero te ahorras muchisimo codigo con lo que hice yo, desde ya te digo.

saludos.
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Descarga desde WebBrowser
« Respuesta #8 en: 4 Noviembre 2011, 03:07 am »

bueno mira, hice un codigo asi nomas para mostrarte como seria.

para loguearte en la web podes hacerlo de 2 formas: una es completando en el webbrowser los controles textbox desde el codigo, como estas haciendo vos.

pero la otra que es mas corta y te evitas hacer eso, es directamente con la direccion URL...me pude fijar que cuando uno se loguea en esa web en el metodo POST que realiza, envia una cabecera con el nombre de usuario y contraseña, o sea que no necesitas completar los controles, sino directamente hacerlo desde la URL.

por ejemplo, si haces esto:

Código
  1. WebBrowser1.Navigate("http://www.masteredi.com.mx/realdata/login.asp?email=" & "1809" & "&password=" & "1809" & "&btnLogin=Entrar")

con eso te logueas en la web.

este es el codigo final,necesitas un webbrowser un boton y un listbox en el formulario, los nombres por defecto.

Código
  1. Imports System.Net
  2. Imports HtmlAgilityPack
  3. Imports System.Text.RegularExpressions
  4.  
  5. Public Class Form1
  6.  
  7.    Private vAccion As String
  8.  
  9.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.        vAccion = "LOGIN"
  11.        WebBrowser1.Navigate("http://www.masteredi.com.mx/realdata/login.asp?email=" & "1809" & "&password=" & "1809" & "&btnLogin=Entrar")
  12.    End Sub
  13.  
  14.    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
  15.        If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
  16.  
  17.            Select Case vAccion
  18.                Case "LOGIN"
  19.                    Threading.Thread.Sleep(5000)
  20.                    vAccion = "LINKS"
  21.                    WebBrowser1.Navigate("http://www.masteredi.com.mx/masteredi/archivosn.asp?intRegGen=")
  22.                Case "LINKS"
  23.                    Call ExtraerLinks(WebBrowser1.Document.Body.OuterHtml)
  24.            End Select
  25.  
  26.        End If
  27.    End Sub
  28.  
  29.    Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
  30.        Me.Text = "Cargado " & (e.CurrentProgress / 10000) & " %"
  31.    End Sub
  32.  
  33.    Private Sub ExtraerLinks(ByVal pCodigoHTML As String)
  34.  
  35.        Dim vDocumento As New HtmlDocument
  36.        vDocumento.LoadHtml(pCodigoHTML)
  37.  
  38.        For Each vLink As HtmlNode In vDocumento.DocumentNode.SelectNodes("//a[@href]")
  39.            If vLink.Attributes("href").Value.ToString.EndsWith(".exe") Then
  40.                ListBox1.Items.Add(vLink.Attributes("href").Value.ToString)
  41.            End If
  42.        Next
  43.    End Sub
  44. End Class

te explico un poco lo que hace:

1 - al apretar el boton se loguea en la web mediante la URL.

2 - cuando se completa la carga de la pagina, navega hacia la direccion donde estan los archivos a bajar.

3 - y cuando termina de cargarse la pagina con los archivos, son como 800, tarda unos minutos. lo que hace es parsear el codigo HTML de la pagina, y extrae los links que haya.

4 - para parsear los links podes usar varias formas, expresiones regualares o tabmein la libreria que use en este ejemplo que es buenisima, se llama Html Agility Pack ahi podes bajar la libreria dll y agregarla al proyecto como referencia.

5 - lo que hace es extraer los links de la pagina, al extraerlos te devuelve algo como esto:

Citar
/masteredi/Default.asp
default.asp
muestra.asp?archivo=02-001809-20110907_616048-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=02-001809-20110907_616048-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/02-001809-20110907_616048-001-ORD_COMPRA.EXE&log=1809/02-001809-20110907_616048-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=02-001809-20110907_616048-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=02-001809-20110907_616048-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/02-001809-20110907_616048-001-ORD_COMPRA
muestra.asp?archivo=02-001809-20110907_616049-004-DEVOLUCION.log
/masteredi/bajar.asp?archivo=02-001809-20110907_616049-004-DEVOLUCION.EXE
/masteredi/mail.asp?archivo=/data/1809/02-001809-20110907_616049-004-DEVOLUCION.EXE&log=1809/02-001809-20110907_616049-004-DEVOLUCION
/masteredi/bajar.asp?archivo=02-001809-20110907_616049-004-DEVOLUCION.ZIP
muestrac.asp?archivo=02-001809-20110907_616049-004-DEVOLUCION.inw
/masteredi/viejosconf.asp?archivo=1809/02-001809-20110907_616049-004-DEVOLUCION
muestra.asp?archivo=09-001809-20110907_555655-998-APERAK.log
/masteredi/bajar.asp?archivo=09-001809-20110907_555655-998-APERAK.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_555655-998-APERAK.EXE&log=1809/09-001809-20110907_555655-998-APERAK
/masteredi/bajar.asp?archivo=09-001809-20110907_555655-998-APERAK.ZIP
muestrac.asp?archivo=09-001809-20110907_555655-998-APERAK.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_555655-998-APERAK
muestra.asp?archivo=09-001809-20110907_555729-998-APERAK.log
/masteredi/bajar.asp?archivo=09-001809-20110907_555729-998-APERAK.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_555729-998-APERAK.EXE&log=1809/09-001809-20110907_555729-998-APERAK
/masteredi/bajar.asp?archivo=09-001809-20110907_555729-998-APERAK.ZIP
muestrac.asp?archivo=09-001809-20110907_555729-998-APERAK.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_555729-998-APERAK
muestra.asp?archivo=09-001809-20110907_556003-998-APERAK.log
/masteredi/bajar.asp?archivo=09-001809-20110907_556003-998-APERAK.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_556003-998-APERAK.EXE&log=1809/09-001809-20110907_556003-998-APERAK
/masteredi/bajar.asp?archivo=09-001809-20110907_556003-998-APERAK.ZIP
muestrac.asp?archivo=09-001809-20110907_556003-998-APERAK.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_556003-998-APERAK
muestra.asp?archivo=09-001809-20110907_556004-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=09-001809-20110907_556004-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_556004-001-ORD_COMPRA.EXE&log=1809/09-001809-20110907_556004-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=09-001809-20110907_556004-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=09-001809-20110907_556004-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_556004-001-ORD_COMPRA
muestra.asp?archivo=09-001809-20110907_556157-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=09-001809-20110907_556157-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_556157-001-ORD_COMPRA.EXE&log=1809/09-001809-20110907_556157-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=09-001809-20110907_556157-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=09-001809-20110907_556157-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_556157-001-ORD_COMPRA
muestra.asp?archivo=09-001809-20110907_556214-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=09-001809-20110907_556214-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_556214-001-ORD_COMPRA.EXE&log=1809/09-001809-20110907_556214-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=09-001809-20110907_556214-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=09-001809-20110907_556214-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_556214-001-ORD_COMPRA
muestra.asp?archivo=09-001809-20110907_556215-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=09-001809-20110907_556215-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110907_556215-001-ORD_COMPRA.EXE&log=1809/09-001809-20110907_556215-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=09-001809-20110907_556215-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=09-001809-20110907_556215-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/09-001809-20110907_556215-001-ORD_COMPRA
muestra.asp?archivo=16-001809-20110907_005072-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=16-001809-20110907_005072-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/16-001809-20110907_005072-001-ORD_COMPRA.EXE&log=1809/16-001809-20110907_005072-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=16-001809-20110907_005072-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=16-001809-20110907_005072-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/16-001809-20110907_005072-001-ORD_COMPRA
muestra.asp?archivo=28-001809-20110907_085078-997-CONTRL.log
/masteredi/bajar.asp?archivo=28-001809-20110907_085078-997-CONTRL.EXE
/masteredi/mail.asp?archivo=/data/1809/28-001809-20110907_085078-997-CONTRL.EXE&log=1809/28-001809-20110907_085078-997-CONTRL
/masteredi/bajar.asp?archivo=28-001809-20110907_085078-997-CONTRL.ZIP
muestrac.asp?archivo=28-001809-20110907_085078-997-CONTRL.inw
/masteredi/viejosconf.asp?archivo=1809/28-001809-20110907_085078-997-CONTRL
muestra.asp?archivo=28-001809-20110907_085084-001-ORD_COMPRA.log
/masteredi/bajar.asp?archivo=28-001809-20110907_085084-001-ORD_COMPRA.EXE
/masteredi/mail.asp?archivo=/data/1809/28-001809-20110907_085084-001-ORD_COMPRA.EXE&log=1809/28-001809-20110907_085084-001-ORD_COMPRA
/masteredi/bajar.asp?archivo=28-001809-20110907_085084-001-ORD_COMPRA.ZIP
muestrac.asp?archivo=28-001809-20110907_085084-001-ORD_COMPRA.inw
/masteredi/viejosconf.asp?archivo=1809/28-001809-20110907_085084-001-ORD_COMPRA
muestra.asp?archivo=09-001809-20110908_556258-998-APERAK.log
/masteredi/bajar.asp?archivo=09-001809-20110908_556258-998-APERAK.EXE
/masteredi/mail.asp?archivo=/data/1809/09-001809-20110908_556258-998-APERAK.EXE&log=1809/09-001809-20110908_556258-998-APERAK
/masteredi/bajar.asp?archivo=09-001809-20110908_556258-998-APERAK.ZIP
muestrac.asp?archivo=09-001809-20110908_556258-998-APERAK.inw

como ves hay links que no sirven, y por eso despues filtra solo los que terminan en ".exe" que son los que vos necesitas.

y listo, solo te queda ponerte a bajar cada archivo, lo podes hacer con WebClient o de varias formas.

saludos.
En línea

Dragonatak

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Descarga desde WebBrowser
« Respuesta #9 en: 4 Noviembre 2011, 03:47 am »


Muchas Gracias!!!! =D

Tenías razón te ahorraste un buen de código. Ahora solo me queda la duda con la descarga, WebClient nunca lo he utilizado, ya estoy investigandole para ver como funciona. Como me recomiendas que la haga????? o cual método crees que me sería mucho más efectivo para la descarga automática????

También ya me bajé el HTML Agility Pack, ahorita estoy con ello.

Nuevamente muchas gracias, ahorita voy a estar con lo de la descarga, en cuanto tenga algo, posteo. Nuevamente gracias, por favor espero puedas asesorarme nuevamente con la descarga, gracias.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines