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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  VB.NET redirect obtener todos los enlaces
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: VB.NET redirect obtener todos los enlaces  (Leído 2,429 veces)
PotatoWith

Desconectado Desconectado

Mensajes: 4


Ver Perfil
VB.NET redirect obtener todos los enlaces
« en: 10 Agosto 2019, 21:36 pm »

Hola que tal amigos espero que estén muy bien    ::)
Hoy me encuentro con un problema para mi ya que estoy tratando de chequear con VISUAL BASIC los enlaces(Links) por los cuales pasa mi Webbrowser después de enviar un formulario.
Al hacer click mi webbrowser pasa por un redireccionamiento de  3 enlaces ejemplo
Hago click en submit luego pasa esto  navega a  ( Google1.com .. redirecciona a Google2.com y termina en Google3.com ) .
No logro identificar el enlace Google2.com con el siguiente codigo


Código
  1. If WebBrowser1.Url.ToString.Contains("PARTE DE MI ENLACE WEB") Then
probando y probando solo esta validación puede recolectar   el inicio : Google1.com  y el final  Google3.com .

Pero el enlace Google2.com no lo logra detectar

Quisiera saber si existe alguna manera de como detectar 1 o todos los enlaces con una validacion parecida a esta



Desde ya muchas gracias  ;-)


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #1 en: 11 Agosto 2019, 13:12 pm »

Prueba añadiendo un controlador para el evento WebBrowser.Navigating...

Código
  1. Public Class Form1
  2.  
  3.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.        Dim urls As String() = {"google.co.jp", "google.co.uk", "google.es", "google.com"}
  5.        For Each url As String In urls
  6.            Me.WebBrowser1.Navigate(url)
  7.        Next
  8.    End Sub
  9.  
  10.    Private Sub WebBrowser1_Navigating(sender As Object, e As WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
  11.        Console.WriteLine($"Starting navigation: {e.Url}")
  12.        Me.ValidateUri(e.Url)
  13.    End Sub
  14.  
  15.    Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
  16.        Console.WriteLine($"Completed navigation: {e.Url}")
  17.    End Sub
  18.  
  19.    Private Sub ValidateUri(uri As Uri)
  20.        If uri.AbsoluteUri.Contains("PARTE DE MI ENLACE WEB") Then
  21.            ' ...
  22.        End If
  23.    End Sub
  24.  
  25. End Class



Saludos.


« Última modificación: 11 Agosto 2019, 13:22 pm por Eleкtro » En línea


PotatoWith

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #2 en: 11 Agosto 2019, 23:30 pm »

Hola Eleкtro el codigo funciona a la perfección ahora puedo detectar los redirect en mi webbrowser  :D
Con esta validacion + tu codigo!
Código
  1. If uri.AbsoluteUri.Contains("PARTE DE MI ENLACE WEB") Then

Lo unico malo, es que creo que esta validación  duplica o agarra 2 veces el enlance (Links) ya que me manda  2 MenssageBox  :xD no se si sera eso o algún desastre en mi código
Código
  1.        If uri.AbsoluteUri.Contains("PARTE DE MI ENLACE WEB") Then
  2. MessageBox.Show("Entrando a la web.")
  3.        End If

Aunque en la consola veo que se duplican muchas veces los enlaces(links) ni idea porque sera


Igual pasa con los Completed navigation: hasta 4 veces se duplican  :silbar:

Muchas gracias la verdad por tomarte tu tiempo para darme un buen ejemplo ! es digno de admirar  ;-)
En línea

@XSStringManolo
Pro Globalización && Antiglobalista
Colaborador
***
Desconectado Desconectado

Mensajes: 2.361


Turn off the red ligth


Ver Perfil WWW
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #3 en: 12 Agosto 2019, 00:37 am »

Tienes que esperar a que las páginas terminen de cargarse. https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.webbrowser.documentcompleted?redirectedfrom=MSDN&view=netframework-4.8
En línea

PotatoWith

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #4 en: 12 Agosto 2019, 01:05 am »

