Récemment, j'ai vu un article de démarchage sur WeChat et j'ai fait quelques recherches à ce sujet alors que je n'avais rien à faire. J'ai découvert que cette activité peut être utilisée pour brosser les votes. Je vais brièvement enregistrer le processus d'écriture d'un script pour brosser les votes. En fait, l'implémentation de ce type de code de robot d'exploration est toujours un petit problème. L'important est que vous ayez besoin de connaître la logique des pages des autres. Comment l'analyser et l'explorer est la partie la plus difficile.
Ouvrez la page de vote WeChat, déroulez l'écran et vous constaterez que « Cette page Web est fournie par XXX » s'affiche en haut de l'écran. Il convient de noter que « XXX » ici n'est pas « mp.weixin.qq. com", mais le nom de domaine de l'organisateur de l'événement Party. En d’autres termes, le programme de cette activité de vote s’exécute sur le serveur de S Mall. Cela implique le concept d'OpenID sur la plateforme publique WeChat. L'explication officielle d'OpenID est la suivante : après avoir crypté l'ID WeChat, chaque utilisateur dispose d'un OpenID unique pour chaque compte public. Autrement dit, un utilisateur dispose d'un OpenId unique pour un compte public.
La logique du vote est que l'utilisateur fournira l'OpenID de l'utilisateur dans le paramètre POST lors d'une demande de vote ; après avoir reçu la demande de vote POST, le serveur Small peut bloquer un seul utilisateur en demandant si l'OpenID actuel a voté dans les 4 heures. . L'acte de voter est répété.
Cependant, il y a ici une grosse lacune !
S Mall peut uniquement déterminer si l'OpenID est dupliqué, mais il ne peut pas vérifier la validité de l'OpenID car il ne peut pas appeler le serveur WeChat pour vérifier l'OpenID.
Ensuite, il suffit de générer un OpenId conforme au format et d'envoyer une demande de publication.
Mais un vote est également étrange dans la mesure où il se déroule en fait en deux étapes. La première fois est une demande d'obtention (la partie codée dans l'image est conçue pour la confidentialité. Vous devez seulement savoir qu'un vote est complété par deux demandes.
Quand j'ai vu le nom de la première requête, j'ai pensé que la requête était terminée, mais en utilisant un robot pour accéder à cette interface, cela n'a pas augmenté le nombre de votes. En y regardant de plus près, j'ai découvert qu'il y avait une autre demande.
Le chemin de cette requête est très étrange, c'est une chaîne de caractères tronqués, et il est différent à chaque fois. Après avoir déclenché uniquement la première demande, aucune autre opération n'a été effectuée pour le moment, je peux être sûr qu'un vote consiste à obtenir des paramètres générés aléatoirement via la première demande, puis à apporter ces paramètres avec la deuxième demande pour garantir la légitimité. de la deuxième demande, cela termine un processus de vote. Il doit donc y avoir quelque part dans la page de la première requête qui appelle la deuxième requête. Lorsque j'ai vérifié le code source à ce moment-là, j'ai découvert qu'il y avait une chaîne de code comme celle-ci dans la page
Lorsque des caractères tronqués apparaissent sur la page, c'est souvent parce que le code a été crypté.
Deux des paramètres sont les chemins de la deuxième requête. On peut voir que cette chaîne de caractères tronqués est liée à la deuxième requête, et la chaîne d'émoticônes est le cryptage du code js. Bien que nous ne comprenions pas ce que signifie cette chaîne de caractères tronqués, nous pouvons appuyer sur le point-virgule (;) pour formater la chaîne de caractères tronqués et l'exécuter directement dans la console Chrome. Nous constatons que l'effet de cette chaîne de codes emoji est. pour exécuter la deuxième requête. (Cet endroit devrait pouvoir restaurer le code. Si vous le connaissez, vous pouvez l'expliquer.)
Ceci est essentiellement fait, et le reste est l'implémentation du code. En général, il s'agit d'accéder à la première requête, d'utiliser des règles régulières pour explorer les paramètres dans la page et d'utiliser les paramètres comme chemin de la deuxième requête pour traiter la deuxième requête. . Accès demandé. Bien sûr, il existe également un proxy IP, avec des intervalles de temps d'accès aléatoires. Il est préférable de simuler dynamiquement différents appareils. Autrement dit, nous n'expliquerons pas les problèmes courants liés à la modification de l'agent utilisateur. , vous pouvez envoyer un email.
En général, il n'est pas difficile d'implémenter du code en utilisant Python. La difficulté réside dans l'analyse étape par étape, la maîtrise de la logique du site Web et la nécessité d'essayer constamment. Cela ne sera efficace que si vous le faites davantage