diff --git a/兑换链接.py b/兑换链接.py deleted file mode 100644 index 8453f18..0000000 --- a/兑换链接.py +++ /dev/null @@ -1,214 +0,0 @@ -#!/usr/bin/python3 -# -- coding: utf-8 -- -# ------------------------------- -# @Author : github@limoruirui https://github.com/limoruirui -# @Time : 2022/9/12 16:10 -# cron "0 9,10,14 * * *" script-path=xxx.py,tag=匹配cron用 -# const $ = new Env('电信并发多账号签到'); -# ------------------------------- - -""" -1. 电信签到 不需要抓包 脚本仅供学习交流使用, 请在下载后24h内删除 -2. cron说明 默认10点14点执行一次(用于兑换话费) -2. 环境变量说明: - 必须 TELECOM1 : 电信手机号@电信服务密码@宠物喂食次数(默认0,最大10)&手机号2@密码2@喂食数2 - # TELECOM 13311111111@111111@0&13322222222@222222@10 - 并发命令:task WWJqingcheng_dx/china_telecom.py conc TELECOM - task 后边是脚本所在目录/china_telecom.py conc TELECOM -3. 必须登录过 电信营业厅 app的账号才能正常运行 -""" -import calendar - -""" -update: - 2022.10.25 参考大佬 github@QGCliveDavis https://github.com/QGCliveDavis 的 loginAuthCipherAsymmertric 参数解密 新增app登录获取token 完成星播客系列任务 感谢大佬 - 2022.11.11 增加分享任务 -""" -from datetime import date, datetime -from random import shuffle, randint, choices -from time import sleep, strftime -from re import findall -import re -from requests import get, post -from base64 import b64encode -from tools.aes_encrypt import AES_Ctypt -from tools.rsa_encrypt import RSA_Encrypt -from tools.tool import timestamp, get_environ, print_now -from tools.send_msg import push -from login.telecom_login import TelecomLogin -from string import ascii_letters, digits -from tools.notify import send - -class ChinaTelecom: - def __init__(self, account, pwd, checkin=True): - self.phone = account - self.ticket = "" - self.token = "" - if pwd != "" and checkin: - userLoginInfo = TelecomLogin(account, pwd).main() - self.ticket = userLoginInfo[0] - self.token = userLoginInfo[1] - - def init(self): - self.msg = "" - self.ua = f"CtClient;9.6.1;Android;12;SM-G9860;{b64encode(self.phone[5:11].encode()).decode().strip('=+')}!#!{b64encode(self.phone[0:5].encode()).decode().strip('=+')}" - self.headers = { - "Host": "wapside.189.cn:9001", - "Referer": "https://wapside.189.cn:9001/resources/dist/signInActivity.html", - "User-Agent": self.ua - } - self.key = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ugG5A8cZ3FqUKDwM57GM4io6\nJGcStivT8UdGt67PEOihLZTw3P7371+N47PrmsCpnTRzbTgcupKtUv8ImZalYk65\ndU8rjC/ridwhw9ffW2LBwvkEnDkkKKRi2liWIItDftJVBiWOh17o6gfbPoNrWORc\nAdcbpk2L+udld5kZNwIDAQAB\n-----END PUBLIC KEY-----" - - def req(self, url, method, data=None): - if method == "GET": - data = get(url, headers=self.headers) - print(data.headers.get('Referer')) - return data.json() - elif method.upper() == "POST": - data = post(url, headers=self.headers, json=data) - print(data.headers.get('Referer')) - return data.json() - else: - print_now("您当前使用的请求方式有误,请检查") - - # 长明文分段rsa加密 - def telecom_encrypt(self, text): - if len(text) <= 32: - return RSA_Encrypt(self.key).encrypt(text) - else: - encrypt_text = "" - for i in range(int(len(text) / 32) + 1): - split_text = text[(32 * i):(32 * (i + 1))] - encrypt_text += RSA_Encrypt(self.key).encrypt(split_text) - return encrypt_text - - @staticmethod - def geneRandomToken(): - randomList = choices(ascii_letters + digits, k=129) - token = f"V1.0{''.join(x for x in randomList)}" - return token - - - - - # 查询宠物等级 - def get_level(self): - url = "https://wapside.189.cn:9001/jt-sign/paradise/getParadiseInfo" - body = { - "para": self.telecom_encrypt(f'{{"phone":{self.phone}}}') - } - data = self.req(url, "POST", body) - self.level = int(data["userInfo"]["paradiseDressup"]["level"]) - if self.level < 5: - print_now("当前等级小于5级 不领取等级权益") - return - url = "https://wapside.189.cn:9001/jt-sign/paradise/getLevelRightsList" - right_list = self.req(url, "POST", body)[f"V{self.level}"] - for data in right_list: - # print(dumps(data, indent=2, ensure_ascii=0)) - if "00金豆" in data["righstName"] or "话费" in data["righstName"]: - rightsId = data["id"] - self.level_ex(rightsId) - continue - # print(self.rightsId) - - # 每月领取等级金豆 - def level_ex(self, rightsId): - # self.get_level() - url = "https://wapside.189.cn:9001/jt-sign/paradise/conversionRights" - data = { - "para": self.telecom_encrypt(f'{{"phone":{self.phone},"rightsId":"{rightsId}"}},"receiveCount":1') - } - resp = self.req(url, "POST", data) - # print(type(resp)) - print_now(resp) - - - def author(self): - """ - 通过usercode 获取 authorization - :return: - """ - self.get_usercode() - url = "https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken" - data = { - "usercode": self.usercode - } - data = post(url, headers=self.headers_live, json=data).json() - self.authorization = f"Bearer {data['data']['token']}" - self.headers_live["Authorization"] = self.authorization - - - - def get_userid(self): - url = "https://wapside.189.cn:9001/jt-sign/api/home/homeInfo" - body = { - "para": self.telecom_encrypt( - f'{{"phone":"{self.phone}","signDate":"{datetime.now().__format__("%Y-%m")}"}}') - } - userid = post(url, json=body).json()["data"]["userInfo"]["userThirdId"] - return userid - - def referer(self): - currentday = calendar.weekday(datetime.now().year, datetime.now().month, datetime.now().day) - #上午的1 2 5 - mondata = ['63b66ec1e7f0643fd094dc5d', '63b66ffe14e2af076ac5fd0a', '63b6710f195af930e24ccce1'] - #下午的1 2 5 - aftdata = ['63b0f2a4b4ac414e589ad295', '63b0f2fc195af930e24cc957', '63b0f362165ee4785ce3ae2a'] - msg_str = '' - if currentday != '4' and datetime.now().hour >0 and datetime.now().hour < 11: - print('+++++++' + self.phone + '+++++++') - print(f'上午场一元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={mondata[0]}') - print(f'上午场两元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={mondata[1]}') - print(f'上午场五元元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={mondata[2]}') - msg_str +=f'{self.phone}\n上午场一元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={mondata[0]}'+f'\n上午场两元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={mondata[1]}'+f'\n上午场五元元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={mondata[2]}' - elif currentday != '4' and datetime.now().hour >11: - print('+++++++'+self.phone+'+++++++') - print( - f'下午场一元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={aftdata[0]}') - print( - f'下午场两元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={aftdata[1]}') - print( - f'下午场五元元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={aftdata[2]}') - msg_str += f'{self.phone}\n下午场一元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={aftdata[0]}' + f'\n下午场两元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={aftdata[1]}' + f'\n下午场五元元抢购连接:https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html?ticket={self.ticket}&activitieId={aftdata[2]}' - elif currentday == '4': - print_now('内容没抓呢~~~') - print('链接获取成功') - send('获取兑换链接通知',msg_str) - - def main(self): - try: - self.referer() - except Exception as e: - print(f"请求失败:"+str(e)) - print('========================================================') - print('============================分隔符=======================') - print('========================================================') - - - - -# 主方法与源文件不同;增加了多账号的判断;变量格式如下 -# TELECOM 13311111111@111111@10&13322222222@222222@10 -if __name__ == "__main__": - TELECOM = get_environ("TELECOM1") - # TELECOM = '15996500834@398104@10' - users = TELECOM.split("&") - for i in range(len(users)): - user = users[i].split("@") - phone = user[0] - password = user[1] - foods = int(float(user[2])) - print(phone, password, foods) - if phone == "": - exit(0) - if password == "": - print_now("电信服务密码未提供 只执行部分任务") - - if datetime.now().hour + (8 - int(strftime("%z")[2])) == 12: - telecom = ChinaTelecom(phone, password, False) - telecom.init() - telecom.convert_reward() - else: - telecom = ChinaTelecom(phone, password) - telecom.main()