mirror of
https://github.com/XiaoGe-LiBai/yangmao.git
synced 2025-12-17 05:08:13 +08:00
首次提交
This commit is contained in:
16
16425_乐乐看极速版.js
Normal file
16
16425_乐乐看极速版.js
Normal file
File diff suppressed because one or more lines are too long
597
youshi.py
Normal file
597
youshi.py
Normal file
@@ -0,0 +1,597 @@
|
||||
"""
|
||||
有柿自用版
|
||||
by 偷CK的六舅哥
|
||||
无限刷金币
|
||||
搜索 done_whole_scene_task 抓该接口的url(...done_whole_scene_task?后的url)、cookie 、argus、ladon
|
||||
cookies格式 ysck = "url#cookie#argus#ladon"
|
||||
8.3 今日头条刷视频,新增部分任务,不黑一天4块左右
|
||||
bug提交 https://t.me/jiangyutck
|
||||
|
||||
"""
|
||||
import re
|
||||
import requests,secrets,time,hashlib,string,random,json,os,sys
|
||||
import datetime
|
||||
from lib2to3.pygram import python_grammar_no_print_and_exec_statement
|
||||
import os
|
||||
import time
|
||||
import random
|
||||
import base64
|
||||
import requests
|
||||
import hashlib
|
||||
import uuid
|
||||
import json
|
||||
|
||||
now = str(round(time.time()*1000))
|
||||
kami=""
|
||||
cookies= os.getenv("ysck")
|
||||
num = 10
|
||||
|
||||
|
||||
class DY:
|
||||
def __init__(self, cookie):
|
||||
self.url = cookie.split("#")[0]
|
||||
self.cookie = cookie.split("#")[1]
|
||||
self.argus = cookie.split("#")[2]
|
||||
self.ladon = cookie.split("#")[3]
|
||||
|
||||
|
||||
def run(self):
|
||||
|
||||
jbsl = self.user()
|
||||
jb1 = jbsl
|
||||
print(f"========开始进行今日签到========")
|
||||
point_ss , point_s = self.sign()
|
||||
print(f"✅签到奖励金币--{point_s}")
|
||||
print(f"✅签到奖励金币--{point_ss}")
|
||||
tt = random.randint(10,25)
|
||||
print(f"⚠️休息{tt}秒防止黑号~")
|
||||
time.sleep(tt)
|
||||
print(f"========开始进行吃饭赚钱========")
|
||||
self.eat_coin()
|
||||
tt = random.randint(10,25)
|
||||
print(f"⚠️休息{tt}秒防止黑号~")
|
||||
time.sleep(tt)
|
||||
print(f"========开始进行奖励翻倍========")
|
||||
self.readDouble()
|
||||
tt = random.randint(10,25)
|
||||
print(f"⚠️休息{tt}秒防止黑号~")
|
||||
time.sleep(tt)
|
||||
print(f"========开始进行阅读有奖========")
|
||||
print(f"✅检测到配置,开始阅读{num}次")
|
||||
for im in range(num):
|
||||
tt = random.randint(30,40)
|
||||
print(f"⚠️等待{tt}秒开始阅读~")
|
||||
time.sleep(tt)
|
||||
im = im + 1
|
||||
self.readJB(im)
|
||||
tt = random.randint(10,25)
|
||||
print(f"⚠️休息{tt}秒防止黑号~")
|
||||
time.sleep(tt)
|
||||
print(f"========开始账号查资产========")
|
||||
jbsl = self.user()
|
||||
jb2 = jbsl
|
||||
jbzg = jb2 - jb1
|
||||
print(f"========开始计算总收益========")
|
||||
print(f"本次运行脚本共获得金币--{jbzg}")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def kami(self):
|
||||
url = f"https://api2.2cccc.cc/apiv3/card_login&card={kami}&software=jrttkmo¢er_id=17898"
|
||||
response = requests.request("GET", url=url)
|
||||
kamican = response.json().get('code')
|
||||
if kamican == "1":
|
||||
kamicans = response.json().get('data').get('less_time')
|
||||
else:
|
||||
kamicans = response.json().get('msg')
|
||||
return kamicans , kamican
|
||||
|
||||
def kamidu(self,):
|
||||
url = f"https://api2.2cccc.cc/apiv3/config&client_type=card&client_content={kami}&type=read¢er_id=17898"
|
||||
response = requests.request("GET", url=url)
|
||||
if response.json().get('code') == "1":
|
||||
if response.json().get('data').get('config') == "":
|
||||
kamijqm = "检测到你是头次使用本脚本,即将获取机器码上传登记"
|
||||
kamijqmyz = "检测到你是头次使用本脚本,即将获取机器码上传登记"
|
||||
else:
|
||||
kamijqm = "机器码获取成功!"
|
||||
kamijqmyz = response.json().get('data').get('config')
|
||||
return kamijqm , kamijqmyz
|
||||
else:
|
||||
kamijqm = "获取失败!"
|
||||
kamijqmyz = "获取失败!"
|
||||
return kamijqm , kamijqmyz
|
||||
|
||||
def kamiwrite(self,md55):
|
||||
url = f"https://api2.2cccc.cc/apiv3/config&client_type=card&client_content={kami}&type=write&value={md55}¢er_id=17898"
|
||||
response = requests.request("GET", url=url)
|
||||
if response.json().get('code') == "1":
|
||||
kamijqmm = "登记成功!"
|
||||
return kamijqmm
|
||||
else:
|
||||
kamijqmm = "未知错误!"
|
||||
return kamijqmm
|
||||
|
||||
def get_mac_address(self):
|
||||
mac=uuid.UUID(int = uuid.getnode()).hex[-12:]
|
||||
print("获取机器码成功!")
|
||||
return ":".join([mac[e:e+2] for e in range(0,11,2)])
|
||||
|
||||
|
||||
def user(self):
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/gip/v1/page/profit?offset=0&share_page=profits_detail_page&income_type=2&num=300&key=score&{self.url}"
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("GET", url=url, headers=headers)
|
||||
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_no") == 0:
|
||||
jbjj = response.json().get('data').get('score_balance') / 33000
|
||||
jbj = round(jbjj, 2)
|
||||
print(f"当前金币:{response.json().get('data').get('score_balance')}金币(约为 {jbj} 元) 现金:{response.json().get('data').get('cash_balance')*0.01}")
|
||||
jbsl = response.json().get('data').get('score_balance')
|
||||
else:
|
||||
print(f"获取用户信息出错{response.json()}")
|
||||
jbsl = 0
|
||||
else:
|
||||
print("用户数据过期或者错误")
|
||||
jbsl = 0
|
||||
return jbsl
|
||||
|
||||
def sign(self):
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/gip/v1/daily/consume_sign_in/action?{self.url}"
|
||||
payload = '{}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'user-agent': 'com.ss.android.article.news/9360 (Linux; U; Android 13; zh_CN; V2055A; Build/TP1A.220624.014; Cronet/TTNetVersion:85102f3e 2023-06-05 QuicVersion:4ad3af5d 2023-05-09)',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point_s = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point_ss = response.json().get('data').get('toast')
|
||||
return point_s , point_ss
|
||||
else:
|
||||
point_ss = "已经上限了"
|
||||
return point_s , point_ss
|
||||
|
||||
def eat_coin(self):
|
||||
current_hour = time.localtime().tm_hour
|
||||
if (5 <= current_hour <= 9) or (11 <= current_hour <= 14) or (17 <= current_hour <= 20) or (21 <= current_hour <= 24):
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/news/v1/eat/done_eat?_request_from=web&{self.url}"
|
||||
body = "{}"
|
||||
headers = {
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.post(url, headers=headers, data=body)
|
||||
if response.status_code == 200:
|
||||
response_json = response.json()
|
||||
if response_json.get("err_no") == 0:
|
||||
score_amount2 = response_json.get('err_tips')
|
||||
score_amount = response_json.get('data').get('score_amount')
|
||||
print(f"✅吃饭赚钱金币--{score_amount2}")
|
||||
print(f"✅吃饭赚钱金币--{score_amount}")
|
||||
return True
|
||||
else:
|
||||
print(f"⚠️吃饭赚钱金币--该时间段已领取")
|
||||
return True
|
||||
else:
|
||||
print(f"⚠️吃饭赚钱金币--请求失败")
|
||||
return False
|
||||
else:
|
||||
print(f"⚠️吃饭赚钱金币--不在时间段内")
|
||||
return False
|
||||
|
||||
|
||||
|
||||
|
||||
def readDouble(self):
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/news/v1/activity/done_whole_scene_task?{self.url}"
|
||||
payload = {}
|
||||
payload = json.dumps(payload)
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
|
||||
response = requests.request("POST", url=url, headers=headers)
|
||||
point_ssp = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point_sp1 = response.json().get('data').get('score_amount_origin')
|
||||
point_sp2 = response.json().get('data').get('score_amount_now')
|
||||
print(f"✅阅读奖励奖励翻倍--{point_ssp}")
|
||||
print(f"✅阅读奖励奖励翻倍--{point_sp1} >=== {point_sp2}")
|
||||
|
||||
else:
|
||||
point_sp = "已经上限了"
|
||||
print(f"⚠️阅读奖励奖励翻倍--{point_ssp}")
|
||||
|
||||
def readJB(self,im):
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/news/v1/activity/done_whole_scene_task?{self.url}"
|
||||
payload = '{"group_id": "", "scene_key": "UgcInnerFeed","is_golden_egg": false}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point_ssp = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point_sp1 = response.json().get('data').get('score_amount')
|
||||
point_sp2 = response.json().get('data').get('total_score_amount')
|
||||
time = response.json().get('data').get('total_time') / 60
|
||||
if response.json().get('data').get('toast') == None:
|
||||
print(f"✅第{im}次阅读奖励金币--{point_ssp}")
|
||||
print(f"✅第{im}次阅读奖励金币--{point_sp1},今日阅读金币:{point_sp2},当前阅读时间:{time}分钟")
|
||||
else:
|
||||
gg = response.json().get('data').get('toast').get('title')
|
||||
gg2 = response.json().get('data').get('toast').get('title_desc')
|
||||
it = re.finditer(r"已(.*?)币", gg)
|
||||
for match in it:
|
||||
print(f"✅阅读奖励金币--{match.group()},{gg2}")
|
||||
print(f"✅第{im}次阅读奖励金币--{point_ssp}")
|
||||
print(f"✅第{im}次阅读奖励金币--{point_sp1},今日阅读金币:{point_sp2},当前阅读时间:{time}分钟")
|
||||
else:
|
||||
point_sp = "已经上限了"
|
||||
print(f"⚠️第{im}次阅读奖励金币--{point_ssp}")
|
||||
|
||||
def treasure_box(self):
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/gip/v1/daily/treasure_box/detail?{self.url}"
|
||||
headers = {
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.get(url, headers=headers)
|
||||
if response.status_code == 200:
|
||||
response_json = response.json()
|
||||
if response_json.get("err_no") == 0 and response_json.get('data').get('left_seconds') != 0:
|
||||
print(f"[开启宝箱]失败:还差{response_json.get('data').get('left_seconds')}秒")
|
||||
return True
|
||||
else:
|
||||
url = f"https://api5-normal-lf.toutiaoapi.com/luckycat/gip/v1/daily/treasure_box/done?{self.url}"
|
||||
body = "{\"auto_open\":false}"
|
||||
headers = {
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.post(url, headers=headers, data=body)
|
||||
if response.status_code == 200:
|
||||
response_json = response.json()
|
||||
print(f"[开启宝箱]获得金币: {response_json.get('data').get('reward_amount')}")
|
||||
return True
|
||||
else:
|
||||
print(f"请求失败")
|
||||
return False
|
||||
else:
|
||||
print(f"请求失败")
|
||||
return False
|
||||
|
||||
|
||||
def xs_sign(self):
|
||||
url = f"https://api5-normal-hl.toutiaoapi.com/luckycat/novel_sdk/v1/task/done/sign_in?{self.url}"
|
||||
payload = '{}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
pointxss = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
pointxxss = response.json().get('data').get('amount')
|
||||
return pointxss , pointxxss
|
||||
else:
|
||||
pointxxss = "已经上限了"
|
||||
return pointxss , pointxxss
|
||||
|
||||
def eat(self):
|
||||
url = f"https://api5-normal-hl.toutiaoapi.com/luckycat/news/v1/eat/done_eat?_request_from=web&{self.url}"
|
||||
payload = '{}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point_cf = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point_cff = response.json().get('data').get('score_amount')
|
||||
return point_cf , point_cff
|
||||
else:
|
||||
point_cff = "已经上限了"
|
||||
return point_cf , point_cff
|
||||
|
||||
|
||||
|
||||
def get_step(self):
|
||||
url = f"https://api5-normal-lq.toutiaoapi.com/luckycat/news/v1/task/done/excitation_ad/?{self.url}"
|
||||
payload = '{"amount":691,"weight":0,"task_id":190,"is_post_login":false,"ad_from":"task","score_source":0,"content":"","ad_id":2,"ad_rit":"2","score_amount":691,"task_key":"excitation_ad\/","extra":{"task_name":"","track_id":"","stage_score_amount":[],"task_id":""},"image_url_light":"","image_url_button":"","ad_alias_position":"task","fixed":false,"image_url_coin":"","coin_count":691,"params_for_special":"luckydog_sdk","static_settings_version":50,"dynamic_settings_version":50,"poll_settings_version":0}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
pointstep = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
pointstepp = response.json().get('data').get('reward_amount')
|
||||
return pointstep , pointstepp
|
||||
else:
|
||||
pointstepp = "已经上限了"
|
||||
return pointstep , pointstepp
|
||||
|
||||
|
||||
|
||||
|
||||
def eat_sp(self):
|
||||
url = f"https://api5-normal-lq.toutiaoapi.com/luckycat/news/v1/task/done/excitation_ad/?{self.url}"
|
||||
payload = '{"amount":691,"weight":0,"task_id":181,"is_post_login":false,"ad_from":"task","score_source":0,"content":"","ad_id":2,"ad_rit":"2","score_amount":691,"task_key":"excitation_ad\/","extra":{"task_name":"","track_id":"","stage_score_amount":[],"task_id":""},"image_url_light":"","image_url_button":"","ad_alias_position":"task","fixed":false,"image_url_coin":"","coin_count":691,"params_for_special":"luckydog_sdk","static_settings_version":50,"dynamic_settings_version":50,"poll_settings_version":0}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point_cfs = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point_cffs = response.json().get('data').get('reward_amount')
|
||||
return point_cfs , point_cffs
|
||||
else:
|
||||
point_cffs = "已经上限了"
|
||||
return point_cfs , point_cffs
|
||||
|
||||
def read(self):
|
||||
url = f"https://api5-normal-hl.toutiaoapi.com/luckycat/news/v1/activity/done_whole_scene_task?{self.url}"
|
||||
payload = '{"group_id": "","scene_key": "IndexTabFeed","is_golden_egg": false}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point_read = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point_readd = response.json().get('data').get('score_amount')
|
||||
return point_readd , point_read
|
||||
else:
|
||||
point_readd = "已经上限了"
|
||||
return point_readd , point_read
|
||||
|
||||
def kgg(self):
|
||||
url = f"https://api5-normal-lq.toutiaoapi.com/luckycat/news/v1/task/done/excitation_ad/?{self.url}"
|
||||
payload = '{"amount":691,"weight":0,"task_id":210,"is_post_login":false,"ad_from":"task","score_source":0,"content":"","ad_id":2,"ad_rit":"2","score_amount":691,"task_key":"excitation_ad\/","extra":{"task_name":"","track_id":"","stage_score_amount":[],"task_id":""},"image_url_light":"","image_url_button":"","ad_alias_position":"task","fixed":false,"image_url_coin":"","coin_count":691,"params_for_special":"luckydog_sdk","static_settings_version":50,"dynamic_settings_version":50,"poll_settings_version":0}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
pointgg = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
pointggg = response.json().get('data').get('reward_amount')
|
||||
return pointgg , pointggg
|
||||
else:
|
||||
pointggg = "已经上限了"
|
||||
return pointgg , pointggg
|
||||
|
||||
def open_box(self):
|
||||
url = f"https://api5-normal-lq.toutiaoapi.com/luckycat/news/v1/task/done/excitation_ad/?{self.url}"
|
||||
payload = '{"amount":691,"weight":0,"task_id":188,"is_post_login":false,"ad_from":"task","score_source":0,"content":"","ad_id":2,"ad_rit":"2","score_amount":691,"task_key":"excitation_ad\/","extra":{"task_name":"","track_id":"","stage_score_amount":[],"task_id":""},"image_url_light":"","image_url_button":"","ad_alias_position":"task","fixed":false,"image_url_coin":"","coin_count":691,"params_for_special":"luckydog_sdk","static_settings_version":50,"dynamic_settings_version":50,"poll_settings_version":0}'
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point2 = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_tips") == "成功":
|
||||
point = response.json().get('data').get('reward_amount')
|
||||
return point2 , point
|
||||
else:
|
||||
point = "已经上限了"
|
||||
return point2 , point
|
||||
|
||||
def open_boxlx(self):
|
||||
url = f"https://api5-normal-lq.toutiaoapi.com/luckycat/news/v1/task/done/excitation_ad/?{self.url}"
|
||||
payload = "{\"task_id\":225,\"exci_extra\":{\"cid\":1770200687669342,\"req_id\":\"20230701160644C93FF92F37A3A1714A5C\",\"rit\":80047},\"extra\":{\"stage_score_amount\":[],\"track_id\":\"\",\"draw_score_amount\":null,\"draw_track_id\":null,\"task_id\":\"\",\"task_name\":\"\",\"enable_fuzzy_amount\":false,\"custom_id\":null}}"
|
||||
headers = {
|
||||
'Host': 'api5-normal-lq.toutiaoapi.com',
|
||||
'x-ss-req-ticket': now,
|
||||
'x-vc-bdturing-sdk-version': '3.5.0.cn',
|
||||
'sdk-version': '2',
|
||||
'passport-sdk-version': '40452',
|
||||
'x-tt-request-tag': 'n=0;s=-1;p=0',
|
||||
'x-tt-store-region': 'cn-hn',
|
||||
'x-tt-store-region-src': 'uid',
|
||||
'x-ss-dp': '13',
|
||||
'x-argus': self.argus,
|
||||
'x-ladon': self.ladon,
|
||||
'Cookie': self.cookie,
|
||||
'content-type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
'Connection': 'keep-alive'
|
||||
}
|
||||
response = requests.request("POST", url=url, headers=headers, data=payload)
|
||||
point4 = response.json().get('err_tips')
|
||||
if response.status_code == 200:
|
||||
if response.json().get("err_no") == 0:
|
||||
point3 = response.json().get('data').get('reward_amount')
|
||||
return point4,point3
|
||||
else:
|
||||
point3 = "已经上限了"
|
||||
return point4,point3
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cookies = cookies.split("@")
|
||||
print(f"【有柿视频】共检测到{len(cookies)}个账号")
|
||||
print(f"==========================================")
|
||||
print(f"有柿视频(小毛) by:偷CK的六舅哥\n7.23 有柿视频刷视频,新增部分任务,不黑一天1-2块左右\nbug提交 https://t.me/jiangyutck")
|
||||
i = 1
|
||||
for cookie in cookies:
|
||||
print(f"========【账号{i}】开始运行脚本========")
|
||||
i += 1
|
||||
DY(cookie).run()
|
||||
|
||||
time.sleep(random.randint(5, 10))
|
||||
if i > len(cookies):
|
||||
break
|
||||
else:
|
||||
print("延迟一小会,准备跑下一个账号")
|
||||
1946
乐乐看V1.2.js
Normal file
1946
乐乐看V1.2.js
Normal file
File diff suppressed because one or more lines are too long
1552
今日头条V1.5.js
Normal file
1552
今日头条V1.5.js
Normal file
File diff suppressed because one or more lines are too long
173
内网穿透.py
Normal file
173
内网穿透.py
Normal file
@@ -0,0 +1,173 @@
|
||||
# -*- coding: UTF-8 -*-
|
||||
# Version: v1.4
|
||||
# Created by lstcml on 2022/10/18
|
||||
# 建议定时10分钟:*/10 * * * *
|
||||
|
||||
'''
|
||||
cron: */10 * * * *
|
||||
new Env('Cpolar内网穿透');
|
||||
'''
|
||||
|
||||
'''
|
||||
使用说明:
|
||||
1、打开https://i.cpolar.com/m/4wLJ注册登录后获取authtoken;
|
||||
2、新增变量qlnwct_authtoken,值为你账户的authtoken,运行脚本
|
||||
|
||||
更新记录:
|
||||
v1.4
|
||||
1、兼容新版的青龙面板;
|
||||
|
||||
v1.3
|
||||
1、移动仓库目录;
|
||||
|
||||
v1.2
|
||||
1、新增CPU架构识别,自动下载对应cpolar程序;
|
||||
2、默认开启自动更新,qlnwctupdate值为false则关闭自动更新;
|
||||
|
||||
v1.1
|
||||
1、开放推送,仅支持PushPlus推送,每次触发启动穿透会推送一次地址;
|
||||
'''
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import json
|
||||
import requests
|
||||
from time import sleep
|
||||
path = os.path.split(os.path.realpath(__file__))[0]
|
||||
log_path = os.path.join(path, "nwct_cpolar_log")
|
||||
log_name = os.path.join(log_path, "cpolar")
|
||||
log_file = os.path.join(log_path, "cpolar.master.log")
|
||||
app_path = os.path.join(path, "cpolar")
|
||||
commond = "python3 " + os.path.join(path, "cpolar.py") + " &"
|
||||
|
||||
# 检查更新
|
||||
def update():
|
||||
print("当前运行的脚本版本:" + str(version))
|
||||
try:
|
||||
r1 = requests.get("https://ghproxy.com/https://raw.githubusercontent.com/jiankujidu/cpolar/main/nwct_cpolar.py").text
|
||||
r2 = re.findall(re.compile("version = \d.\d"), r1)[0].split("=")[1].strip()
|
||||
if float(r2) > version:
|
||||
print("发现新版本:" + r2)
|
||||
print("正在自动更新脚本...")
|
||||
os.system("killall cpolar")
|
||||
os.system("ql raw https://ghproxy.com/https://raw.githubusercontent.com/jiankujidu/cpolar/main/nwct_cpolar.py &")
|
||||
except:
|
||||
pass
|
||||
|
||||
# 判断CPU架构
|
||||
def check_os():
|
||||
r = os.popen('uname -m').read()
|
||||
if 'aarch64' in r or 'arm' in r:
|
||||
cpu = 'arm'
|
||||
elif 'x86_64' in r or 'x64' in r:
|
||||
cpu = 'amd64'
|
||||
else:
|
||||
print('穿透失败:不支持当前架构!')
|
||||
return
|
||||
print('获取CPU架构:' + r.replace('\n', ''))
|
||||
download_cpolar(cpu)
|
||||
|
||||
# 下载主程序
|
||||
def download_cpolar(cpu):
|
||||
if not os.path.exists("cpolar.py"):
|
||||
res = requests.get("https://ghproxy.com/https://raw.githubusercontent.com/jiankujidu/cpolar/main/cpolar.py")
|
||||
with open("cpolar.py", "wb") as f:
|
||||
f.write(res.content)
|
||||
if not os.path.exists("cpolar"):
|
||||
res = requests.get("https://static.cpolar.com/downloads/releases/3.2.88.2/cpolar-stable-linux-" + cpu + ".zip")
|
||||
with open("cpolar.zip", "wb") as f:
|
||||
f.write(res.content)
|
||||
os.system("unzip cpolar.zip >/dev/null 2>&1&&rm -f cpolar.zip&&chmod +x cpolar&&" + app_path + " authtoken " + authtoken + ">/dev/null 2>&1")
|
||||
start_nwct()
|
||||
|
||||
# 获取穿透url
|
||||
def get_url():
|
||||
try:
|
||||
with open(log_file, encoding='utf-8') as f:
|
||||
log_content = f.read()
|
||||
reg = 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
|
||||
for i in re.findall(reg, log_content):
|
||||
if 'cpolar' in i:
|
||||
print("获取穿透链接成功...")
|
||||
return i.replace('\\', '')
|
||||
break
|
||||
except:
|
||||
return "https://ghproxy.com/https://raw.githubusercontent.com/jiankujidu"
|
||||
|
||||
# 进程守护
|
||||
def process_daemon():
|
||||
print("正在检测穿透状态...")
|
||||
global qlurl
|
||||
qlurl = get_url()
|
||||
try:
|
||||
res = requests.get(qlurl + "/login").text
|
||||
if "/images/g5.ico" in res or "/images/favicon.svg" in res:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
# 执行程序
|
||||
def start_nwct():
|
||||
if not process_daemon():
|
||||
os.system("rm -rf " + log_path)
|
||||
os.system("mkdir -p " + log_path)
|
||||
os.system("killall cpolar >/dev/null 2>&1")
|
||||
print("正在启动内网穿透...")
|
||||
os.system(commond)
|
||||
sleep(10)
|
||||
if process_daemon():
|
||||
if load_send():
|
||||
print("启动内网穿透成功!\n青龙面板:%s" % qlurl)
|
||||
send("内网穿透通知", "青龙面板访问地址:" + qlurl)
|
||||
else:
|
||||
print("启动内网穿透失败...")
|
||||
else:
|
||||
print("穿透程序已在运行...\nQQ交流群:706397373\n青龙面板:%s" % qlurl)
|
||||
|
||||
|
||||
# 推送
|
||||
def load_send():
|
||||
global send
|
||||
cur_path = os.path.abspath(os.path.dirname(__file__))
|
||||
sys.path.append(cur_path)
|
||||
sendNotifPath = cur_path + "/sendNotify.py"
|
||||
if not os.path.exists(sendNotifPath):
|
||||
res = requests.get("https://ghproxy.com/https://raw.githubusercontent.com/jiankujidu/cpolar/main/sendNotify.py")
|
||||
with open(sendNotifPath, "wb") as f:
|
||||
f.write(res.content)
|
||||
|
||||
try:
|
||||
from sendNotify import send
|
||||
return True
|
||||
except:
|
||||
print("加载通知服务失败!")
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
version = 1.4
|
||||
try:
|
||||
authtoken = os.environ['qlnwct_authtoken']
|
||||
except:
|
||||
authtoken = ""
|
||||
try:
|
||||
token = os.environ['PUSH_PLUS_TOKEN']
|
||||
except:
|
||||
token = ""
|
||||
try:
|
||||
check_update = os.environ['qlnwctupdate']
|
||||
except:
|
||||
check_update = "true"
|
||||
|
||||
if check_update != "false":
|
||||
update()
|
||||
else:
|
||||
print("变量qlnwctupdate未设置,脚本自动更新未开启!")
|
||||
if len(authtoken ) < 1:
|
||||
print("请新增变量qlnwct_authtoken!")
|
||||
else:
|
||||
check_os()
|
||||
684
建行生活cc豆2.3.py
Normal file
684
建行生活cc豆2.3.py
Normal file
@@ -0,0 +1,684 @@
|
||||
# 软件:建行生活
|
||||
# 活动信息: 奋斗季cc豆 功能:每日营收,签到 浏览任务,答题,抽奖,专区任务
|
||||
# 先开抓包,先开抓包,抓的是微信端,搜wParam,复制wParam值,没抓到等两小时在抓
|
||||
# 专区任务,专区抓fission-events.ccbft.com里面含有_ck_bbq_224,全部cookie,没抓到所有专区进一下
|
||||
# 格式 ccdck = wParam参数值#cookie值
|
||||
# 定时:一天两次
|
||||
# 注: 此脚本仅限个人使用,不得传播
|
||||
# 作者: 木兮
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
import requests
|
||||
|
||||
app_ua = 'Mozilla/5.0 (Linux; Android 12; 22081212C Build/SKQ1.220303.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/112.0.5615.135 Mobile Safari/537.36/CloudMercWebView' # 用app的ua,不填也能跑
|
||||
|
||||
user_cookie = os.getenv("ccdck")
|
||||
doll_flag = 1 # 1开启抓娃娃,0关闭
|
||||
basket_flag = 1 # 1开启投篮球,0关闭
|
||||
|
||||
doll_draw = 9 # 抓娃娃次数,为几一天只抽几次,总数小于10
|
||||
basket_draw = 4 # 投篮球次数,为几一天只玩几次,总数小于5
|
||||
debug = 0 # 开启调式
|
||||
|
||||
|
||||
class CCD:
|
||||
user_region = None
|
||||
zhc_token = None
|
||||
wx_uuid = None
|
||||
base_header = {
|
||||
'Host': 'm3.dmsp.ccb.com',
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'user-agent': app_ua,
|
||||
'origin': 'https://m3.dmsp.ccb.com',
|
||||
'x-requested-with': 'com.tencent.mm',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
token_headers = {
|
||||
'Host': 'event.ccbft.com',
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'user-agent': app_ua,
|
||||
'origin': 'https://event.ccbft.com',
|
||||
'x-requested-with': 'com.tencent.mm',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
|
||||
def __init__(self, ccb_cookie):
|
||||
self.w_param = ccb_cookie.split("#")[0]
|
||||
self.zq_cookie = ccb_cookie.split("#")[1]
|
||||
self.bus_headers = {
|
||||
'Host': 'fission-events.ccbft.com',
|
||||
'pragma': 'no-cache',
|
||||
'cache-control': 'no-cache',
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'x-csrf-token': None,
|
||||
'x-requested-with': 'XMLHttpRequest',
|
||||
'authorization': None,
|
||||
'user-agent': app_ua,
|
||||
'origin': 'https://fission-events.ccbft.com',
|
||||
'sec-fetch-site': 'same-origin',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'referer': 'https://fission-events.ccbft.com/a/224/kmenz5Zd/game',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'Cookie': self.zq_cookie,
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
|
||||
def run(self):
|
||||
self.get_token()
|
||||
self.region()
|
||||
self.user_info()
|
||||
self.sign_in()
|
||||
self.getlist()
|
||||
self.answer_state()
|
||||
print('\n======== 专区任务 ========')
|
||||
time.sleep(random.randint(3, 5))
|
||||
self.get_csrftoken()
|
||||
self.get_user_ccd()
|
||||
|
||||
# 随机延迟默认1-1.5
|
||||
def sleep(self, min_delay=1, max_delay=1.5):
|
||||
delay = random.uniform(min_delay, max_delay)
|
||||
time.sleep(delay)
|
||||
|
||||
def send_request(self, url, headers, data=None, method='GET', cookies=None):
|
||||
with requests.Session() as session:
|
||||
session.headers.update(headers)
|
||||
if cookies is not None:
|
||||
session.cookies.update(cookies)
|
||||
|
||||
try:
|
||||
if method == 'GET':
|
||||
response = session.get(url, timeout = 3)
|
||||
elif method == 'POST':
|
||||
response = session.post(url, json = data, timeout = 3)
|
||||
else:
|
||||
raise ValueError('Invalid HTTP method.')
|
||||
|
||||
response.raise_for_status()
|
||||
if debug:
|
||||
print(response.json())
|
||||
return response.json()
|
||||
|
||||
except requests.Timeout as e:
|
||||
print("请求超时:", str(e))
|
||||
|
||||
except requests.RequestException as e:
|
||||
print("请求错误:", str(e))
|
||||
|
||||
except Exception as e:
|
||||
print("其他错误:", str(e))
|
||||
|
||||
# 获取token
|
||||
def get_token(self):
|
||||
try:
|
||||
url = 'https://event.ccbft.com/api/flow/nf/shortLink/redirect/ccb_gjb?shareMDID=ZHCMD_8460172f-48b2-4612-a069-f04611760445&shareDepth=1&CCB_Chnl=6000199'
|
||||
payload = {
|
||||
"appId": "wxd513efdbf26b5744",
|
||||
"shortId": "polFsWD2jPnjhOx9ruVBcA",
|
||||
"archId": "ccb_gjb",
|
||||
"wParam": self.w_param,
|
||||
"channelId": "wx", "ifWxFirst": True
|
||||
}
|
||||
|
||||
return_data = self.send_request(url, headers = self.token_headers, data = payload, method = 'POST')
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
raise ValueError('刷新token,请检查变量格式是否正确')
|
||||
redirect_url = return_data['data'].get('redirectUrl')
|
||||
self.wx_uuid = return_data['data'].get('wxUUID')
|
||||
token = self.extract_token(redirect_url)
|
||||
if token:
|
||||
self.zhc_token = token
|
||||
self.auth_login(token)
|
||||
else:
|
||||
raise ValueError('刷新token失败')
|
||||
|
||||
except ValueError as e:
|
||||
print(e)
|
||||
|
||||
def extract_token(self, redirect_url):
|
||||
start_token_index = redirect_url.find("__dmsp_token=") + len("__dmsp_token=")
|
||||
end_token_index = redirect_url.find("&", start_token_index)
|
||||
|
||||
token = None
|
||||
if start_token_index != -1 and end_token_index != -1:
|
||||
token = redirect_url[start_token_index:end_token_index]
|
||||
return token
|
||||
|
||||
# 登录
|
||||
def auth_login(self, token):
|
||||
url = 'https://m3.dmsp.ccb.com/api/businessCenter/auth/login'
|
||||
payload = {"token": token, "channelId": "wx"}
|
||||
return_data = self.send_request(url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
|
||||
# 获取用户地区代码
|
||||
def region(self):
|
||||
url = f'https://m3.dmsp.ccb.com/api/businessCenter/gis/getAddress?zhc_token={self.zhc_token}'
|
||||
payload = {"lgt": 116.495434, "ltt": 40.3976539, "flag": 1}
|
||||
return_data = self.send_request(url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
self.user_region = return_data['data'].get('code')
|
||||
|
||||
# 查询用户等级
|
||||
def user_info(self):
|
||||
url = f'https://m3.dmsp.ccb.com/api/businessCenter/mainVenue/getUserState?zhc_token={self.zhc_token}'
|
||||
return_data = self.send_request(url, headers = self.base_header, method = 'POST')
|
||||
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
current_level = return_data['data'].get('currentLevel')
|
||||
need_exp = return_data['data'].get('needGrowthExp') - return_data['data'].get('currentLevelGrowthExp')
|
||||
level = return_data['data'].get('currentProtectLevel')
|
||||
reward_id = return_data['data'].get('zhcRewardInfo').get('id')
|
||||
reward_type = return_data['data'].get('zhcRewardInfo').get('rewardType')
|
||||
reward_value = return_data['data'].get('zhcRewardInfo').get('rewardValue')
|
||||
print(f"当前用户等级{current_level}级")
|
||||
print(f"距下一级还需{need_exp}成长值")
|
||||
self.income(level, reward_id, reward_type, reward_value)
|
||||
|
||||
# 每日营收
|
||||
def income(self, level, reward_id, reward_type, reward_value):
|
||||
url = f'https://m3.dmsp.ccb.com/api/businessCenter/mainVenue/receiveLevelReward?zhc_token={self.zhc_token}'
|
||||
payload = {"level": level, "rewardId": reward_id, "levelRewardType": reward_type}
|
||||
return_data = self.send_request(url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
print(f"今日营收: {reward_value}cc豆")
|
||||
|
||||
# 签到
|
||||
def sign_in(self):
|
||||
signin_url = f'https://m3.dmsp.ccb.com/api/businessCenter/taskCenter/signin?zhc_token={self.zhc_token}'
|
||||
signin_payload = {"taskId": 96}
|
||||
return_data = self.send_request(url = signin_url, headers = self.base_header, data = signin_payload,
|
||||
method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
print(return_data['message'])
|
||||
|
||||
# 获取浏览任务列表
|
||||
def getlist(self):
|
||||
list_url = f'https://m3.dmsp.ccb.com/api/businessCenter/taskCenter/getTaskList?zhc_token={self.zhc_token}'
|
||||
payload = {"publishChannels": "03", "regionId": self.user_region} # 440300
|
||||
|
||||
return_data = self.send_request(url = list_url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
|
||||
task_list = return_data['data'].get('浏览任务')
|
||||
|
||||
for value in task_list:
|
||||
complete_status = value['taskDetail'].get('completeStatus')
|
||||
|
||||
if complete_status == '02':
|
||||
print(f"--已完成: {value['taskName']}")
|
||||
else:
|
||||
task_id = value['id']
|
||||
task_name = value['taskName']
|
||||
print(f'---去完成: {task_name}')
|
||||
self.execute_task(task_id)
|
||||
|
||||
def execute_task(self, task_id):
|
||||
browse_url = f'https://m3.dmsp.ccb.com/api/businessCenter/taskCenter/browseTask?zhc_token={self.zhc_token}'
|
||||
receive_url = f'https://m3.dmsp.ccb.com/api/businessCenter/taskCenter/receiveReward?zhc_token={self.zhc_token}'
|
||||
payload = {"taskId": task_id, "browseSec": 1}
|
||||
|
||||
browse_data = self.send_request(browse_url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
|
||||
if browse_data['code'] != 200:
|
||||
print(browse_data['message'])
|
||||
return
|
||||
print(browse_data['message'])
|
||||
|
||||
receive_data = self.send_request(receive_url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if receive_data['code'] != 200:
|
||||
print(receive_data['message'])
|
||||
return
|
||||
print(receive_data['message'])
|
||||
|
||||
# 获取答题state
|
||||
def answer_state(self):
|
||||
url = f'https://m3.dmsp.ccb.com/api/businessCenter/zhcUserDayAnswer/getAnswerStatus?zhc_token={self.zhc_token}'
|
||||
return_data = self.send_request(url, headers = self.base_header)
|
||||
if return_data['code'] == 200:
|
||||
if return_data['data'].get('answerState') == 'Y':
|
||||
return print(return_data['message'])
|
||||
else:
|
||||
# 获取今日题目
|
||||
print('获取今日题目')
|
||||
self.get_question()
|
||||
else:
|
||||
return print(return_data['message'])
|
||||
|
||||
# 获取题目
|
||||
def get_question(self):
|
||||
url = f'https://m3.dmsp.ccb.com/api/businessCenter/zhcUserDayAnswer/queryQuestionToday?zhc_token={self.zhc_token}'
|
||||
return_data = self.send_request(url, headers = self.base_header)
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
question_id = return_data['data'].get('questionId')
|
||||
remark = return_data['data'].get('remark')
|
||||
answer_list = return_data['data'].get('answerList')
|
||||
if remark:
|
||||
# 匹配答案
|
||||
print('开始匹配正确答案')
|
||||
pattern = r"[,。?!“”、]"
|
||||
remark_cleaned = re.sub(pattern, "", remark)
|
||||
|
||||
max_match_count = 0
|
||||
right_answer_id = None
|
||||
for answer in answer_list:
|
||||
answer_id = answer["id"]
|
||||
answer_result = answer["answerResult"]
|
||||
answer_cleaned = re.sub(pattern, "", answer_result)
|
||||
|
||||
match_count = 0
|
||||
for word in answer_cleaned:
|
||||
if word in remark_cleaned:
|
||||
match_count += 1
|
||||
remark_cleaned = remark_cleaned.replace(word, "", 1)
|
||||
|
||||
if match_count > max_match_count:
|
||||
max_match_count = match_count
|
||||
right_answer_id = answer_id
|
||||
print("匹配成功,开始答题")
|
||||
self.answer(question_id, right_answer_id)
|
||||
else:
|
||||
print('暂无提示随机答题')
|
||||
right_answer_id = random.choice(answer_list)['id']
|
||||
self.answer(question_id, right_answer_id)
|
||||
|
||||
# 答题
|
||||
def answer(self, question_id, answer_ids):
|
||||
url = f'https://m3.dmsp.ccb.com/api/businessCenter/zhcUserDayAnswer/userAnswerQuestion?zhc_token={self.zhc_token}'
|
||||
payload = {"questionId": question_id, "answerIds": answer_ids}
|
||||
return_data = self.send_request(url, headers = self.base_header, data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data['message'])
|
||||
return
|
||||
print(return_data['message'])
|
||||
|
||||
# ---------下面是精彩专区任务--------
|
||||
def get_csrftoken(self):
|
||||
url1 = 'https://event.ccbft.com/api/flow/nf/shortLink/redirect/ccb_gjb?CCB_Chnl=6000110'
|
||||
url2 = 'https://fission-events.ccbft.com/a/224/kmenz5Zd?CCB_Chnl=6000110'
|
||||
payload1 = '{{"appId":"wxd513efdbf26b5744","shortId":"jd9H3uCkzHaQBn8aeq5NWQ","archId":"ccb_gjb","channelId":"wx","ifWxFirst":false,"wxUUID":"{}"}}'.format(
|
||||
self.wx_uuid)
|
||||
|
||||
headers = {
|
||||
'Host': 'fission-events.ccbft.com',
|
||||
'pragma': 'no-cache',
|
||||
'cache-control': 'no-cache',
|
||||
'upgrade-insecure-requests': '1',
|
||||
'user-agent': app_ua,
|
||||
'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.9',
|
||||
'x-requested-with': 'com.ccb.longjiLife',
|
||||
'sec-fetch-site': 'same-site',
|
||||
'sec-fetch-mode': 'navigate',
|
||||
'sec-fetch-dest': 'document',
|
||||
'referer': 'https://event.ccbft.com/',
|
||||
'accept-encoding': 'gzip, deflate',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'cookie': self.zq_cookie
|
||||
}
|
||||
return_data = requests.post(url1, headers = self.token_headers, data = payload1).json()
|
||||
if return_data['code'] != 200:
|
||||
return print(return_data['message'])
|
||||
|
||||
redirect_url = return_data['data'].get('redirectUrl')
|
||||
requests.get(url = redirect_url, headers = headers)
|
||||
|
||||
try:
|
||||
res = requests.get(url = url2, headers = headers)
|
||||
data = res.text
|
||||
csrf_token, authorization = self.extract_csrf_and_auth(data)
|
||||
|
||||
if csrf_token and authorization:
|
||||
self.bus_headers['x-csrf-token'] = csrf_token
|
||||
self.bus_headers['authorization'] = f'Bearer {authorization}'
|
||||
self.sleep()
|
||||
|
||||
print('\n----代发专区----')
|
||||
# self.game_id()
|
||||
print('\n----养老专区----')
|
||||
self.turn()
|
||||
print('\n----跨境专区----')
|
||||
self.border_draw()
|
||||
print('\n----商户专区----')
|
||||
self.shoplist()
|
||||
print('\n----消保专区----\n---登山游戏----')
|
||||
self.fire()
|
||||
print('\n---抓娃娃游戏----')
|
||||
self.get_doll()
|
||||
print('\n---投篮球游戏----')
|
||||
self.do_basket()
|
||||
else:
|
||||
print('CSRF token or Authorization not found.')
|
||||
except requests.RequestException as e:
|
||||
print(f"请求异常: {e}")
|
||||
|
||||
def extract_csrf_and_auth(self, data):
|
||||
csrf_token_pattern = r'<meta\s+name=csrf-token\s+content="([^"]+)">'
|
||||
authorization_pattern = r'<meta\s+name=Authorization\s+content="([^"]+)">'
|
||||
csrf_token_match = re.search(csrf_token_pattern, data)
|
||||
authorization_match = re.search(authorization_pattern, data)
|
||||
if csrf_token_match and authorization_match:
|
||||
return csrf_token_match.group(1), authorization_match.group(1)
|
||||
|
||||
return None, None
|
||||
|
||||
# 代发专区
|
||||
|
||||
# 养老专区新
|
||||
def turn(self):
|
||||
index_url = 'https://fission-events.ccbft.com/a/224/5P87Md3y/index?CCB_Chnl=2030005'
|
||||
tasklist_url = 'https://fission-events.ccbft.com/activity/dmspmileage/getindexdata/224/5P87Md3y'
|
||||
go_url = 'https://fission-events.ccbft.com/activity/dmspmileage/go/224/5P87Md3y'
|
||||
|
||||
requests.get(url = index_url, headers = self.bus_headers)
|
||||
tasks_data = self.send_request(tasklist_url, headers = self.bus_headers)
|
||||
|
||||
if tasks_data['status'] != 'success':
|
||||
return print(tasks_data['message'])
|
||||
|
||||
task_list = tasks_data.get('data', {}).get('acttask', {}).get('limit_time')
|
||||
|
||||
for task in task_list:
|
||||
ident = task.get('ident')
|
||||
title = task.get('title')
|
||||
state = task.get('state')
|
||||
reward = task.get('reward')
|
||||
|
||||
if state == 1:
|
||||
print(f'--已完成: {title}')
|
||||
else:
|
||||
print(f'---去完成: {title}')
|
||||
dotask_url = 'https://fission-events.ccbft.com/activity/dmspmileage/taskgo/224/5P87Md3y'
|
||||
do_payload = {"type": "limit_time", "ident": ident}
|
||||
do_data = self.send_request(dotask_url, headers = self.bus_headers, data = do_payload, method = 'POST')
|
||||
|
||||
if do_data['status'] != 'success':
|
||||
return print(do_data['message'])
|
||||
print(f'--浏览成功获得: {reward} 里程')
|
||||
self.sleep()
|
||||
|
||||
self.sleep()
|
||||
query_data = self.send_request(tasklist_url, headers = self.bus_headers)
|
||||
surplus = query_data.get('data', {}).get('mileage').get('surplus')
|
||||
rewards = query_data.get('data', {}).get('map', {}).get('config').get('node')
|
||||
if surplus != '0':
|
||||
go_data = self.send_request(go_url, headers = self.bus_headers, method = 'POST')
|
||||
|
||||
mileage_go = go_data.get('data', {}).get('mileage_go', '')
|
||||
user_node = go_data.get('data', {}).get('user_node_value')
|
||||
print(f'前进: {mileage_go}里程, 当前: {user_node}里程')
|
||||
|
||||
for reward in rewards:
|
||||
value = reward.get('value')
|
||||
state = reward.get('state')
|
||||
if value == 0 or state != 3:
|
||||
continue
|
||||
|
||||
getreward_url = 'https://fission-events.ccbft.com/activity/dmspmileage/draw/224/5P87Md3y'
|
||||
reward_payload = {"value": value}
|
||||
rewrd_data = self.send_request(getreward_url, headers = self.bus_headers, data = reward_payload,
|
||||
method = 'POST')
|
||||
if rewrd_data['status'] != 'success':
|
||||
return print(rewrd_data['message'])
|
||||
prizename = rewrd_data.get('data', {}).get('prizename')
|
||||
print(f'领取 {value}里程奖励: {prizename}')
|
||||
|
||||
# 跨境专区新
|
||||
def border_draw(self):
|
||||
index_url = 'https://fission-events.ccbft.com/a/224/1m0xM2mx/index?CCB_Chnl=6000117'
|
||||
query_url = 'https://fission-events.ccbft.com/Component/draw/getUserExtInfo/224/1m0xM2mx'
|
||||
draw_url = 'https://fission-events.ccbft.com/Component/draw/commonDrawPrize/224/1m0xM2mx'
|
||||
requests.get(url = index_url, headers = self.bus_headers)
|
||||
query_data = self.send_request(query_url, headers = self.bus_headers)
|
||||
if query_data['status'] != 'success':
|
||||
return print(query_data['message'])
|
||||
remain = query_data['data'].get('remain_num')
|
||||
if remain == '0':
|
||||
return print('--当前剩余抽奖次数为0')
|
||||
self.sleep()
|
||||
draw_data = self.send_request(draw_url, headers = self.bus_headers, method = 'POST')
|
||||
if draw_data['status'] != 'success':
|
||||
print(draw_data['message'])
|
||||
return
|
||||
print(f"--{draw_data['message']}---{draw_data['data'].get('prizename')}")
|
||||
|
||||
# 商户专区新
|
||||
def shoplist(self):
|
||||
index_url = 'https://fission-events.ccbft.com/a/224/8ZWXBM3w/index?CCB_Chnl=6000115'
|
||||
task_url = 'https://fission-events.ccbft.com/Component/task/lists/224/8ZWXBM3w'
|
||||
requests.get(url = index_url, headers = self.bus_headers)
|
||||
tasks_data = self.send_request(task_url, headers = self.bus_headers)
|
||||
self.sleep()
|
||||
if tasks_data['status'] != 'success':
|
||||
print(tasks_data['message'])
|
||||
return
|
||||
task_list = tasks_data['data'].get('userTask')
|
||||
for value in task_list:
|
||||
complete_status = value['finish']
|
||||
if complete_status == 1:
|
||||
print('--已完成该任务,继续浏览下一个任务')
|
||||
continue
|
||||
task_id = value['id']
|
||||
do_url = 'https://fission-events.ccbft.com/Component/task/do/224/8ZWXBM3w'
|
||||
payload = {"id": task_id}
|
||||
do_data = self.send_request(do_url, headers = self.bus_headers, data = payload, method = 'POST')
|
||||
if do_data['status'] != 'success':
|
||||
print(do_data['message'])
|
||||
return
|
||||
print('--浏览完成')
|
||||
time.sleep(3)
|
||||
|
||||
print('--已完成全部任务,去掷骰子')
|
||||
time.sleep(3)
|
||||
self.throw()
|
||||
|
||||
def throw(self):
|
||||
query_url = 'https://fission-events.ccbft.com/activity/dmspshzq/getIndex/224/8ZWXBM3w'
|
||||
query_data = self.send_request(query_url, headers = self.bus_headers)
|
||||
if query_data['status'] != 'success':
|
||||
print(query_data['message'])
|
||||
return
|
||||
remain_num = query_data['data'].get('remain_num')
|
||||
if remain_num == '0':
|
||||
return print('当前没有骰子了')
|
||||
self.sleep()
|
||||
num = int(remain_num)
|
||||
draw_url = 'https://fission-events.ccbft.com/activity/dmspshzq/drawPrize/224/8ZWXBM3w'
|
||||
payload = {}
|
||||
prizes = []
|
||||
for _ in range(num):
|
||||
draw_data = self.send_request(draw_url, headers = self.bus_headers, data = payload, method = 'POST')
|
||||
if draw_data['status'] != 'success':
|
||||
print(draw_data['message'])
|
||||
return
|
||||
add_step = draw_data['data'].get('add_step')
|
||||
current_step = draw_data['data'].get('current_step')
|
||||
prize_name = draw_data['data'].get('prize_name')
|
||||
prizes.append(f"前进步数:{add_step},当前步数:{current_step}\n获得奖励:{prize_name}")
|
||||
time.sleep(3)
|
||||
|
||||
if prizes:
|
||||
print('\n'.join(prizes))
|
||||
|
||||
# 消保专区新
|
||||
def fire(self):
|
||||
num_url = 'https://fission-events.ccbft.com/activity/dmspxbmountain/getUserInfo/224/jmXN4Q3d'
|
||||
num_data = self.send_request(num_url, headers = self.bus_headers)
|
||||
self.sleep()
|
||||
if num_data.get('status') != 'success':
|
||||
print(num_data.get('message'))
|
||||
return
|
||||
remain_num = num_data['data'].get('remain_num', 0)
|
||||
num = int(remain_num)
|
||||
if num == 0:
|
||||
print('当前剩余游戏次数为0')
|
||||
return
|
||||
id_url = 'https://fission-events.ccbft.com/activity/dmspxbmountain/startChallenge/224/jmXN4Q3d'
|
||||
draw_url = 'https://fission-events.ccbft.com/Component/draw/commonDrawPrize/224/jmXN4Q3d'
|
||||
payload = {}
|
||||
for _ in range(num):
|
||||
id_data = self.send_request(id_url, headers = self.bus_headers, data = payload, method = 'POST')
|
||||
if id_data.get('status') != 'success':
|
||||
print(id_data.get('message'))
|
||||
return
|
||||
game_id = id_data.get('data')
|
||||
print('获取成功,开始登山游戏')
|
||||
time.sleep(20)
|
||||
game_url = 'https://fission-events.ccbft.com/activity/dmspxbmountain/doChallenge/224/jmXN4Q3d'
|
||||
payload_game = {"l_id": game_id, "stage": 13, "score": 200}
|
||||
msg_data = self.send_request(game_url, headers = self.bus_headers, data = payload_game,
|
||||
method = 'POST')
|
||||
if msg_data.get('status') != 'success':
|
||||
print(msg_data.get('message'))
|
||||
return
|
||||
draw_payload = {}
|
||||
draw_data = self.send_request(draw_url, headers = self.bus_headers, data = draw_payload,
|
||||
method = 'POST')
|
||||
if draw_data.get('status') != 'success':
|
||||
print(draw_data.get('message'))
|
||||
return
|
||||
mes = draw_data.get('message')
|
||||
prizename = draw_data.get('data', {}).get('prizename', '')
|
||||
print(f'{mes} {prizename}')
|
||||
time.sleep(5)
|
||||
|
||||
# 抓娃娃
|
||||
def get_doll(self):
|
||||
if doll_flag == 0:
|
||||
print('已关闭抓娃娃游戏')
|
||||
return
|
||||
query_url = 'https://fission-events.ccbft.com/Component/draw/getUserCCB/224/xPOLkama'
|
||||
draw_url = 'https://fission-events.ccbft.com/Component/draw/dmspCommonCcbDrawPrize/224/xPOLkama'
|
||||
|
||||
query_data = self.send_request(query_url, headers = self.bus_headers)
|
||||
draw_num = query_data.get('data', {}).get('user_day_draw_num', 0)
|
||||
num = 10 - int(draw_num)
|
||||
num2 = 10 - doll_draw
|
||||
print(f'--当前剩余游戏次数: {num}')
|
||||
|
||||
while num > num2:
|
||||
draw_payload = {}
|
||||
draw_data = self.send_request(draw_url, headers = self.bus_headers, data = draw_payload, method = 'POST')
|
||||
if draw_data.get('status') != 'success':
|
||||
print(draw_data.get('message'))
|
||||
break
|
||||
msg = draw_data.get('message')
|
||||
prizename = draw_data.get('data', {}).get('prizename', '')
|
||||
print(f'{msg} {prizename}')
|
||||
time.sleep(5)
|
||||
num -= 1
|
||||
|
||||
# 投篮球
|
||||
def do_basket(self):
|
||||
if basket_flag == 0:
|
||||
print('已关闭投篮球游戏')
|
||||
return
|
||||
index_url = 'https://fission-events.ccbft.com/a/224/eZgpye3y/index?CCB_Chnl=1000181'
|
||||
query_url = 'https://fission-events.ccbft.com/activity/dmspdunk/user/224/eZgpye3y'
|
||||
requests.get(url = index_url, headers = self.bus_headers)
|
||||
query_data = self.send_request(query_url, headers = self.bus_headers)
|
||||
remain_daily = query_data.get('data', {}).get('remain_daily_times')
|
||||
num = 5 - basket_draw
|
||||
print(f'--当前剩余游戏次数: {remain_daily}')
|
||||
self.sleep()
|
||||
|
||||
while remain_daily > num:
|
||||
id_url = 'https://fission-events.ccbft.com/activity/dmspdunk/start/224/eZgpye3y'
|
||||
id_data = self.send_request(id_url, headers = self.bus_headers, method = 'POST')
|
||||
|
||||
if id_data.get('status') != 'success':
|
||||
print(id_data.get('message'))
|
||||
break
|
||||
game_id = id_data.get('data', {}).get('id')
|
||||
time.sleep(5)
|
||||
activity_url = f'https://fission-events.ccbft.com/activity/dmspdunk/scene/224/eZgpye3y?id={game_id}'
|
||||
activity_data = self.send_request(activity_url, headers = self.bus_headers)
|
||||
remain_times = activity_data.get('data', {}).get('remain_times')
|
||||
basket_num = int(remain_times) # 篮球数量
|
||||
while basket_num > 0:
|
||||
dogame_url = 'https://fission-events.ccbft.com/activity/dmspdunk/shot/224/eZgpye3y'
|
||||
payload = {'id': game_id}
|
||||
dogeme_data = self.send_request(dogame_url, headers = self.bus_headers, data = payload, method = 'POST')
|
||||
if dogeme_data.get('status') != 'success':
|
||||
print(dogeme_data.get('message'))
|
||||
continue
|
||||
win_times = dogeme_data.get('data', {}).get('win_times') # 投中数量
|
||||
got_ccb = dogeme_data.get('data', {}).get('got_ccb') # 获得cc豆
|
||||
print(f'当前投中篮球数量: {win_times}')
|
||||
|
||||
if basket_num == 1:
|
||||
print(f'游戏结束,获得cc豆数量: {got_ccb}')
|
||||
time.sleep(2.5)
|
||||
basket_num -= 1
|
||||
remain_daily -= 1
|
||||
|
||||
# 查询cc豆及过期cc豆时间
|
||||
def get_user_ccd(self):
|
||||
url_get_ccd = f'https://m3.dmsp.ccb.com/api/businessCenter/user/getUserCCD?zhc_token={self.zhc_token}'
|
||||
url_get_expired_ccd = f'https://m3.dmsp.ccb.com/api/businessCenter/user/getUserCCDExpired?zhc_token={self.zhc_token}'
|
||||
|
||||
try:
|
||||
return_data1 = self.send_request(url_get_ccd, headers = self.base_header, data = {},
|
||||
method = 'POST')
|
||||
self.sleep()
|
||||
return_data2 = self.send_request(url_get_expired_ccd, headers = self.base_header,
|
||||
data = {}, method = 'POST')
|
||||
if return_data1['code'] != 200:
|
||||
raise Exception(return_data1['message'])
|
||||
elif return_data2['code'] != 200:
|
||||
raise Exception(return_data2['message'])
|
||||
count1 = return_data1['data'].get('userCCBeanInfo').get('count')
|
||||
count2 = return_data2['data'].get('userCCBeanExpiredInfo').get('count')
|
||||
expire_date_str = return_data2['data'].get('userCCBeanExpiredInfo').get('expireDate')
|
||||
if expire_date_str:
|
||||
expire_date = datetime.fromisoformat(expire_date_str)
|
||||
formatted_date = expire_date.strftime('%Y-%m-%d %H:%M:%S')
|
||||
print(f'\n当前cc豆:{count1},有{count2} cc豆将于{formatted_date}过期')
|
||||
else:
|
||||
print("expire_date_str is empty")
|
||||
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cookies = user_cookie.split("@")
|
||||
msg = f"建行cc豆共获取到{len(cookies)}个账号"
|
||||
print(msg)
|
||||
|
||||
for i, cookie in enumerate(cookies, start = 1):
|
||||
print(f"\n======== ▷ 第 {i} 个账号 ◁ ========")
|
||||
CCD(cookie).run()
|
||||
print("\n随机等待5-10s进行下一个账号")
|
||||
time.sleep(random.randint(5, 10))
|
||||
601
必看免费小说V1.5.js
Normal file
601
必看免费小说V1.5.js
Normal file
File diff suppressed because one or more lines are too long
BIN
悟空浏览器免root.apk
Normal file
BIN
悟空浏览器免root.apk
Normal file
Binary file not shown.
17
望潮-输出日志版本.js
Normal file
17
望潮-输出日志版本.js
Normal file
File diff suppressed because one or more lines are too long
914
爱嵊州-v1.5.js
Normal file
914
爱嵊州-v1.5.js
Normal file
File diff suppressed because one or more lines are too long
344
美团每日赚A.py
Normal file
344
美团每日赚A.py
Normal file
@@ -0,0 +1,344 @@
|
||||
# 软件:美团app
|
||||
# 功能:每日赚钱
|
||||
# A版,用户部分信息,适用于不会抓包用户,B版信息更全,更真实,适用于抓包用户,目前两个版本都正常跑。自己选择。
|
||||
# 抓包 https://passport.meituan.com/useraccount/ilogin微信登录,复制链接,抓取userId=xx&token=xxx
|
||||
# 变量名称 mtck = userId=xx&token=xxx 多账号@分割
|
||||
# 跑之前进活动看下,是否正常,后续不用管,draw = 0 为0不抽奖,为1抽奖。抽奖是没有问题,自行决定
|
||||
# 定时 : 一天一次
|
||||
# 每日随机提现,默认不开启,没抓
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import string
|
||||
import time
|
||||
|
||||
import requests
|
||||
|
||||
cookies = os.getenv("mtck")
|
||||
draw = 0 # 为0不抽奖,为1抽奖。抽奖是没有问题,自行决定
|
||||
|
||||
|
||||
class MT:
|
||||
current_time = int(round(time.time() * 1000))
|
||||
url = 'https://game.meituan.com/earn-daily/msg/post'
|
||||
|
||||
def __init__(self, cookie, uuid):
|
||||
self.cookie = cookie
|
||||
userid_match = re.search(r'userId=(\d+)', self.cookie)
|
||||
token_match = re.search(r'token=([A-Za-z0-9_-]+)', self.cookie)
|
||||
|
||||
if userid_match and token_match:
|
||||
self.userId = userid_match.group(1)
|
||||
self.token = token_match.group(1)
|
||||
else:
|
||||
print("未找到userid和token值")
|
||||
self.uuid = uuid
|
||||
|
||||
characters = string.digits + string.ascii_lowercase
|
||||
self.nonce_str = ''.join(random.choice(characters) for _ in range(16))
|
||||
self.headers = {
|
||||
'Host': 'game.meituan.com',
|
||||
'Connection': 'keep-alive',
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'acToken': 'undefined',
|
||||
'mToken': 'undefined',
|
||||
'User-Agent': self.get_ua(),
|
||||
'Origin': 'https://awp.meituan.com',
|
||||
'Sec-Fetch-Site': 'same-site',
|
||||
'Sec-Fetch-Mode': 'cors',
|
||||
'Sec-Fetch-Dest': 'empty',
|
||||
'Referer': 'https://awp.meituan.com/',
|
||||
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'Cookie': f'utm_medium=android;uuid={self.uuid};token={self.token};mt_c_token={self.token};',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
self.base_data = {
|
||||
"acToken": None,
|
||||
"riskParams": {
|
||||
"ip": "",
|
||||
"fingerprint": 'undefined',
|
||||
"cityId": "1",
|
||||
"platform": 4,
|
||||
"app": 0,
|
||||
"version": "12.9.209",
|
||||
"uuid": self.uuid
|
||||
}
|
||||
}
|
||||
|
||||
def run(self):
|
||||
self.login()
|
||||
self.task_list()
|
||||
self.get_user_info()
|
||||
|
||||
def send_request(self, url=None, headers=None, data=None, method='GET', cookies=None):
|
||||
if url is None:
|
||||
url = self.url
|
||||
if headers is None:
|
||||
headers = self.headers
|
||||
with requests.Session() as session:
|
||||
session.headers.update(headers)
|
||||
if cookies is not None:
|
||||
session.cookies.update(cookies)
|
||||
|
||||
try:
|
||||
if method == 'GET':
|
||||
response = session.get(url, timeout = 3)
|
||||
elif method == 'POST':
|
||||
response = session.post(url, json = data, timeout = 3)
|
||||
else:
|
||||
raise ValueError('Invalid HTTP method.')
|
||||
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
except requests.Timeout as e:
|
||||
print("请求超时:", str(e))
|
||||
|
||||
except requests.RequestException as e:
|
||||
print("请求错误:", str(e))
|
||||
|
||||
except Exception as e:
|
||||
print("其他错误:", str(e))
|
||||
|
||||
# 随机延迟默认1-1.5s
|
||||
def sleep(self, min_delay=1, max_delay=2):
|
||||
delay = random.uniform(min_delay, max_delay)
|
||||
time.sleep(delay)
|
||||
|
||||
# 随机ua
|
||||
def get_ua(self):
|
||||
android_version = f'{random.randint(10, 12)}.0' # 随机生成 Android 版本号
|
||||
chrome_version = f'{random.randint(80, 90)}.0.{random.randint(4000, 5000)}.210' # 随机生成 Chrome 版本号
|
||||
ua_string = f'Mozilla/5.0 (Linux; Android {android_version}; {self.get_model()}) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/{chrome_version} Mobile Safari/537.36 TitansX/12.9.1 KNB/1.2.0 android/{android_version} mt/com.sankuai.meituan/12.9.209 App/10120/12.9.209 MeituanGroup/12.9.209'
|
||||
return ua_string
|
||||
|
||||
def get_model(self):
|
||||
models = ['M2012K10C', '22041211AC', 'ABR-AL80', 'AGT-AN00', 'M2011K2C']
|
||||
return random.choice(models)
|
||||
|
||||
# 登录
|
||||
def login(self):
|
||||
url = f'https://game.meituan.com/earn-daily/login/loginMgc?gameType=10402&mtUserId={self.userId}&mtToken={self.token}&mtDeviceId={self.uuid}&nonceStr={self.nonce_str}&externalStr=%7B%22cityId%22%3A%221%22%7D'
|
||||
return_data = self.send_request(url)
|
||||
self.sleep()
|
||||
if return_data['code'] != 0:
|
||||
return print(return_data)
|
||||
|
||||
access_token = return_data['response'].get('accessToken')
|
||||
self.headers['acToken'] = access_token
|
||||
self.headers['mToken'] = self.token
|
||||
self.base_data['acToken'] = access_token
|
||||
|
||||
# task_list
|
||||
def task_list(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1001
|
||||
payload['data'] = {
|
||||
"externalStr": f'{{"cityId": \'"1"\'}}'
|
||||
}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
task_list = return_data['data'].get('taskInfoList')
|
||||
sign_state = return_data['data'].get('signInPopModel').get('rewardModelList')
|
||||
|
||||
# 每日签到
|
||||
for sign in sign_state:
|
||||
current = sign.get('current', False)
|
||||
state = sign.get('state', 0)
|
||||
|
||||
if not current:
|
||||
continue
|
||||
if state == 2:
|
||||
print('今日已打卡签到')
|
||||
break
|
||||
print('去完成:现金打卡')
|
||||
self.sign_in()
|
||||
break
|
||||
|
||||
# 浏览任务
|
||||
for task in task_list:
|
||||
task_id = task['id']
|
||||
if task_id in [15099, 15278, 780]:
|
||||
continue
|
||||
daily_finish = task.get('dailyFinishTimes')
|
||||
max_finish = task.get('mgcTaskBaseInfo', {}).get('curPeriodMaxFinishTimes')
|
||||
name = task.get('mgcTaskBaseInfo', {}).get('viewTitle')
|
||||
if daily_finish == max_finish:
|
||||
print(f'今日已完成:{name}')
|
||||
continue
|
||||
num = max_finish - daily_finish
|
||||
for _ in range(num):
|
||||
self.go_shoping(task_id, name)
|
||||
|
||||
time.sleep(2)
|
||||
new_data = self.send_request(data = payload, method = 'POST')
|
||||
base_model = new_data['data'].get('playerBaseModel', {})
|
||||
# 开红包
|
||||
packet_amount = base_model.get('redPacketInfo').get('leftRedPacketAmount')
|
||||
|
||||
if packet_amount == 0:
|
||||
print('今日红包已经开完了')
|
||||
else:
|
||||
print(f'今日可开红包次数:{packet_amount}次')
|
||||
for _ in range(packet_amount):
|
||||
self.open_packet()
|
||||
time.sleep(2)
|
||||
new_data2 = self.send_request(data = payload, method = 'POST')
|
||||
base_model2 = new_data2['data'].get('playerBaseModel', {})
|
||||
draw_info = base_model2.get('lotteryInfo').get('leftLotteryTimesAmount')
|
||||
|
||||
# 抽奖
|
||||
if draw_info == 0:
|
||||
print('剩余抽奖次数为0')
|
||||
else:
|
||||
print(f'今日可抽奖次数:{draw_info}次')
|
||||
if not draw:
|
||||
print('已关闭抽奖')
|
||||
else:
|
||||
for _ in range(draw_info):
|
||||
self.draw()
|
||||
|
||||
# task
|
||||
def go_shoping(self, task_id, name):
|
||||
def send_shoping(protocol_id):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = protocol_id
|
||||
payload['data'] = {
|
||||
"taskId": task_id,
|
||||
"externalStr": f'{{"cityId": \'"1"\'}}'
|
||||
}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
|
||||
send_shoping(1004)
|
||||
print(f'完成任务: [{name}]')
|
||||
time.sleep(random.randint(5, 10))
|
||||
send_shoping(1005)
|
||||
print(f'领取任务: [{name}] 奖励成功')
|
||||
|
||||
# 签到
|
||||
def sign_in(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1007
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
content = return_data['data'].get('remitNotificationModelList')[0].get('content')
|
||||
print(content)
|
||||
|
||||
# 开红包
|
||||
def open_packet(self):
|
||||
max_cash_token = 49.98
|
||||
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1008
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
reward_list = return_data['data'].get('rewardModelList')
|
||||
remit_models = return_data['data'].get('remitNotificationModels')
|
||||
activity_info = return_data.get('data').get('playerBaseModel').get('activityCycleInfo')
|
||||
cash_token = activity_info.get('cashToken') / 100.0
|
||||
content = remit_models[0].get('content') if remit_models else None
|
||||
|
||||
if content:
|
||||
print(content)
|
||||
else:
|
||||
rewards = [value['amount'] / 100.0 if cash_token < max_cash_token else value['amount']
|
||||
for value in reward_list if value['rewarded']]
|
||||
|
||||
if rewards:
|
||||
for reward in rewards:
|
||||
print(f'开红包获得:{reward}金额' if cash_token < max_cash_token else f'开红包获得:{reward}金币')
|
||||
|
||||
# 抽奖
|
||||
def draw(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1010
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
|
||||
data = return_data['data']
|
||||
current_reward = data.get('currentReward', {})
|
||||
rewarded_model = current_reward.get('rewardedCouponModel')
|
||||
|
||||
if rewarded_model:
|
||||
name = rewarded_model.get('name')
|
||||
print(f'抽奖获得:{name}')
|
||||
else:
|
||||
seq = current_reward.get('seq')
|
||||
amount = current_reward.get('amount')
|
||||
reward_list = return_data['data'].get('rewardModelList', [])
|
||||
rewards_dict = {value.get('seq'): value for value in reward_list}
|
||||
|
||||
resource_type = rewards_dict.get(seq, {}).get('resourceType', None)
|
||||
|
||||
if resource_type == 5:
|
||||
print(f'抽奖获得: {amount}金币')
|
||||
elif resource_type == 9 or resource_type == 3:
|
||||
num = amount // 100
|
||||
print(f'抽奖获得: {num}元提现券')
|
||||
else:
|
||||
print('抽了个啥')
|
||||
|
||||
# 获取用户信息
|
||||
def get_user_info(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1012
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
|
||||
activity_info = return_data.get('data').get('activityCycleInfo')
|
||||
cash_token = activity_info.get('cashToken') / 100.0
|
||||
coin_token = activity_info.get('coinToken')
|
||||
expire_time = activity_info.get('expireTime')
|
||||
|
||||
surplus_time = expire_time - self.current_time
|
||||
day = int(surplus_time / (1000 * 60 * 60 * 24))
|
||||
print(f'每日赚钱余额:{cash_token},{coin_token}金币')
|
||||
print(f'本期剩余天数:{day},请注意过期时间哦')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cookies = cookies.split("@")
|
||||
mt = f"美团共获取到{len(cookies)}个账号"
|
||||
print(mt)
|
||||
|
||||
current_uuid_index = 0 # 将当前UUID索引初始化为0
|
||||
uuids_list = [
|
||||
"00000000000005A71494E8805428A93A5EBB6E00282BDA167095351831885613",
|
||||
"0000000000000E757A5DF300944AF82C239A47442EB26A168979373388967298",
|
||||
"0000000000000FE39E282D85D4184826D7A3CB6BDEE71A168979301991229841",
|
||||
"000000000000026CD052477C44C26964557ABBE7B24C7A168980721534295742"
|
||||
]
|
||||
|
||||
for i, cookie in enumerate(cookies, start = 1):
|
||||
print(f"\n======== ▷ 第 {i} 个账号 ◁ ========")
|
||||
uuid = uuids_list[current_uuid_index]
|
||||
current_uuid_index = (current_uuid_index + 1) % len(uuids_list)
|
||||
|
||||
MT(cookie, uuid).run()
|
||||
|
||||
print("\n随机等待5-10秒进行下一个账号")
|
||||
time.sleep(random.randint(5, 10))
|
||||
314
美团每日赚B.py
Normal file
314
美团每日赚B.py
Normal file
@@ -0,0 +1,314 @@
|
||||
# 软件:美团app
|
||||
# 功能:每日赚钱
|
||||
# A版,用户部分信息,适用于不会抓包用户,B版信息更全,更真实,适用于抓包用户,目前两个版本都正常跑。自己选择。
|
||||
# 抓包 game.meituan.com/earn-daily/msg/post,进入活动会有一堆这个请求,全部cookie
|
||||
# 变量名称 mtck = cookie 多账号@分割
|
||||
# 跑之前进活动看下,是否正常,后续不用管,draw = 0 为0不抽奖,为1抽奖。抽奖是没有问题,自行决定
|
||||
# 定时 : 一天一次
|
||||
# 每日随机提现,默认不开启,没抓
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import string
|
||||
import time
|
||||
|
||||
import requests
|
||||
|
||||
cookies = os.getenv("mtck")
|
||||
ua = ''
|
||||
draw = 0 # 为0不抽奖,为1抽奖。抽奖是没有问题,自行决定
|
||||
|
||||
|
||||
class MT:
|
||||
current_time = int(round(time.time() * 1000))
|
||||
url = 'https://game.meituan.com/earn-daily/msg/post'
|
||||
|
||||
def __init__(self, cookie):
|
||||
self.cookie = cookie
|
||||
try:
|
||||
self.uuid = re.search(r"uuid=(.*?);", self.cookie).group(1)
|
||||
self.cityid = re.search(r"cityid=(.*?);", self.cookie).group(1)
|
||||
self.token = re.search(r"token=(.*?);", self.cookie).group(1)
|
||||
self.userId = re.search(r"userId=(.*?);", self.cookie).group(1)
|
||||
except AttributeError:
|
||||
self.uuid = None
|
||||
self.cityid = None
|
||||
self.token = None
|
||||
self.userId = None
|
||||
|
||||
characters = string.digits + string.ascii_lowercase
|
||||
self.nonce_str = ''.join(random.choice(characters) for _ in range(16))
|
||||
self.headers = {
|
||||
'Host': 'game.meituan.com',
|
||||
'Connection': 'keep-alive',
|
||||
'Accept': 'application/json, text/plain, */*',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'acToken': 'undefined',
|
||||
'mToken': 'undefined',
|
||||
'User-Agent': ua,
|
||||
'Origin': 'https://awp.meituan.com',
|
||||
'Sec-Fetch-Site': 'same-site',
|
||||
'Sec-Fetch-Mode': 'cors',
|
||||
'Sec-Fetch-Dest': 'empty',
|
||||
'Referer': 'https://awp.meituan.com/',
|
||||
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'Cookie': self.cookie,
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
self.base_data = {
|
||||
"acToken": None,
|
||||
"riskParams": {
|
||||
"ip": "",
|
||||
"fingerprint": 'undefined',
|
||||
"cityId": self.cityid,
|
||||
"platform": 4,
|
||||
"app": 0,
|
||||
"version": "12.9.209",
|
||||
"uuid": self.uuid
|
||||
}
|
||||
}
|
||||
|
||||
def run(self):
|
||||
self.login()
|
||||
self.task_list()
|
||||
self.get_user_info()
|
||||
|
||||
def send_request(self, url=None, headers=None, data=None, method='GET', cookies=None):
|
||||
if url is None:
|
||||
url = self.url
|
||||
if headers is None:
|
||||
headers = self.headers
|
||||
with requests.Session() as session:
|
||||
session.headers.update(headers)
|
||||
if cookies is not None:
|
||||
session.cookies.update(cookies)
|
||||
|
||||
try:
|
||||
if method == 'GET':
|
||||
response = session.get(url, timeout = 3)
|
||||
elif method == 'POST':
|
||||
response = session.post(url, json = data, timeout = 3)
|
||||
else:
|
||||
raise ValueError('Invalid HTTP method.')
|
||||
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
except requests.Timeout as e:
|
||||
print("请求超时:", str(e))
|
||||
|
||||
except requests.RequestException as e:
|
||||
print("请求错误:", str(e))
|
||||
|
||||
except Exception as e:
|
||||
print("其他错误:", str(e))
|
||||
|
||||
# 随机延迟默认1-1.5s
|
||||
def sleep(self, min_delay=1, max_delay=2):
|
||||
delay = random.uniform(min_delay, max_delay)
|
||||
time.sleep(delay)
|
||||
|
||||
# 登录
|
||||
def login(self):
|
||||
url = f'https://game.meituan.com/earn-daily/login/loginMgc?gameType=10402&mtUserId={self.userId}&mtToken={self.token}&mtDeviceId={self.uuid}&nonceStr={self.nonce_str}&externalStr={"cityId":{self.cityid}}'
|
||||
return_data = self.send_request(url)
|
||||
self.sleep()
|
||||
if return_data['code'] != 0:
|
||||
return return_data['desc']
|
||||
|
||||
access_token = return_data['response'].get('accessToken')
|
||||
self.headers['acToken'] = access_token
|
||||
self.headers['mToken'] = self.token
|
||||
self.base_data['acToken'] = access_token
|
||||
|
||||
# task_list
|
||||
def task_list(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1001
|
||||
payload['data'] = {
|
||||
"externalStr": f'{{"cityId": \'{self.cityid}\'}}'
|
||||
}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
return return_data['desc']
|
||||
task_list = return_data['data'].get('taskInfoList')
|
||||
sign_state = return_data['data'].get('signInPopModel').get('rewardModelList')
|
||||
|
||||
# 浏览任务
|
||||
for task in task_list:
|
||||
task_id = task['id']
|
||||
if task_id in [15099, 15278, 780]:
|
||||
continue
|
||||
daily_finish = task.get('dailyFinishTimes')
|
||||
max_finish = task.get('mgcTaskBaseInfo', {}).get('curPeriodMaxFinishTimes')
|
||||
name = task.get('mgcTaskBaseInfo', {}).get('viewTitle')
|
||||
if daily_finish == max_finish:
|
||||
print(f'今日已完成:{name}')
|
||||
continue
|
||||
num = max_finish - daily_finish
|
||||
for _ in range(num):
|
||||
self.go_shoping(task_id, name)
|
||||
|
||||
# 每日签到
|
||||
for sign in sign_state:
|
||||
current = sign.get('current', False)
|
||||
state = sign.get('state', 0)
|
||||
|
||||
if not current:
|
||||
continue
|
||||
if state == 2:
|
||||
print('今日已打卡签到')
|
||||
break
|
||||
print('去完成:现金打卡')
|
||||
self.sign_in()
|
||||
break
|
||||
self.sleep()
|
||||
new_data = self.send_request(data = payload, method = 'POST')
|
||||
base_model = new_data['data'].get('playerBaseModel', {})
|
||||
# 开红包
|
||||
packet_amount = base_model.get('redPacketInfo').get('leftRedPacketAmount')
|
||||
draw_info = base_model.get('lotteryInfo').get('leftLotteryTimesAmount')
|
||||
if packet_amount == 0:
|
||||
print('今日红包已经开完了')
|
||||
else:
|
||||
print(f'今日可开红包次数:{packet_amount}次')
|
||||
for _ in range(packet_amount):
|
||||
self.open_packet()
|
||||
|
||||
# 抽奖
|
||||
if draw_info == 0:
|
||||
print('剩余抽奖次数为0')
|
||||
else:
|
||||
print(f'今日可抽奖次数:{draw_info}次')
|
||||
if not draw:
|
||||
print('已关闭抽奖')
|
||||
else:
|
||||
for _ in range(draw_info):
|
||||
self.draw()
|
||||
|
||||
# task
|
||||
def go_shoping(self, task_id, name):
|
||||
def send_shoping(protocol_id):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = protocol_id
|
||||
payload['data'] = {
|
||||
"taskId": task_id,
|
||||
"externalStr": f'{{"cityId": \'{self.cityid}\'}}'
|
||||
}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
if return_data['code'] != 200:
|
||||
return return_data['desc']
|
||||
|
||||
send_shoping(1004)
|
||||
print(f'完成任务: [{name}]')
|
||||
time.sleep(random.randint(5, 10))
|
||||
send_shoping(1005)
|
||||
print(f'领取任务: [{name}] 奖励成功')
|
||||
|
||||
# 签到
|
||||
def sign_in(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1007
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
|
||||
if return_data['code'] != 200:
|
||||
return return_data['desc']
|
||||
content = return_data['data'].get('remitNotificationModelList')[0].get('content')
|
||||
print(content)
|
||||
|
||||
# 开红包
|
||||
def open_packet(self):
|
||||
max_cash_token = 49.98
|
||||
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1008
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
reward_list = return_data['data'].get('rewardModelList')
|
||||
remit_models = return_data['data'].get('remitNotificationModels')
|
||||
activity_info = return_data.get('data').get('playerBaseModel').get('activityCycleInfo')
|
||||
cash_token = activity_info.get('cashToken') / 100.0
|
||||
content = remit_models[0].get('content') if remit_models else None
|
||||
|
||||
if content:
|
||||
print(content)
|
||||
else:
|
||||
rewards = [value['amount'] / 100.0 if cash_token < max_cash_token else value['amount']
|
||||
for value in reward_list if value['rewarded']]
|
||||
|
||||
if rewards:
|
||||
for reward in rewards:
|
||||
print(f'开红包获得:{reward}金额' if cash_token < max_cash_token else f'开红包获得:{reward}金币')
|
||||
|
||||
# 抽奖
|
||||
def draw(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1010
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
print(return_data)
|
||||
return
|
||||
|
||||
data = return_data['data']
|
||||
current_reward = data.get('currentReward', {})
|
||||
rewarded_model = current_reward.get('rewardedCouponModel')
|
||||
|
||||
if rewarded_model:
|
||||
name = rewarded_model.get('name')
|
||||
print(f'抽奖获得:{name}')
|
||||
else:
|
||||
seq = current_reward.get('seq')
|
||||
amount = current_reward.get('amount')
|
||||
reward_list = return_data['data'].get('rewardModelList', [])
|
||||
rewards_dict = {value.get('seq'): value for value in reward_list}
|
||||
|
||||
resource_type = rewards_dict.get(seq, {}).get('resourceType', None)
|
||||
|
||||
if resource_type == 5:
|
||||
print(f'抽奖获得: {amount}金币')
|
||||
elif resource_type == 9 or resource_type == 3:
|
||||
num = amount // 100
|
||||
print(f'抽奖获得: {num}元提现券')
|
||||
else:
|
||||
print('抽了个啥')
|
||||
|
||||
# 获取用户信息
|
||||
def get_user_info(self):
|
||||
payload = self.base_data.copy()
|
||||
payload['protocolId'] = 1012
|
||||
payload['data'] = {}
|
||||
return_data = self.send_request(data = payload, method = 'POST')
|
||||
self.sleep()
|
||||
if return_data['code'] != 200:
|
||||
return return_data['desc']
|
||||
|
||||
activity_info = return_data.get('data').get('activityCycleInfo')
|
||||
cash_token = activity_info.get('cashToken') / 100.0
|
||||
coin_token = activity_info.get('coinToken')
|
||||
expire_time = activity_info.get('expireTime')
|
||||
|
||||
surplus_time = expire_time - self.current_time
|
||||
day = int(surplus_time / (1000 * 60 * 60 * 24))
|
||||
print(f'每日赚钱余额:{cash_token},{coin_token}金币')
|
||||
print(f'本期剩余天数:{day},请注意过期时间哦')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
cookies = cookies.split("@")
|
||||
mt = f"美团共获取到{len(cookies)}个账号"
|
||||
print(mt)
|
||||
|
||||
for i, cookie in enumerate(cookies, start = 1):
|
||||
print(f"\n======== ▷ 第 {i} 个账号 ◁ ========")
|
||||
MT(cookie).run()
|
||||
print("\n随机等待5-10s进行下一个账号")
|
||||
time.sleep(random.randint(5, 10))
|
||||
2304
西瓜视频v2.0.js
Normal file
2304
西瓜视频v2.0.js
Normal file
File diff suppressed because one or more lines are too long
909
阅龙湾V1.3.js
Normal file
909
阅龙湾V1.3.js
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user