¿Cómo rastrear decenas de miles de datos de productos en teléfonos móviles de JD.com? ¿Este artefacto puede ayudarle?
Charles es una herramienta de captura de paquetes de red. Podemos usarla para realizar análisis de captura de paquetes de la aplicación y obtener todas las solicitudes y respuestas de la red que ocurren durante la ejecución de la aplicación. navegadores web. Los resultados vistos en la parte Red de la herramienta son consistentes.
En comparación con Fiddler, Charles tiene funciones más potentes y mejor soporte multiplataforma. Por lo tanto, elegimos a Charles como la principal herramienta de captura de paquetes móviles para analizar los paquetes de datos de la aplicación móvil y ayudar a completar el trabajo de captura de datos de la aplicación.
1. Objetivos de esta sección
En esta sección tomamos la aplicación JD.com como ejemplo, usamos Charles para capturar los paquetes de datos de la red durante la ejecución de la aplicación y luego vea los contenidos específicos de Solicitud y Respuesta. Utilice esto para comprender el uso de Charles.
2. Preparación
Asegúrese de que Charles se haya instalado correctamente y que el servicio de proxy esté habilitado. El teléfono móvil y Charles estén en la misma LAN, y que el proxy de Charles y el certificado CharlesCA. están configurados.
3. Principio
Primero, Charles se ejecuta en su propia PC. Cuando Charles se esté ejecutando, abrirá un servicio proxy en el puerto 8888 de la PC. Este servicio es en realidad un HTTP. /Agente HTTPS.
Asegúrese de que el teléfono móvil y la PC estén en la misma LAN. Podemos usar un simulador de teléfono móvil para conectarnos a través de una red virtual, o podemos usar un teléfono móvil y una PC reales para conectarnos a través de una red inalámbrica. red.
Configure el proxy del teléfono móvil en la dirección proxy de Charles, de modo que los paquetes de datos del teléfono móvil que accede a Internet fluyan a través de Charles, y Charles reenviará estos paquetes de datos al servidor real, y el Los paquetes de datos devueltos por el servidor serán reenviados por Charles. Para los teléfonos móviles, Charles actúa como intermediario y todos los paquetes de tráfico se pueden capturar, por lo que se pueden capturar todas las solicitudes y respuestas HTTP. Al mismo tiempo, Charles también tiene el poder de modificar solicitudes y respuestas.
4. Captura de paquetes
En el estado inicial, la interfaz de ejecución de Charles es como se muestra en la siguiente figura.
Charles siempre monitoreará los paquetes de datos de red generados por la PC y el teléfono móvil, y los paquetes de datos capturados se mostrarán a la izquierda. A medida que pasa el tiempo, se capturan más y más paquetes de datos. lista a la izquierda Habrá cada vez más contenido.
Como puede ver, el lado izquierdo de la imagen muestra el sitio de solicitud capturado por Charles. Podemos hacer clic en cualquier entrada para ver la información detallada de la solicitud correspondiente, incluida la Solicitud, la Respuesta y otros contenidos.
A continuación, borre los resultados de captura de Charles. Haga clic en el botón de la escoba a la izquierda para borrar todas las solicitudes capturadas actualmente. Luego haga clic en el segundo botón de escucha y asegúrese de que el botón de escucha esté activado. Esto significa que Charles está monitoreando el flujo de datos de la red de la aplicación, como se muestra en la siguiente figura.
En este momento, abra JD.com en su teléfono móvil. Asegúrese de configurar el proxy de Charles y configurar el certificado CA con anticipación; de lo contrario, no tendrá ningún efecto.
Abre cualquier producto, como iPhone, y luego abre su página de revisión de producto, como se muestra a continuación.
Abra y cargue comentarios continuamente y podrá ver que Charles capturó todas las solicitudes de red que ocurrieron en la aplicación JD.com durante este proceso, como se muestra en la siguiente figura.
Aparecerá un enlace api.m.jd.com en la lista de la izquierda y seguirá parpadeando. Es probable que Charles haya capturado la solicitud para obtener datos de comentarios enviada por la aplicación actual. . Hacemos clic para expandirlo y continuamos subiendo para actualizar los comentarios. A medida que avanza la extracción, los registros de solicitudes de red aparecerán aquí uno tras otro. La solicitud de nuevo paquete en este momento es definitivamente una solicitud para obtener comentarios.
Para comprobar su corrección hacemos clic para ver el detalle de una de las entradas. Cambie a la pestaña Contenido. En este momento, encontramos algunos datos JSON y verificamos los resultados. Los resultados tienen un campo commentData y su contenido es consistente con el contenido del comentario que vemos en la aplicación, como se muestra en la siguiente figura.
En este punto, se puede determinar que la interfaz correspondiente a esta solicitud es la interfaz para obtener reseñas de productos. De esta manera, capturamos con éxito el contenido de la solicitud y la respuesta que ocurrió durante el proceso de actualización pull-up.
5. Análisis
Ahora analiza los detalles de esta solicitud y respuesta. Primero, puede regresar a la pestaña Descripción general. La URL de la interfaz solicitada se muestra arriba, seguida del estado de la respuesta: Código de estado, método de solicitud, etc., como se muestra en la siguiente figura.
Este resultado es similar al resultado capturado originalmente en las herramientas de desarrollo del navegador en la Web.
A continuación, haga clic en la pestaña Contenido para ver los detalles de la solicitud y la respuesta.
La parte superior muestra la información de la Solicitud y la parte inferior muestra la información de la Respuesta.
Por ejemplo, para Reqeust, cambiamos a la pestaña Encabezados para ver la información de los encabezados de la Solicitud de respuesta, cambiamos a la pestaña TEXTO JSON para ver la información del cuerpo de la respuesta y el contenido se ha formateado, como se muestra a continuación. .
Dado que esta solicitud es una solicitud POST, también debemos preocuparnos por la información del formulario POST. Puede verla cambiando a la pestaña Formulario, como se muestra en la siguiente figura.
De esta manera, hemos capturado con éxito la solicitud y la respuesta de la interfaz de comentarios en la aplicación y podemos ver los datos JSON devueltos por la respuesta.
En cuanto a otras apps, también podemos utilizar este método para analizar. Si podemos analizar directamente el patrón de las URL y los parámetros solicitados, podemos utilizar directamente la simulación del programa para rastrear en lotes.
6. Reenviar
Charles también tiene una función poderosa que puede modificar la solicitud capturada y enviar la solicitud modificada. Haga clic en el botón modificar de arriba y habrá un enlace que comienza con el ícono de edición en la lista de la izquierda. Esto significa que estamos modificando la solicitud correspondiente a este enlace, como se muestra en la siguiente figura.
Podemos eliminar un campo en el formulario, por ejemplo, eliminar el campo de socio aquí y luego hacer clic en Eliminar. En este momento, hemos modificado los datos del formulario incluidos en la solicitud original y luego hacemos clic en el botón Ejecutar a continuación para ejecutar la solicitud modificada, como se muestra en la siguiente figura.
Puede encontrar que los resultados de la solicitud de la interfaz aparecen nuevamente en la lista de la izquierda y el contenido permanece sin cambios, como se muestra en la siguiente figura.
Eliminar el campo de socio en el formulario Formulario no tiene ningún impacto, por lo que este campo es irrelevante.
Con esta función, podemos usar Charles fácilmente para depurar. Podemos probar el estado de respuesta de diferentes solicitudes modificando parámetros, interfaces, etc., y podemos saber qué parámetros son necesarios y cuáles no. y cuáles son las reglas de los parámetros, y finalmente obtener la interfaz y el formulario de parámetros más simples para la llamada de simulación del programa.
7. Conclusión
El contenido anterior es el proceso de análisis de solicitudes de aplicaciones a través de la captura de paquetes de Charles. A través de Charles, capturamos con éxito los paquetes de datos de la red que fluyen a través de la aplicación y capturamos los datos originales. También pudimos modificar la solicitud original y reiniciar la solicitud modificada para probar la interfaz.
Ahora que conocemos la información específica de la solicitud y la respuesta, si podemos analizar el patrón de la URL solicitada y los parámetros, ¡podemos usar directamente la simulación del programa para rastrear en lotes!
Los rastreadores de teléfonos móviles son muy interesantes y hay muchos datos que se pueden rastrear. Por supuesto, todavía queda mucho que aprender. En el futuro, también escribiré algunos casos prácticos interesantes para todos.