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=201905
2.部署教程
3.代码如下
import requests
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import binascii
def 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
。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论