1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/DT4XYh若失效,可用地址
阿里云:
服务器购买地址
https://t.aliyun.com/U/DT4XYh若失效,可用地址
https://www.aliyun.com/activity/wuying/dj?source=5176.29345612&userCode=49hts92d腾讯云:
https://curl.qcloud.com/wJpWmSfU若失效,可用地址
https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console华为云
https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=2019052.部署教程
3.代码如下
import requestsfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import padimport binasciidef encrypt_password(password, key_hex="4b316e67626173654032303234303031"):key = binascii.unhexlify(key_hex)cipher = AES.new(key, AES.MODE_ECB)padded_data = pad(password.encode('utf-8'), AES.block_size)encrypted = cipher.encrypt(padded_data)return encrypted.hex()username = input('请输入用户名:')passwd = input("请输入密码:")passwd = encrypt_password(passwd)print(username,passwd)url1 = 'https://bbs.kingbase.com.cn/web-api/web/system/user/loginWeb'data1 = {"username": username,"password": passwd,"code": None,"loginMethod": "account","phoneNumber": None,"email": None}headers1 = {"accept": "application/json, text/plain, */*","accept-encoding": "gzip, deflate, br","accept-language": "zh-CN","content-type": "application/json;charset=UTF-8","origin": "https://bbs.kingbase.com.cn","referer": "https://bbs.kingbase.com.cn/login","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0"}session = requests.session()response = session.post(url=url1, headers=headers1, json=data1)response.encoding = 'utf-8'# print(response.status_code)if response.status_code != 200:print("检测网络")else:msg = response.json()['msg']print("网络连接成功,签到{}".format(msg))# print(response.text)token = response.json()['data']url2 = 'https://bbs.kingbase.com.cn/web-api/web/system/user/getCurrRankInfo'header2 = {"accept": "application/json, text/plain, */*","authorization": f"Bearer {token}", # 必须添加的认证头"referer": "https://bbs.kingbase.com.cn/vipcenter","user-agent": headers1["user-agent"]}response2 = session.get(url=url2, headers=header2, timeout=10)# print(response2.text)username = response2.json()['data']['userName']experience = response2.json()['data']['experience']userLevelDesc = response2.json()['data']['userLevelDesc']integral = response2.json()['data']['integral']print("账户{},经验{},等级{}".format(username,experience, userLevelDesc))url3 = 'https://bbs.kingbase.com.cn/web-api/web/system/user/getSignData'response3 = session.get(url=url3, headers=header2.copy(), timeout=10)# print(response3.text)signTimes = response3.json()['data']['signTimes']changeIntegral = response3.json()['data']['changeIntegral']print("签到第{}天, 积分+{}, 总积分{}".format(signTimes,changeIntegral,integral))
该脚本为金仓社区自动签到脚本,主要作用包括:
面向 金仓社区(Kingbase) 的登录 + 查询签到信息脚本。
运行后让用户输入用户名与密码,先按站点要求对密码做 AES 加密,再调用登录接口取得 Bearer Token,随后查询并打印:
账户昵称、经验值、等级描述;
当日签到数据:连续签到天数、当日获得积分、账户总积分等。
主要方法
1) encrypt_password(password, key_hex=...)
用固定 16 字节密钥(
key_hex)将明文密码做 AES-ECB 加密,并进行 PKCS7 padding,最后返回 十六进制字符串。目的:按目标站点登录接口的加密规则生成提交密码。
2) 交互输入与加密
通过
input()获取username、passwd,调用encrypt_password得到加密后的密码并打印调试信息。
3) 登录(POST /web-api/web/system/user/loginWeb)
构造
data1(包含用户名、加密后密码、登录方式等)与浏览器头headers1,使用requests.session()发起请求。成功(HTTP 200)后从响应里读取
data字段作为token(Bearer Token)。
4) 获取用户等级信息
(GET /web-api/web/system/user/getCurrRankInfo)
在请求头加入
Authorization: Bearer <token>。解析返回的
userName、experience、userLevelDesc、integral并打印。
5) 获取签到数据(GET /web-api/web/system/user/getSignData)
同样带上 Bearer 头;读取并打印:
signTimes(签到第几天/连续天数)changeIntegral(今日增加积分)integral(总积分,结合上一接口)
备注
使用 AES-ECB 与硬编码密钥仅为匹配目标站点协议,不适合作为通用安全做法。
需要安装
pycryptodome(Crypto模块)与requests。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论