現段階では、WeChat モーメントでは際限なく投票活動が行われており、多くの学生はすでにこれに悩まされていると思います。なぜなら、人々 (親戚、友人など) が時々現れて投票を求めるからです。
この記事はこの問題を道徳的または感情的なレベルから探求するつもりはありません。私が興味を持っているのは、現在のほとんどの投票活動には実際には明らかな抜け穴があり、「投票操作」は単純な技術的手段によって達成できるということです。
ここに一例を示します。
オンライン美容モール(以下、S Mall)は、WeChat プラットフォーム上でオンライン投票イベントを開催しました。WeChat ユーザーは、イベント リンクから投票ページにアクセスし、お気に入りのヘアスタイリストの作品に投票することができます。 1つの作品に1票。
投票活動ページは以下のとおりです。
WeChat ユーザーは 1 日あたり 1 回の投票のみに制限されているため、表面上は S Mall はすでに投票活動に対する不正行為防止措置を講じています。ユーザーが通常通り WeChat を通じてこの投票サービスにアクセスして投票すれば、確かに望ましい効果が得られます。
ただし、投票ページの元のアドレスを表示すると、つまりページを長押しして下にドラッグすると、画面上部に「このWebページは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
が重複しているかどうかを判断することしかできませんが、WeChat サーバーを呼び出してOpenID
確認することができないため、 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 セントパーティー」について聞いたことがありますか?
ただし、イベント主催者は何らかの手段を使用して、不正行為の基準を大幅に引き上げることができます。たとえば、現在のアクティビティの多くは次の方法を使用しています。
この 2 つの方法のどちらを使用しても、この記事の「投票ブラッシング」方法はまったく効果がありません。