Hola string Manolo gracias por responder resulta que el código
Código
  1. If uri.AbsoluteUri.Contains("PARTE DE MI ENLACE WEB") Then
Siempre esta a la escucha eso esta bien por una parte y por otra no ya que como muestro en la imagen la pagina hay veces que carga el mismo link 3 o 4 veces



Cuando pasa mi link por este codigo
Código
  1. If uri.AbsoluteUri.Contains("PARTE DE MI ENLACE WEB") Then
Valida el
Código
  1. MessageBox.Show("Entrando a la web.")
3 o 4 tantas veces logre aparecer

Ya probe un WebBrowser.DocumentCompleted y sigue apareciendo muchas veces el link en mi consola
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.700



Ver Perfil
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #5 en: 12 Agosto 2019, 14:46 pm »

Según la documentación de Microsoft:

    WebBrowser.Navigating event:
        Occurs before the WebBrowser control navigates to a new document

    WebBrowser.Navigated event:
        Occurs when the WebBrowser control has navigated to a new document and has begun loading it.
        ...
        Handle the DocumentCompleted event to receive notification when the WebBrowser control finishes loading the new document.

    WebBrowser.DocumentCompleted event:
        Occurs when the WebBrowser control finishes loading a document
        ...
        Handle the DocumentCompleted event to receive notification when the new document finishes loading. When the DocumentCompleted event occurs, the new document is fully loaded

En resumen, el orden de desencadenamiento de eventos es el sigueinte:

1. WebBrowser.Navigating: cuando comienza la navegación a "X" url.
2. WebBrowser.Navigated: cuando comienza la carga del documento html en la página a navegar.
3. WebBrowser.DocumentCompleted: cuando finaliza la carga del documento html en la página a navegar.

Como no hay tiempo suficiente para que comience la carga del documento html en el ejemplo de código que compartí más arriba, el evento Navigating se dispara para todas las urls, mientras que el evento Navigated se dispara solamente para la última url como puedes comprobar en la imagen que compartí. Si quieres obtener la url de todas las redirecciones antes de que comience la carga del documento para validar/filtrar la url y poder cancelar la navegación o lo que pretendas hacer, entonces deberías seguir usando el evento Navigating como en el ejemplo de código que mostré.



Ya probe un WebBrowser.DocumentCompleted y sigue apareciendo muchas veces el link en mi consola

Para serte sincero, no tengo un gran domino en cosas relacionadas con la programación a nivel web, cosas de html y de páginas web en general, de hecho, de vez en cuando a mi también me surjen algunas dudas con ciertos aspectos del componente WebBrowser. Lo que puedo decirte es que el evento DocumentCompleted puede dispararse múltiples veces, ya que una página puede contener iframes que desencadenen el evento, pero por otro lado el evento Navigating y Navigated solamente debería dispararse una vez por cada url... ¿pero tu dices que no es así?.

De cualquier manera, siempre existe la solución rudimentaria de declarar una variable booleana para evitar, o mejor dicho ignorar múltiples desencadenamientos del mismo evento. Es decir, la primera vez que se dispare el evento DocumentCompleted, le asignarías un valor True a dicha variable, y si se vuelve a disparar el evento solo tienes que comprobar si el valor de la variable es True o False; de esta forma evitas la repetición de tu "validación de url" por así decirlo donde usas esa condicional para comprobar si la url contiene cierta cadena de texto.

Saludos.
« Última modificación: 12 Agosto 2019, 15:07 pm por Eleкtro » En línea


@XSStringManolo
Pro Globalización && Antiglobalista
Colaborador
***
Desconectado Desconectado

Mensajes: 2.361


Turn off the red ligth


Ver Perfil WWW
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #6 en: 12 Agosto 2019, 17:10 pm »

