Recentemente, vi uma postagem de campanha no WeChat e fiz algumas pesquisas sobre ela quando não tinha nada para fazer. Descobri que essa atividade pode ser usada para escovar votos. Na verdade, a implementação desse tipo de código de rastreador é sempre um pequeno problema. O importante é que você precisa conhecer a lógica das páginas de outras pessoas. Como analisá-lo e rastreá-lo é a parte difícil.
Abra a página de votação do WeChat, abra a tela e você verá que "Esta página da web é fornecida por XXX" é exibida na parte superior da tela. Deve-se observar que "XXX" aqui não é "mp.weixin.qq. com", mas o nome de domínio do partido organizador do evento. Ou seja, o programa desta atividade de votação está rodando no servidor do S Mall. Isso envolve o conceito de OpenID da plataforma pública WeChat. A explicação oficial do OpenID é: após criptografar o ID do WeChat, cada usuário possui um OpenID exclusivo para cada conta oficial. Ou seja, um usuário possui um OpenId exclusivo para uma conta pública.
A lógica da votação é que o usuário fornecerá o OpenID do usuário no parâmetro POST ao fazer uma solicitação de votação após receber a solicitação POST de votação, o servidor pequeno pode bloquear um único usuário consultando se o OpenID atual votou dentro de 4 horas; . O ato de votar é repetido.
No entanto, há uma grande lacuna aqui!
S Mall só pode determinar se o OpenID está duplicado, mas não pode verificar a validade do OpenID porque não pode chamar o servidor WeChat para verificar o OpenID.
Então só precisamos gerar um OpenId que esteja em conformidade com o formato e enviar uma solicitação de postagem.
Mas uma votação também é estranha porque, na verdade, é feita em duas etapas. A primeira vez é uma solicitação get (a parte codificada na imagem é projetada para privacidade. Você só precisa saber que uma votação é concluída por meio de duas solicitações.
Quando vi o nome da primeira solicitação pensei que a solicitação estava concluída, mas ao utilizar um crawler para acessar essa interface não aumentou o número de votos. Após uma inspeção mais detalhada, descobri que havia outro pedido.
O caminho dessa solicitação é muito estranho, é uma sequência de caracteres distorcidos e sempre diferente. Depois de acionar apenas a primeira solicitação, nenhuma outra operação foi realizada neste momento, posso ter certeza que a votação é para obter alguns parâmetros gerados aleatoriamente por meio da primeira solicitação e, em seguida, trazer esses parâmetros com a segunda solicitação para garantir a legitimidade. da segunda solicitação, isso completa um processo de votação. Portanto, deve haver algum lugar na página da primeira solicitação que chame a segunda solicitação. Quando verifiquei o código-fonte neste momento, descobri que havia uma sequência de código como esta na página
Quando caracteres ilegíveis são encontrados na página, geralmente é porque o código foi criptografado.
Dois dos parâmetros são os caminhos da segunda solicitação. Pode-se observar que essa sequência de caracteres ilegíveis está relacionada à segunda solicitação, e a sequência de emoticons é a criptografia do código js. Embora não entendamos o que essa sequência de caracteres ilegíveis significa, podemos pressionar o ponto e vírgula (;) para formatar a sequência de caracteres ilegíveis e executá-la diretamente no console do Chrome. Descobrimos que o efeito dessa sequência de códigos emoji é. para executar a segunda solicitação. (Este local deve ser capaz de restaurar o código. Se você souber, poderá explicá-lo.)
Basicamente, isso é feito e o resto é implementação de código. Em geral, é acessar a primeira solicitação, usar expressões regulares para rastrear os parâmetros na página e usar os parâmetros como caminho da segunda solicitação para processar a segunda solicitação. . Acesso solicitado. Claro, também existe um proxy IP, com intervalos de tempo aleatórios para acesso. É melhor simular dinamicamente diferentes dispositivos. Ou seja, não explicaremos os problemas comuns de modificação do User-Agent se você tiver alguma dúvida sobre estes. , você pode enviar um e-mail.
Em geral, não é difícil implementar código em python. A dificuldade está em analisar passo a passo, dominar a lógica do site e tentar constantemente. Isso só será eficaz se você fizer mais