Недавно я увидел агитационную публикацию в WeChat и провел небольшое исследование, когда мне было нечего делать, и я обнаружил, что это действие можно использовать для сбора голосов. Я кратко запишу процесс написания сценария для сбора голосов. На самом деле, реализация такого кода сканера всегда представляет собой небольшую проблему. Важно то, что вам нужно знать логику страниц других людей. Как ее анализировать и сканировать, это самая сложная часть.
Откройте страницу голосования WeChat, потяните экран вниз, и вы увидите, что в верхней части экрана отображается надпись «Эта веб-страница предоставлена XXX». Следует отметить, что «XXX» здесь не является «mp.weixin.qq». com», а доменное имя Стороны-организатора мероприятия. Другими словами, программа для голосования работает на сервере S Mall. Это включает в себя концепцию OpenID общедоступной платформы WeChat. Официальное объяснение OpenID таково: после шифрования идентификатора WeChat каждый пользователь получает уникальный OpenID для каждой официальной учетной записи. То есть у пользователя есть уникальный OpenId для общедоступной учетной записи.
Логика голосования заключается в том, что пользователь предоставляет OpenID пользователя в параметре POST при отправке запроса на голосование; после получения POST-запроса на голосование сервер малого торгового центра может заблокировать одного пользователя, запросив, проголосовал ли текущий OpenID в течение 4 часов. Акт голосования повторяется.
Однако здесь есть большая лазейка!
S Mall может только определить, дублируется ли OpenID, но не может проверить достоверность OpenID, поскольку не может вызвать сервер WeChat для проверки OpenID.
Затем нам нужно только сгенерировать OpenId, соответствующий формату, и отправить почтовый запрос.
Но одно голосование также является странным, поскольку на самом деле оно проводится в два этапа. Первый раз — это get-запрос (закодированная часть на картинке предназначена для конфиденциальности. Вам нужно только знать, что одно голосование завершается через два запроса.
Когда я увидел название первого запроса, то подумал, что запрос выполнен, но при использовании краулера для доступа к этому интерфейсу количество голосов не увеличилось. Присмотревшись, я обнаружил, что был еще один запрос.
Путь этого запроса очень странный, это строка искаженных символов, и каждый раз она разная. После запуска только первого запроса никакие другие операции не выполнялись. На данный момент я могу быть уверен, что голосование состоит в том, чтобы получить некоторые случайно сгенерированные параметры с помощью первого запроса, а затем передать эти параметры со вторым запросом, чтобы обеспечить легитимность. второго запроса, на этом процесс голосования завершается. Поэтому где-то на странице первого запроса должно быть место, вызывающее второй запрос. Когда я в это время проверил исходный код, я обнаружил, что на странице была такая строка кода
Если на странице обнаруживаются искаженные символы, это часто происходит из-за того, что код был зашифрован.
Два параметра — это пути второго запроса. Видно, что эта строка искаженных символов связана со вторым запросом, а строка смайлов — это шифрование js-кода. Хотя мы не понимаем, что означает эта строка искаженных символов, мы можем нажать точку с запятой (;), чтобы отформатировать строку искаженных символов, и запустить ее непосредственно в консоли Chrome. Мы обнаруживаем, что эффект этой строки кодов эмодзи заключается в следующем. выполнить второй запрос. (Это место должно иметь возможность восстановить код. Если вы его знаете, вы можете это объяснить.)
В основном это сделано, а остальное — реализация кода. В общем, это доступ к первому запросу, использование регулярных выражений для сканирования параметров на странице и использование параметров в качестве пути второго запроса для обработки второго запроса. . Запрошен доступ. Конечно, есть и IP-прокси со случайными временными интервалами доступа. Лучше всего динамически моделировать разные устройства. То есть мы не будем объяснять общие проблемы модификации User-Agent, если у вас есть какие-либо вопросы по этому поводу. , вы можете отправить электронное письмо.
В целом реализовать код на Python несложно. Сложность заключается в пошаговом анализе, освоении логики сайта и постоянных попытках. Это будет эффективно, только если вы будете делать это чаще.