На этом этапе в WeChat Moments проводятся бесконечные голосования. Думаю, многих студентов это уже раздражает, потому что время от времени люди (родственники, друзья или кто-то еще) будут появляться и просить вас проголосовать за них.
Эта статья не преследует цели исследовать этот вопрос с морального или эмоционального уровня. Меня интересует то, что большинство нынешних избирательных действий на самом деле имеют очевидные лазейки, и «манипулирование голосами» может быть достигнуто с помощью простых технических средств.
Вот пример.
Онлайн-парикмахерский центр (далее — S Mall) провел онлайн-голосование на платформе WeChat. Пользователи WeChat могут получить доступ к странице голосования по ссылке на мероприятие, чтобы проголосовать за работы своих любимых парикмахеров. Каждая учетная запись WeChat может голосовать только за Cast; 1 голос за одну работу.
Страница голосования показана ниже:
На первый взгляд, S Mall уже принял меры по борьбе с мошенничеством при голосовании, поскольку каждый пользователь WeChat имеет право голосовать только один раз в день. Если пользователи обычно получают доступ к этой службе голосования через WeChat для голосования, это действительно будет иметь желаемый эффект.
Однако, если вы просмотрите исходный адрес страницы голосования, то есть удержите страницу и перетащите ее вниз, вы обнаружите, что в верхней части экрана отображается «Эта веб-страница предоставлена XXX». Следует отметить. что «XXX» здесь — это не «mp.weixin.qq.com», а доменное имя S Mall. Другими словами, программа для голосования работает на сервере S Mall.
На основе приведенного выше анализа можно сделать вывод, что схема топологии сети операций голосования пользователей должна быть следующей:
Когда пользователь WeChat получает доступ к странице голосования, сервер WeChat только пересылает запрос, а конкретный подсчет голосов и проверка выполняются на сервере S Mall.
Итак, как же S Mall различает голосующих пользователей?
Это предполагает концепцию общедоступной платформы WeChat OpenID
. Официальное объяснение OpenID
таково: после шифрования WeChat ID OpenID каждого пользователя для каждой официальной учетной записи уникален.
Это легко проверить. Вам нужно всего лишь использовать несколько учетных записей WeChat для голосования, захватывать сетевые пакеты во время процесса голосования и проверять параметры в POST для подтверждения.
Исходя из этого, общедоступная платформа WeChat будет включать OpenID
пользователя в параметр POST при пересылке запроса на голосование; после того, как S Mall получит запрос POST для голосования, он может предотвратить однократное голосование, запрашивая, проголосовал ли текущий OpenID
в этот день. Пользователь голосовал повторно.
Однако здесь есть большая лазейка!
S Mall может только определить, дублируется ли OpenID
, но не может проверить достоверность OpenID
поскольку не может вызвать сервер WeChat для проверки OpenID
.
После выяснения этой лазейки добиться чистки билетов очень просто.
OpenID
и повторите запрос POST.Если вы хотите реализовать пакетную очистку билетов или автоматические операции очистки билетов, вы можете реализовать запросы на очистку билетов с помощью скриптов Python и даже использовать LoadRunner;
Запустите VoteRobot.py
, выходной журнал будет выглядеть следующим образом:
======== Start to vote zpid(38), Total votes: 3
1 tickets has been voted, the next ticket will be voted after 35 seconds.
2 tickets has been voted, the next ticket will be voted after 31 seconds.
3 tickets has been voted, the next ticket will be voted after 10 seconds.
======== Voting Ended!
Следует отметить, что обычно при автоматизации очистки билетов лучше всего использовать случайный интервал времени, а также лучше всего динамически моделировать различные устройства, то есть изменять User-Agent
. В противном случае сервер может легко выявить мошенническое поведение.
Увидев это, некоторые студенты могут тайно порадоваться. Можно ли использовать этот метод для «перехвата голосов» в будущих голосованиях?
К сожалению, конечно нет.
На самом деле, лазейки в случае, описанном в этой статье, очень низкого уровня. Однако все еще существует значительная часть избирательных действий, использующих эту модель.
Также легко определить, можно ли таким образом обмануть избирательную кампанию. Используя метод, описанный в этой статье, если URL-адрес мероприятия не является официальным WeChat и в течение всего процесса голосования нет дополнительной проверки, то вероятность мошенничества очень высока, а затем перехватите пакет, чтобы увидеть процесс взаимодействия; и используйте После изменения параметров инструмента сетевого запроса и повторного запроса вы можете проверить, действительно ли возможен обман.
Кроме того, некоторые люди могут задаться вопросом, невозможно ли предотвратить «манипулирование голосами» при онлайн-голосовании?
Ответ в том, что полностью устранить его действительно сложно. Вы когда-нибудь слышали о скальпере 12306? Слышали ли вы когда-нибудь о профессиональном рейтинге приложений в Apple Store? Слышали ли вы когда-нибудь об «интернет-троллях» и «Партии 50 Cent»?
Однако организаторы мероприятий могут использовать некоторые способы, чтобы значительно повысить порог мошенничества. Например, во многих текущих мероприятиях используются следующие методы:
Независимо от того, какой из этих двух методов используется, метод «чистки голосов», описанный в этой статье, совершенно неэффективен.