前言

临时接到一个小需求,给活动刷票,简单研究了一下,做个总结。

目标地址

http://zt.hefei.cc/zt2021/ahsyhynddfbpx/pickdet.php?id=216221

网页效果

image.png

微信客户端打开如下:

image.png

简单分析

1.地址访问,重定向去到了微信鉴权oauth2.0,因此用的是微信用户openid作为投票依据,比如一天投几次之类。

2.网页访问不了,控制台也看不了,所以要想其他办法,我要看接口看请求!!

第一种 : Chrome浏览器模拟微信浏览器访问。(我试过了,不管用)
  • IOS

Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/5.4.1 NetType/WIFI

  • 安卓

Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36 MicroMessenger/6.0.0.54_r849063.501 NetType/WIFI

食用方法

  • 打开设置

image.png

  • 开始配置

image.png

  • 使用测试
    选择你刚命名的,然后输入微信网页端的地址

image.png

第二种: fiddler抓包,这个厉害了!

食用方法

  • 打开fiddler,微信PC端打开链接。

image.png

  • 找到点击投票,点击再查看下发送了什么请求

image.png

  • 简单分析

id是投票目标id,不需要改动,主要是一个openid参数

接口有了,传参也有了,header配置也有了,那么写个脚本试试???

  • 请求头

image.png

  • python代码

  • 主要py代码分析

替换请求地址、填写openid、配置header

image.png

openid是这个网页去微信公众号授权拿到的openid,oa2Bo1HCCJC_wPYw1gAz1wHm6CUE

name构造一些相似openid行不行??

  • 开搞

这里是一个生成构造openid的方法,我没有加到代码里面去。

# 生成指定位数的随机字符串,字符为字母或数字
def getRandomString(id_length):
    charSeq = string.ascii_letters + string.digits
    randString = 'oa2Bo1'
    for i in range(id_length):
        randString += random.choice(charSeq)
    return randString
openid = getRandomString(22)
  • 运行脚本

结果发现报错,提示用户授权信息错误,看来构造的openid不符合oauth2.0鉴权的openid!!

总结

该网页用的是oauth2.0鉴权生成的openid投票,暂时没有想到很好的办法绕过openid鉴权,此方法不适合该类型刷票,后续继续想想,今天到这里结束!

最后修改:2021 年 03 月 31 日 02 : 40 PM
如果觉得我的文章对你有用,请随意赞赏