Recientemente vi una publicación de sondeo de WeChat e investigué un poco cuando no tenía nada que hacer y descubrí que esta actividad se puede utilizar para cepillar votos. Registraré brevemente el proceso de escritura de un guión para cepillar votos. De hecho, la implementación de este tipo de código de rastreo siempre es un pequeño problema. Lo importante es que es necesario conocer la lógica de las páginas de otras personas. Cómo analizarlas y rastrearlas es la parte difícil.
Abra la página de votación de WeChat, abra la pantalla y encontrará que "Esta página web es proporcionada por XXX" se muestra en la parte superior de la pantalla. Cabe señalar que "XXX" aquí no es "mp.weixin.qq. com", sino el nombre de dominio de la Parte organizadora del evento. En otras palabras, el programa para esta actividad de votación se ejecuta en el servidor de S Mall. Esto implica el concepto de OpenID de la plataforma pública WeChat. La explicación oficial de OpenID es: después de cifrar el ID de WeChat, cada usuario tiene un OpenID único para cada cuenta oficial. Es decir, un usuario tiene un OpenId único para una cuenta pública.
La lógica de la votación es que el usuario proporcionará el OpenID del usuario en el parámetro POST al realizar una solicitud de votación. Después de recibir la solicitud POST de votación, el servidor pequeño puede bloquear a un solo usuario consultando si el OpenID actual ha votado dentro de las 4 horas; Se repite el acto de votar.
Sin embargo, ¡aquí hay un gran vacío legal!
S Mall solo puede determinar si el OpenID está duplicado, pero no puede verificar la validez del OpenID porque no puede llamar al servidor WeChat para verificar el OpenID.
Luego solo necesitamos generar un OpenId que se ajuste al formato y enviar una solicitud de publicación.
Pero un voto también es extraño porque en realidad se realiza en dos pasos. La primera vez es una solicitud de obtención (la parte codificada en la imagen está diseñada para brindar privacidad. Solo necesita saber que un voto se completa a través de dos solicitudes.
Cuando vi el nombre de la primera solicitud, pensé que la solicitud se había completado, pero cuando usé un rastreador para acceder a esta interfaz, no aumentó el número de votos. Tras una inspección más cercana, descubrí que había otra solicitud.
La ruta de esta solicitud es muy extraña, es una cadena de caracteres confusos y es diferente cada vez. Después de activar solo la primera solicitud, no se realizaron otras operaciones. En este momento, puedo estar seguro de que una votación es para obtener algunos parámetros generados aleatoriamente a través de la primera solicitud y luego traer estos parámetros con la segunda solicitud para garantizar la legitimidad. de la segunda solicitud, esto completa un proceso de votación. Por lo tanto, debe haber algún lugar en la página de la primera solicitud que llame a la segunda solicitud. Cuando revisé el código fuente en este momento, encontré que había una cadena de código como esta en la página.
Cuando se encuentran caracteres confusos en la página, a menudo se debe a que el código ha sido cifrado.
Dos de los parámetros son las rutas de la segunda solicitud. Se puede ver que esta cadena de caracteres confusos está relacionada con la segunda solicitud, y la cadena de emoticones es el cifrado del código js. Aunque no entendemos qué significa esta cadena de caracteres confusos, podemos presionar el punto y coma (;) para formatear la cadena de caracteres confusos y ejecutarla directamente en la consola de Chrome. Descubrimos que el efecto de esta cadena de códigos emoji es. para ejecutar la segunda solicitud. (Este lugar debería poder restaurar el código. Si lo conoce, puede explicarlo).
Básicamente, esto se hace, y el resto es implementación del código. En general, es acceder a la primera solicitud, usar expresiones regulares para rastrear los parámetros en la página y usar los parámetros como la ruta de la segunda solicitud para procesar la segunda solicitud. Acceso solicitado. Por supuesto, también hay un proxy IP, con intervalos de tiempo aleatorios para el acceso. Es mejor simular dinámicamente diferentes dispositivos. Es decir, no explicaremos los problemas comunes de modificar el User-Agent. , puedes enviar un correo electrónico.
En general, no es difícil implementar código usando Python. La dificultad radica en analizar paso a paso, dominar la lógica del sitio web y probarlo constantemente. Esto sólo será efectivo si lo haces más