271 lines
12 KiB
Python
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("", "")
|