En el for se hace el navigating a todas las url. En tu caso son 4. Entonces te muestra los 4 about:blank, en la propia salida del programa te dice starting navigating. Empezó la navegación a las 4 url.
Si lo único que te molesta es que aparezca la salida del programa repetida, elimina la línea Console.WriteLine($"Starting navigation: {e.Url}")
Que es la que imprime los about:blank. Igual te interesa empezar la navegación a cada url una por una. En ese caso mete los strings en un array y cuando quieras llamas al siguiente. Por ejemplo cuando se termine de cargar el documento sumas +1 al índice del array y lo imprimes, asi automatizas el proceso y cada vez que se finalice el load del documento se pasará a pedir el siguiente. Usa el método de la clase array con .getupperbound() para obtener una variable índice con el número total de elementos.
Deberías hacerlo de esta forma si vas a manejar un gran número de dominios, porque si no dependiendo del número de dominios y la propia implementación del navigate podría darse el caso de ir acomulándose más page:blank y documentos cargándose de los que se liberan. También deberías procesar el documento cargado nada más finalice la descarga para poder eliminar el documento cargado de memoria cuanto antes. Así optimizas el uso de memoria del programa. Aunque si la aplicación no va a hacer mucha locura tipo descargar documentos de 400 dominios, y procesarlos heavy da un poco igual xD
En línea

PotatoWith

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: VB.NET redirect obtener todos los enlaces
« Respuesta #7 en: 12 Agosto 2019, 22:18 pm »

Hola a todos y gracias nuevamente por estar al tanto sobre mi problema..
Eleкtro si eso me di cuenta sobre Navigating  Navigated

Para las redirecciones me funciona perfecto : Navigating las coje todas sin perder ni 1  ;-)

También pude observar que es problema del sitio web , que al momento de hacer la redireccion  envía varias veces  el mismo url  de redireccion (Probe con otro sitio web y no pasa)

Como pudieron observar soy muy pero muy nuevo con el tema de vb.net pero finalmente para este sitio web le encontre una solucion (Muy penosa y Vaga la verdad  :-[ ) Por falta de mis conocimientos sobre este tema ..

Lo que hice fue detener la navegacion al momento de que mi Webbrowser llegara al url de reddireccion y ahora solamente me aparece 1 Solo MenssageBox
Código
  1. MessageBox.Show("Entrando a la web.")
Y solamente lo vuelvo a activar en otra parte de mi codigo mediante que el bucle hace su trabajo
Aca el codigo que use para que no aparecieran mas redirecciones

Código
  1.        If uri.AbsoluteUri.Contains("PARTE DE MI ENLACE WEB") Then
  2. MessageBox.Show("Entrando a la web.")
  3.                    WebBrowser1.AllowNavigation = False
  4.                    '' aca sigo con mas codigo para continuar el bucle y vuelvo a activar WebBrowser1.AllowNavigation = True
  5.        End If

Se que esta no es la mejor manera tal vez.. pero mientras valla adquiriendo mas conocimientos seguro que lo acomodare . Creo que seria bueno dejar este tema abierto para que otras personas puedan aportar soluciones sobre sitios web como este.. (Solo digo )  :P !

Muy agradecido por su soporte  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enlaces a todos los crackmes de nuestro foro
Ingeniería Inversa
karmany 2 2,538 Último mensaje 23 Febrero 2009, 18:52 pm
por Amerikano|Cls
aplicar esto a todos los enlaces y no poner esta linea uno por uno
Desarrollo Web
javierr 4 1,940 Último mensaje 20 Marzo 2011, 00:35 am
por Nakp
Como modificar todos los enlaces hacia webs externas en mi web « 1 2 3 »
Desarrollo Web
motocros_elche 20 8,097 Último mensaje 15 Junio 2011, 14:14 pm
por motocros_elche
Programa para obtener enlaces de descarga de series « 1 2 3 4 »
Software
HacksuCristo 30 7,307 Último mensaje 16 Octubre 2013, 14:46 pm
por JazzUCristo
Como sacar todos los enlaces de una web
Hacking
Carrerakiller 8 4,516 Último mensaje 9 Junio 2016, 19:56 pm
por Carrerakiller
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines