Red de conocimiento informático - Aprendizaje de código fuente - Ayuda para principiantes, cómo obtener enlaces generados por JavaScript

Ayuda para principiantes, cómo obtener enlaces generados por JavaScript

Método 1: implementar el intérprete de código fuente de JavaScript en JS

Si puede obtener el código fuente de JS del controlador onclick, puede implementar el intérprete de código fuente de JavaScript. En realidad, el intérprete de JS se inventó hace mucho tiempo. Implementado (necesita virtualizar un objeto de ventana global falso, ejecutar el contexto, acceder al árbol DOM proxy y finalmente interceptar solicitudes de apertura de ventana o declaraciones de asignación de posición).

¡El problema clave es que no se puede obtener el código fuente JS del controlador onclick! Solo puede obtener un objeto de función JS. Pero parece que el prototipo del objeto Function.ToString puede obtener el código fuente. (¿ToString parece poder obtener el código fuente del objeto Función? (Por probar)

Método 2: establezca una estructura de datos "esperada" específica, pero el módulo de red interceptará la solicitud bajo el Hood

Este método requiere modificaciones en el kernel y puede ser más fácil de implementar:

1. Al analizar el href='#' de un elemento de enlace, envíe un evento de clic virtual a. el elemento (en lugar de la interacción de la interfaz de usuario de usuarios reales),

2. Al mismo tiempo, envíe una estructura de datos esperada al módulo de red IPC de la capa de red: "Capture el siguiente árbitro para el Una solicitud web del documento principal de la URL actual, utilice esta URL de solicitud que me enviaron"

Parece que puede ocurrir una coincidencia incorrecta aquí, consulte la teoría de la información/teoría de codificación.

3. El controlador de clics del elemento de enlace se ejecutará normalmente y se activará una nueva solicitud de URL y, debido a la coincidencia esperada establecida previamente, la solicitud será capturada.

4. de la interfaz de usuario del navegador recibirá la nueva URL y realizará el siguiente paso de procesamiento