1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/Bg6shY若失效,可用地址
阿里云:
服务器购买地址
https://t.aliyun.com/U/Bg6shY若失效,可用地址
https://www.aliyun.com/daily-act/ecs/activity_selection?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.代码如下
# cron: 20 8 * * *import requestsimport re,timeimport os,sysfrom notify import senddef pr(message):msg.append(message + "\n" )print(message)msg = []s = requests.session()def get_logn(name, password): #登录url = "https://www.txrjy.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes"header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Content-Type": "application/x-www-form-urlencoded","Content-Length": "","Cache-Control": "max-age=0","sec-ch-ua": "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","Origin": "https://www.txrjy.com","Referer": "https://www.txrjy.com/forum.php","Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",}data = {"username": name,"password": password,"quickforward": "yes","handlekey": "ls"}response = s.post(url=url,headers=header,data=data)info = response.textif "登录失败" in info:pr("登录失败")else:pr("登陆成功")cookie = response.cookiesindex(cookie)def index(cookie): #我的信息url = "https://www.txrjy.com/home.php?mod=spacecp&ac=credit&showcredit=1"header = {"Host": "www.txrjy.com","Connection": "keep-alive","Cache-Control": "max-age=0","sec-ch-ua": "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Sec-Fetch-Site": "same-origin","Sec-Fetch-Mode": "navigate","Sec-Fetch-User": "?1","Sec-Fetch-Dest": "document","Referer": "https://www.txrjy.com/forum.php",}response = s.get(url=url,headers=header,cookies=cookie)info = response.texttime.sleep(3)pattern = re.compile(r'<em> 家园分:</em>(.*?) </li>')pattern1 = re.compile(r'<li><em> 经验:</em>(.*?) </li>')pattern2 = re.compile(r'<em>积分:</em>(.*?) <span class="xg1">')pattern3 = re.compile(r'title="访问我的空间">(.*?)</a></strong>')matches = pattern.findall(info)matches1 = pattern1.findall(info)matches2 = pattern2.findall(info)matches3 = pattern3.findall(info)if not matches or not matches1 or not matches2 or not matches3:pr("解析用户信息失败,可能页面结构变化或 cookie 无效")returnpr(f"用户名: {matches3[0]} 积分: {matches2[0]} 经验: {matches1[0]} 家园分: {matches[0]}")def sicxs():config_path = 'config.py'if os.path.exists(config_path):import configelse:with open(config_path, 'w') as f:pr("首次运行,已创建配置文件 config.py,请按照说明填写相关变量后再次运行脚本。")f.write('#可以在此文件中添加配置变量,例如:\nsfsy = ""\n')try:env_cookie = os.environ.get("wy_txrjy")si_cookie = getattr(config, 'wy_txrjy', '')if env_cookie and si_cookie:cookies = env_cookie + "\n" + si_cookieelif env_cookie:cookies = env_cookieelif si_cookie:cookies = si_cookieelse:pr("请设置变量 export wy_txrjy='' 或在 config.py 中设置 wy_txrjy =")sys.exit()except Exception as e:pr("请设置变量 export wy_txrjy='' 或在 config.py 中设置 wy_txrjy =")sys.exit()list_cookie = [c for c in re.split(r'\n|&', cookies) if c.strip()]total_cookies = len(list_cookie)for i, list_cookie_i in enumerate(list_cookie):try:print(f'\n----------- 账号【{i + 1}/{total_cookies}】执行 -----------')pr(f"账号【{i + 1}】开始执行:")list = list_cookie_i.split("#")get_logn(list[0], list[1])except Exception as e:print(f"账号【{i + 1}/{total_cookies}】执行出错:账号密码错误,或者账号被封禁,请检查后重试!")finally:send("通信人家园", ''.join(msg))msg.clear()print(f'\n----------- 执 行 结 束 -----------')if __name__ == '__main__':sicxs()
主要作用
从环境变量 / config 中读取多个
账号#密码,逐个登录「通信人家园」。登录成功后访问积分页面,抓取并展示当前用户名、积分、经验、家园分等信息。
每个账号执行完通过
notify.send推送执行结果日志。
pr(message)日志工具:打印到控制台并追加到全局
msg,方便最后统一推送。get_logn(name, password)使用账号密码向登录接口发起 POST 请求。
如果响应中不含"登录失败",视为登录成功,打印提示,并将返回的
cookies传给index。登录失败则输出提示。
index(cookie)家园分
经验
积分
用户名
携带登录 Cookie 请求积分中心页面。
用正则提取:
解析成功则打印汇总信息;解析失败提示可能是页面变动或 Cookie 无效。
sicxs()检查 / 创建
config.py。从环境变量
wy_txrjy和config.wy_txrjy合并获取配置,按换行或&分割出多账号。循环每个账号:
输出账号序号和开始执行提示。
拆分
账号#密码调用get_logn。无论成功失败,调用
send("通信人家园", ''.join(msg))推送当前账号日志,然后清空msg。主调度函数:
全部执行完打印结束标记。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论