用python写一个抽奖小程序_微信小程序抽奖助手一键参与抽奖

写在前头的话

最近“沉迷”于微信一款小程序,就是抽奖助手。反正这个抽奖几乎不用什么成本, 就是一个个抽奖活动点进去点击参与抽奖比较麻烦。要是如果有个程序一键解决这些步骤,那就是零成本了,哈哈哈。 话不多说,抓包走起。

Download

使用方法

运行LuckyNocode.exe,按照提示输入你的Authorization值即可。 程序会生成config文件,用于保存Authorization值。如果要修改该值,可删掉config文件。

注:下文会介绍如何获取该值。

抓包结果

注:不感兴趣的可以跳过这一部分

1. 获取每日福利抽奖列表

request header (仅列出必要项)

GET /public_lottery?page=1&size=5 HTTP/1.1

charset: utf-8

authorization: Bearer eyJhbGciOiJIUzI1太长省略...

Host: lucky.nocode.com

response body (经过gzip解压)

2. 获取自助福利抽奖列表

request header (仅列出必要项)

GET /square HTTP/1.1

authorization: Bearer eyJhbGciOiJIUzI1太长省略...

Host: lucky.nocode.com

response body (经过gzip解压)

3. 参与抽奖

request header (仅列出必要项)

POST /lottery/7FmTPqnan7k/join HTTP/1.1

authorization: Bearer eyJhbGciOiJIUzI1太长省略...

content-type: application/json

Host: lucky.nocode.com

注:url为 /lottery/欲参与的抽奖活动的id/join

requset body

{"form_id":"1534525352115"}

注:form_id应该是UNIX时间戳

response

HTTP/1.1 200 OK

Server: nginx

Date: Fri, 17 Aug 2018 17:02:33 GMT

Content-Type: application/json; charset=utf-8

Content-Length: 13

Connection: keep-alive

X-Powered-By: Express

Access-Control-Allow-Origin: *

ETag: W/"d-AZMLZIkhLL6zV6brmxWwd5pv3rs"

{"data":true}

注:响应结果中的data为true时,表示参与抽奖成功

python源码

注:同样,不感兴趣的可以跳过这一部分

# coding = utf-8

import requests

def JoinLotteries(url):

res = requests.get(url,headers=headers)

# 获得抽奖列表 table

table = res.json().get('data')

url = 'https://lucky.nocode.com/lottery/{id}/join'

for item in table:

if item.get('joined') == False:

res = requests.post(url.format(id=item.get('id')),headers=headers)

if res.status_code == 200 and res.json().get('data') == True:

print('成功参与抽奖:')

prizes = item.get('prizes').get('data')

for prize in prizes:

print(prize.get('name'))

def main():

headers['Authorization'] = input("请输入你的Authorization值:")

print('正在参与公共福利抽奖...')

JoinLotteries('https://lucky.nocode.com/public_lottery?page=1&size=5')

for i in range(100):

print('正在参与自助福利抽奖...')

JoinLotteries('https://lucky.nocode.com/square')

if __name__ == '__main__':

# 统一请求头

headers = {}

main()

抓包方式

由于微信小程序官方开发文档:HTTPS 证书

小程序必须使用 HTTPS 请求。小程序内会对服务器域名使用的 HTTPS 证书进行校验,如果校验失败,则请求不能成功发起。由于系统限制,不同平台对于证书要求的严格程度不同。为了保证小程序的兼容性,建议开发者按照最高标准进行证书配置,并使用相关工具检查现有证书是否符合要求。

所以请确保你所使用的抓包工具能捕获和解密手机的HTTPS数据包。 推荐使用Fiddler(PC),Authorization值:

注:以下教程仅适用于安卓手机。

1. 安装Packet Capture

2. 启动Packet Capture,Get Started->Continue->Install Certificate。

重命名证书名称,或者保持默认,然后点击确定

3. 点击顶部第一个按钮,然后在弹出的列表里选择微信

4. 不关闭Packet Capture,打开微信,进入抽奖助手小程序,然后再切换回去Packet Capture

第一步点击红色按钮暂停抓包(这一步并非必须做),第二步点击下面列表第一项。

5. 查找ip为1

06.75.214.244,port为443的数据包,然后点击进去

Wireshark捕获并解密HTTP数据包添加环境变量(控制面板->系统和安全->系统->高级系统设置->环境变量)SSLKEYLOGFILE,将其值设定为一个.log文件(路径和名称随意)打开Wireshark,选择一个网卡,进去之后,编辑->首选项->Protocols->SSL,点击最下面的Browse按钮,选择刚才配置环境变量时设定的log文件打开红芯(划掉)Chrome浏览器,或者是Firefox,随便上一个https的网站,如,https://www.baidu.com。

重启Wireshark,选择刚才那个网卡进入,刷新刚刚打开的网页,现在就可以看到解密后的数据包了。

Chrome/Firefox浏览器会根据上面配置的环境变量SSLKEYLOGFILE,在其对应的log文件里写入一些CLIENT_RANDOM开头的值,用于Wireshark来解密数据包。

以上方法的效果:使得Wireshark能捕获并解密来自Chrome或Firefox浏览器的HTTPS数据包。所以这样做,我们手机连接电脑热点也无法用Wireshark来捕获解密手机的HTTPS数据包。

工具推荐

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值