大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
但凡可以使用接口直接进行抢票的,都是基于小程序安全系数较低的情况下
所有加密,使用的数据都写在接口里
奥体整个后台也进行了重构,这套代码也使用不了了
现在的加密方式,完全看不懂
例:
这种加密没源码,想破脑袋也激活成功教程不了的
原文:
所使用的模块:request和re
工具:pycharm和fiddler
微信小程序:苏州奥体
通过分析可得出订票总分为两步操作 1.选择场地 2.付款
所以只需要抓取到这两个接口就行
1.首先通过fiddler工具抓取到请求和参数
- 1.选择场地信息url信息
- url和请求参数
- 2.付款url信息
- url和请求参数
2.代码部分,编写脚本
- 选择场地代码
通过第一步操作,得到所需信息,使用request模块进行请求
// 选场地
changdi_url = "https://sapb.szosc.cn/index.php/wxplace/place/pay"
date = {
'price': '30',
'fieldtype': '羽毛球场地',
'homename': '体育馆名称',
'field': '11:00-12:00|2021-09-07 11:00:00|6|30,12:00-13:00|2021-09-07 12:00:00|6|30',
'openid': '自己的id',
'unionid': '自己的id',
'limit': '1.0000',
'agree': '1'
}
response = requests.post(url=changdi_url, data=date)
- 下图为返回值信息
2.使用re模块,对返回值进行截取,从而得到下一个url所需的信息
//获取返回值信息
response_text = response.text
//通过正则匹配对应值
outtradeno = re.findall('(name="outtradeno" value=")(.*)(" /)', response_text)[0][1]
ordtotal_fee = re.findall('(name="ordtotal_fee" value=")(.*)(" /)', response_text)[0][1]
homename = re.findall('(name="homename" value=")(.*)(" /)', response_text)[0][1]
fieldtype = re.findall('(name="fieldtype" value=")(.*)(" /)', response_text)[0][1]
fieldnum = re.findall('(name="fieldnum" value=")(.*)(" /)', response_text)[0][1]
starttime = re.findall('(name="starttime" value=")(.*)(" /)', response_text)[0][1]
bookinfo = re.findall('(name="bookinfo" value=")(.*)("/)', response_text)[0][1]
uid = re.findall('(name="uid" value=")(.*)("/)', response_text)[0][1]
paid = re.findall('(name="paid" value=")(.*)(" /)', response_text)[0][1]
limit = re.findall('(name="limit" value=")(.*)("/)', response_text)[0][1]
dttoken = re.findall('(name="dttoken" value=")(.*)("/)', response_text)[0][1]
yhq = re.findall('(name="yhq" value=")(.*)("/)', response_text)[0][1]
yhqid = re.findall('(name="yhqid" value=")(.*)("/)', response_text)[0][1]
payType = re.findall('(name="payType" value=")(.*)(" /)', response_text)[0][1]
vipCode = re.findall('(name="vipCode" value=")(.*)(" /)', response_text)[0][1]
outTradeNo = re.findall('(name="outTradeNo" value=")(.*)(" /)', response_text)[0][1]
totalFee = re.findall('(name="totalFee" value=")(.*)(" /)', response_text)[0][1]
balanceMethod = re.findall('(name="balanceMethod" value=")(.*)(" /)', response_text)[0][1]
cashAmount = re.findall('(name="cashAmount" value=")(.*)(" /)', response_text)[0][1]
- 其中有个值为sign,此值是通过加密所得,然后再传个下个接口
//加密方法
def md5_encrypt(code):
m = hashlib.md5()
m.update(code.encode("utf-8"))
sign = "123" + m.hexdigest()
return sign
//拼接原数据
sign_old = "wxopenid" + outtradeno + bookinfo + paid + "Sport2021"
//调用
sign = md5_encrypt(sign_old)
- 付款部分
//将第一步返回数据,放到付款接口的参数里面
pay_url = "https://sapb.szosc.cn/index.php/yinlian/index/pay"
data = {
'bookholder': '姓名',
'mobile': '电话',
"idno": '',
'outtradeno': outtradeno,
'ordtotal_fee': ordtotal_fee,
'homename': homename,
'fieldtype': fieldtype,
'wxopenid': wxopenid,
'unionid': unionid,
'fieldnum': fieldnum,
'starttime': starttime,
'bookinfo': bookinfo,
'uid': uid,
'paid': paid,
'limit': limit,
'dttoken': dttoken,
'yhq': yhq,
'yhqid': yhqid,
'sign': sign,
'payType': payType,
'vipCode': vipCode,
'outTradeNo': outTradeNo,
'totalFee': totalFee,
'balanceMethod': balanceMethod,
'cashAmount': cashAmount,
'groupName': '',
'merchantCode': '',
'groupVipId': ''
}
resp = requests.post(url=pay_url, data=data)
关注微信公众号「躺平de咸鱼」 回复关键字「抢票」领取源码
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193315.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...