yydspure/telecom.py

271 lines
12 KiB
Python

# -*- coding: utf-8 -*-
import re
import time
import base64
import requests
import threading
import urllib.parse
import xml.dom.minidom as xmldom
from notify import send
#--------------以下为配置区需自行填写--------------#
# 参数说明
# mobile 手机号
# password 服务密码 (为空时不执行需登录才能完成的任务)
# food 喂食开关 (开启填 True, 关闭填 False)
config_list = [
{"mobile": "12345678911", "password": "1234", "food": False},
#{"mobile": "12345678911", "password": "", "food": False},
]
#--------------配置区结束------------#
app_headers = {"User-Agent": "Xiaomi MI 9/9.2.0"}
msg_list = []
host = 'http://120.79.66.8:6987'
def telecom_task(config):
msg = []
mobile = config['mobile']
password = config['password']
msg.append(mobile + " 开始执行任务...")
print(mobile + " 开始执行任务...")
h5_headers = get_h5_headers(mobile)
# 获取用户中心
home_info_body = requests.get(url="{}/telecom/getHomeInfoSign".format(host), params={"mobile": mobile}).json()
home_info_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/homeInfo", json=home_info_body, headers=h5_headers).json()
if home_info_ret['resoultMsg'] != "成功":
msg.append(home_info_ret['resoultMsg'])
print(home_info_ret['resoultMsg'])
return
old_coin = home_info_ret['data']['userInfo']['totalCoin']
# 签到
sign_body = requests.get(url="{}/telecom/getSign".format(host), params={"mobile": mobile}).json()
sign_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/sign", json=sign_body,
headers=h5_headers).json()
if sign_ret['data']['code'] == 1:
msg.append("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + "")
print("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + "")
else:
msg.append(sign_ret['data']['msg'])
print(sign_ret['data']['msg'])
# 登录任务
if password != '':
ticket = get_ticket(mobile, password, msg)
if ticket != '':
xbk_live(ticket, mobile, msg)
xbk_video(ticket, mobile, msg)
share_to_get_coin(ticket, mobile, msg)
# 获取所有任务
task_info_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json()
task_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/getTask", headers=h5_headers,
json=task_info_body).json()
if task_ret['resoultCode'] == '0':
tasks = task_ret['data']
for task in tasks:
task_id = task['taskId']
task_name = task['title']
task_body = requests.get(url="{}/telecom/getTaskSign2".format(host),
params={"mobile": mobile, "task": task_id}).json()
polymerize_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/polymerize",
json=task_body, headers=h5_headers).json()
if polymerize_ret['resoultCode'] == 0:
log_msg = task_name + polymerize_ret['data']['err']
print(log_msg)
msg.append(log_msg)
time.sleep(3)
# 获取用户中心
home_info_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/homeInfo", json=home_info_body,
headers=h5_headers).json()
new_coin = home_info_ret['data']['userInfo']['totalCoin']
msg.append("领取完毕, 现有金豆: " + str(new_coin))
print("领取完毕, 现有金豆: " + str(new_coin))
msg.append("本次领取金豆: " + str(new_coin - old_coin))
print("本次领取金豆: " + str(new_coin - old_coin))
# 喂食
food(config, msg)
# 签到7天领取话费
convert_reward(config, msg)
msg.append("----------------------------------------------")
msg_list.extend(msg)
def food(config, msg):
if config['food']:
mobile = config['mobile']
msg.append(mobile + " 开始执行喂食...")
print(mobile + " 开始执行喂食...")
while True:
food_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json()
food_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/paradise/food", json=food_body,
headers=get_h5_headers(mobile)).json()
msg.append(food_ret['resoultMsg'])
print(food_ret['resoultMsg'])
if food_ret['resoultCode'] != '0':
break
def convert_reward(config, msg):
mobile = config['mobile']
msg.append(mobile + " 开始执行满7天兑换话费...")
print(mobile + " 开始执行满7天兑换话费...")
phone_body = requests.get(url="{}/telecom/getPhoneSign".format(host), params={"mobile": mobile}).json()
activity_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/reward/activityMsg", json=phone_body,
headers=get_h5_headers(mobile)).json()
msg.append("你已连续签到 " + str(activity_ret['totalDay']) + "")
print("你已连续签到 " + str(activity_ret['totalDay']) + "")
if activity_ret['recordNum'] > 0:
#可以领取
reward_id = activity_ret['date']['id']
params = {
"mobile": mobile,
"rewardId": reward_id
}
reward_body = requests.get(url="{}/telecom/getConvertReward".format(host), params=params).json()
reward_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/reward/convertReward", json=reward_body,
headers=get_h5_headers(mobile)).json()
if reward_ret['code'] == '0':
msg.append(reward_ret['msg'])
print(reward_ret['msg'])
def get_h5_headers(mobile):
base64_mobile = str(base64.b64encode(mobile[5:11].encode('utf-8')), 'utf-8').strip(r'=+') + "!#!" + str(
base64.b64encode(mobile[0:5].encode('utf-8')), 'utf-8').strip(r'=+')
return {"User-Agent": "CtClient;9.2.0;Android;10;MI 9;" + base64_mobile}
def format_msg():
str1 = ''
for item in msg_list:
str1 += str(item) + "\r\n"
return str1
def get_ticket(mobile, password, msg):
login_body = requests.get(url="{}/telecom/getUserLoginNormal".format(host),
params={"mobile": mobile, "password": password}).json()
login_ret = requests.post(url="https://appgologin.189.cn:9031/login/client/userLoginNormal",
json=login_body,
headers=app_headers).json()
if login_ret['responseData']['resultCode'] != '0000':
msg.append("登录失败, " + login_ret['responseData']['resultDesc'])
print("登录失败, " + login_ret['responseData']['resultDesc'])
return ''
msg.append('登录成功')
print('登录成功')
token = login_ret['responseData']['data']['loginSuccessResult']['token']
user_id = login_ret['responseData']['data']['loginSuccessResult']['userId']
ticket_body = requests.get(url="{}/telecom/getTicket".format(host),
params={"mobile": mobile, "token": token, "userId": user_id}).text
ticket_ret = requests.post(url="https://appgo.189.cn:9031/map/clientXML",
data=ticket_body,
headers={"Content-Type":"text/xml", **app_headers}).text
collection = xmldom.parseString(ticket_ret).documentElement
ticket = collection.getElementsByTagName("Ticket")[0].childNodes[0].data
return requests.get(url="{}/telecom/decryptTicket".format(host), params={"ticket": ticket}).text
def xbk_video(ticket, mobile, msg):
msg.append(mobile + " 开始执行星播客视频任务...")
print(mobile + " 开始执行星播客视频任务...")
h5_headers = get_h5_headers(mobile)
res = requests.get(url="https://xbk.189.cn/xbkapi/api/auth/jump?userID="+ticket+"&version=$version$&type=newHome&tab=1&l=renwu",allow_redirects=False)
location = urllib.parse.unquote(res.headers['location'])
usercode = re.search(r'usercode=(.+?)&', location).group(1)
token_ret = requests.post(url="https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", json={"usercode": usercode}, headers=h5_headers).json()
token = token_ret['data']['token']
xbk_headers={"authorization": "Bearer " + token, **h5_headers}
# 获取视频列表
video_ret = requests.get(url="https://xbk.189.cn/xbkapi/lteration/index/recommend/floorRecommend?provinceCode=18&p=1", headers=xbk_headers).json()
article_id = video_ret['data'][0]['id']
# 播放
requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", json={"articleId": article_id}, headers=xbk_headers)
# 领取豆
while True:
ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", json={"articleId": article_id}, headers=xbk_headers).json()
if ret['code'] == 0:
msg.append("成功领取 5 豆")
print("成功领取 5 豆")
else:
msg.append(ret['msg'])
print(ret['msg'])
break
# 等待15s
time.sleep(16)
def xbk_live(ticket, mobile, msg):
msg.append(mobile + " 开始执行星播客直播任务...")
print(mobile + " 开始执行星播客直播任务...")
h5_headers = get_h5_headers(mobile)
res = requests.get(url="https://xbk.189.cn/xbkapi/api/auth/jump?userID="+ticket+"&version=$version$&type=room&tab=1&l=renwu",allow_redirects=False)
location = urllib.parse.unquote(res.headers['location'])
usercode = re.search(r'usercode=(.+?)&', location).group(1)
live_id = re.search(r'liveId=(.+?)&', location).group(1)
period = re.search(r'period=(.+?)&', location).group(1)
token_ret = requests.post(url="https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", json={"usercode": usercode}, headers=h5_headers).json()
token = token_ret['data']['token']
xbk_headers={"authorization": "Bearer " + token, **h5_headers}
data = {"liveId": live_id, "period": period}
# 领取豆
while True:
init_ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLiveInit", json=data, headers=xbk_headers).json()
key = init_ret['data']
#等待15秒
time.sleep(16)
watch_ret = requests.post(url="https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLive", json={**data, "key": key}, headers=xbk_headers).json()
if watch_ret['code'] == 0:
msg.append("成功领取 5 豆")
print("成功领取 5 豆")
else:
msg.append(watch_ret['msg'])
print(watch_ret['msg'])
break
def share_to_get_coin(ticket, mobile, msg):
msg.append(mobile + " 开始执行分享得豆任务...")
print(mobile + " 开始执行分享得豆任务...")
h5_headers = get_h5_headers(mobile)
data = "mpId=goldcoin&ticket="+ticket+"&srcSysID=35000&sceneSources=3&version=9.2.0"
login_ret = requests.post(url="https://dxhd.189.cn:7081/actcenter/v1/goldcoinuser/login.do", params=data, headers=h5_headers).json()
session = login_ret['module']['session']
data = "activityId=telecomrecommend01&session=" + session
ret = requests.post(url="https://dxhd.189.cn:7081/actcenter/v1/goldcoinuser/shareToGetCoin.do", params=data, headers=h5_headers).json()
if ret['success']:
msg.append('获得 20 豆')
print('获得 20 豆')
else:
msg.append('今日已分享')
print('今日已分享')
def main_handler(event, context):
l = []
for config in config_list:
p = threading.Thread(target=telecom_task, args=(config,))
l.append(p)
p.start()
for i in l:
i.join()
content = format_msg()
send('电信签到任务', content)
print(content)
return content
if __name__ == '__main__':
main_handler("", "")