上传文件至 /
This commit is contained in:
parent
75776e8e58
commit
816ac8c2fe
507
傻狗阅读_api_1.2通知版本.py
Normal file
507
傻狗阅读_api_1.2通知版本.py
Normal file
@ -0,0 +1,507 @@
|
||||
# --------------------------------注释区--------------------------------
|
||||
# 入口:https://api.yd.dgtech.top/twyd/agent/user/login?aid=dabd8febf0c64c31b79c4785034e0de9&refererUserUuid=dbcc7c9327e64e9f94ac412a03c4debb
|
||||
#
|
||||
# 需抓取数据:
|
||||
# * 填写自动过检的api接口 本地 内网ip:5000 非本地自行进行穿透
|
||||
# * 登录多少个账号就跑多少个账号
|
||||
#
|
||||
#
|
||||
# 变量名:yuanshen_api
|
||||
withdraw_auto = True #是否自动提现
|
||||
# --------------------------------祈求区--------------------------------
|
||||
# _ooOoo_
|
||||
# o8888888o
|
||||
# 88" . "88
|
||||
# (| -_- |)
|
||||
# O\ = /O
|
||||
# ____/`---'\____
|
||||
# . ' \\| |// `.
|
||||
# / \\||| : |||// \
|
||||
# / _||||| -:- |||||- \
|
||||
# | | \\\ - /// | |
|
||||
# | \_| ''\---/'' | |
|
||||
# \ .-\__ `-` ___/-. /
|
||||
# ___`. .' /--.--\ `. . __
|
||||
# ."" '< `.___\_<|>_/___.' >'"".
|
||||
# | | : `- \`.;`\ _ /`;.`/ - ` : | |
|
||||
# \ \ `-. \_ __\ /__ _/ .-` / /
|
||||
# ======`-.____`-.___\_____/___.-`____.-'======
|
||||
# `=---='
|
||||
#
|
||||
# .............................................
|
||||
# 佛祖保佑 永无BUG
|
||||
# 佛祖镇楼 BUG辟邪
|
||||
# --------------------------------代码区--------------------------------
|
||||
from functools import wraps
|
||||
import requests
|
||||
import time
|
||||
import os
|
||||
import json
|
||||
import hashlib
|
||||
import random
|
||||
import logging
|
||||
import sys
|
||||
import string
|
||||
import re
|
||||
from base64 import b64encode
|
||||
import uuid
|
||||
import base64
|
||||
from datetime import datetime,timedelta
|
||||
from urllib.parse import urlparse, parse_qs,quote
|
||||
from notify import send
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='[%(levelname)s] ===> %(message)s')
|
||||
code = "傻狗阅读_api版"
|
||||
ver = "1.2"
|
||||
envname = "yuanshen_api"
|
||||
|
||||
debug = False #debug模式 开启即从脚本内部获取环境变量
|
||||
debugcookie = "127.0.0.1:5000" #debug模式cookie
|
||||
|
||||
is_bulletin = False #公告开关
|
||||
is_toulu = False #偷撸公告开关
|
||||
is_with_sleep = False #是否开启随机延时
|
||||
def retry(exceptions =Exception, tries=5, delay=2, backoff=2):
|
||||
"""
|
||||
简单的重试 module,如果重试失败则抛出错误。
|
||||
"""
|
||||
def decorator(func):
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
# 每次调用时初始化独立的重试计数和延迟时间
|
||||
_tries, _delay = tries, delay
|
||||
while _tries > 1:
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
except exceptions as e:
|
||||
print(f"发生错误:[{e}], Retrying in {_delay} seconds ...")
|
||||
time.sleep(_delay)
|
||||
_tries -= 1
|
||||
_delay *= backoff
|
||||
# 最后一次尝试
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
return decorator
|
||||
|
||||
|
||||
class env():
|
||||
"""
|
||||
env模块,获取cookie并转成列表,统计时间,提示脚本开始结束,检测一些配置,try except异常处理
|
||||
:param args: 传递给env的参数
|
||||
:param kwargs: 传递给env的关键字参数
|
||||
:return: Null
|
||||
|
||||
Powered by huaji
|
||||
"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.cookie = None
|
||||
self.env_ver = '1.5' #版本号
|
||||
self.split_chars = ['@', '&', '\n'] #分隔符
|
||||
self.identifiers = ['Powered By Huaji', 'QQ Group:901898186', 'yuanshen'] #标识符
|
||||
def check_file(self):
|
||||
file_path = __file__
|
||||
try:
|
||||
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
content = file.read()
|
||||
|
||||
results = {}
|
||||
|
||||
# 批量检查每个标识符
|
||||
for identifier in self.identifiers:
|
||||
if identifier in content:
|
||||
results[identifier] = True
|
||||
else:
|
||||
results[identifier] = False
|
||||
logging.error(f"文件可能被恶意篡改,请勿修改文件内容")
|
||||
|
||||
all_identifiers_present = all(results.values())
|
||||
if not all_identifiers_present:
|
||||
logging.error(f"文件可能被恶意篡改,请勿修改文件内容")
|
||||
self.force_exit()
|
||||
|
||||
except Exception as e:
|
||||
print(f"读取文件时发生错误: {e}")
|
||||
self.force_exit()
|
||||
|
||||
def split_cookies(self):
|
||||
"""根据多个分隔符分割cookie"""
|
||||
for sep in self.split_chars:
|
||||
if sep in self.cookie:
|
||||
return self.cookie.split(sep)
|
||||
return [self.cookie]
|
||||
|
||||
def scmain(self):
|
||||
if 'https://' not in self.cookie and 'http://' not in self.cookie:
|
||||
apiurl = 'http://' + self.cookies[0]
|
||||
r = requests.get(apiurl + '/getallwx').json()
|
||||
for i, cookie in enumerate(r, 1):
|
||||
print(f"--------开始第{i}个账号--------")
|
||||
main = yuanshen(cookie,apiurl)
|
||||
main.main()
|
||||
print(f"--------第{i}个账号执行完毕--------")
|
||||
|
||||
|
||||
|
||||
def force_exit(self,code=0):
|
||||
exit()
|
||||
print("Warning: 篡改你妈")
|
||||
os._exit(code) # 强制退出程序
|
||||
sys.exit(code) # 正常退出
|
||||
import ctypes
|
||||
while True:
|
||||
ctypes.string_at(114514)
|
||||
ctypes.string_at(1919810)
|
||||
ctypes.string_at(666666)
|
||||
print("Warning: 篡改你妈")
|
||||
|
||||
|
||||
def run(self):
|
||||
if not os.getenv(envname) and not debug:
|
||||
logging.warning(f"请先设置环境变量[{envname}]")
|
||||
self.force_exit()
|
||||
|
||||
self.cookie = os.getenv(envname, "")
|
||||
|
||||
if debug:
|
||||
self.cookie = debugcookie
|
||||
if is_bulletin:
|
||||
try:
|
||||
print(requests.get("https://gitee.com/HuaJiB/yuanshen34/raw/master/pubilc.txt").text, "\n\n\n")
|
||||
except:
|
||||
logging.error("网络异常,链接公告服务器失败(gitee),请检查网络")
|
||||
self.force_exit()
|
||||
if is_toulu:
|
||||
try:
|
||||
txt = '''
|
||||
此为滑稽的偷撸本本 如你不在滑稽的小群却意外通过某种渠道获得了该脚本
|
||||
请联系QQ3487934983 提供证据后 你将代替泄露人员获得该群位置
|
||||
=======================================================
|
||||
'''
|
||||
print(txt*5)
|
||||
except:
|
||||
self.force_exit()
|
||||
if is_with_sleep:
|
||||
random_time = random.randint(10,60)
|
||||
logging.info(f"随机延时[{random_time}]秒")
|
||||
time.sleep(random_time)
|
||||
|
||||
self.cookies = self.split_cookies()
|
||||
account_count = len(self.cookies)
|
||||
logging.info(f"一共获取到{account_count}个账号")
|
||||
print(f"=========🔔开始执行[{code}][{ver}]=========\n")
|
||||
|
||||
|
||||
start_time = time.time()
|
||||
if debug:
|
||||
self.scmain()
|
||||
else:
|
||||
try:
|
||||
self.scmain()
|
||||
except Exception as e:
|
||||
logging.error(f"脚本执行出错: {e}")
|
||||
end_time = time.time()
|
||||
|
||||
execution_time = end_time - start_time
|
||||
|
||||
print(f"\n============🔔脚本[{code}]执行结束============")
|
||||
print(f"本次脚本总运行时间: [{execution_time:.2f}] 秒")
|
||||
self.force_exit()
|
||||
|
||||
def main(self):
|
||||
self.check_file()
|
||||
self.run()
|
||||
|
||||
def random_str(self,charset="all", length=8, to_upper=False,to_lower=False):
|
||||
if charset == "all": #包含大小写字母和数字
|
||||
chars = string.ascii_letters + string.digits
|
||||
elif charset == "letters": #大小写字母
|
||||
chars = string.ascii_letters
|
||||
elif charset == "digits":
|
||||
chars = string.digits
|
||||
elif charset == "lowercase": #小写字母
|
||||
chars = string.ascii_lowercase
|
||||
elif charset == "uuid":
|
||||
return str(uuid.uuid4())
|
||||
elif charset == "uuid_str":
|
||||
return str(uuid.uuid4()).replace("-", "")
|
||||
elif charset != '' and charset is not None:
|
||||
chars = charset
|
||||
|
||||
|
||||
random_string = ''.join(random.choice(chars) for _ in range(length))
|
||||
|
||||
if to_upper:
|
||||
return random_string.upper()
|
||||
elif to_lower:
|
||||
return random_string.lower()
|
||||
else:
|
||||
return random_string
|
||||
|
||||
def aes_encrypt(self,data):
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import pad, unpad
|
||||
from binascii import hexlify, unhexlify
|
||||
key = self.key.encode('utf-8')
|
||||
iv = self.iv.encode('utf-8')
|
||||
cipher = AES.new(key, AES.MODE_CBC, iv)
|
||||
padded_plaintext = pad(data.encode('utf-8'), AES.block_size)
|
||||
ciphertext = cipher.encrypt(padded_plaintext)
|
||||
encrypted_base64 = b64encode(ciphertext).decode('utf-8')
|
||||
|
||||
return encrypted_base64
|
||||
|
||||
class yuanshen:
|
||||
def __init__(self,cookie,apiurl) -> None:
|
||||
self.apiurl = apiurl
|
||||
self.Wxid = cookie['Wxid']
|
||||
self.bz = cookie['wxname']
|
||||
logging.info(f'[{self.bz}]开始运行')
|
||||
|
||||
def get_readtime(self,url):
|
||||
h = {
|
||||
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
||||
'accept-language': 'zh-CN,zh;q=0.9',
|
||||
'cache-control': 'no-cache',
|
||||
# 'cookie': 'RK=x93V1EQnnk; ptcz=70105284a73b47db6aa5f48a05337a8cd84e98de7bd26d75975059126646db21; pac_uid=0_ZkHRNfy6PMhrH; ua_id=SyF8Nc7qjhUZ6RH8AAAAAHO013VXlTF21GY7ajzLLgs=; _clck=19reoir|1|fpg|0; wxuin=27186344812218; eas_sid=x1Y7v2y759E6j1a811G6q158d0; qq_domain_video_guid_verify=08d525e64ffa56c3; _qimei_uuid42=18a1b130e12100363fb639c628b466967c0e1ac0aa; pgv_pvid=6915337851; _qimei_fingerprint=3c42962857167cc55475bb65b2331f0b; _qimei_h38=fded42463fb639c628b4669602000006018a1b; o_cookie=3487934983; _qimei_q32=ec50b72a0f5a646accacf4393f1271f2; _qimei_q36=9e46147a2ab8bee5904ab74e30001741890c; rewardsn=; wxtokenkey=777',
|
||||
'pragma': 'no-cache',
|
||||
'priority': 'u=0, i',
|
||||
'sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': '"Windows"',
|
||||
'sec-fetch-dest': 'document',
|
||||
'sec-fetch-mode': 'navigate',
|
||||
'sec-fetch-site': 'none',
|
||||
'sec-fetch-user': '?1',
|
||||
'upgrade-insecure-requests': '1',
|
||||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36',
|
||||
}
|
||||
r = requests.get(url,headers=h).text
|
||||
match = re.search(r"var createTime = '(.+?)';", r)
|
||||
if match:
|
||||
date_string = (match.group(1))
|
||||
|
||||
date = datetime.strptime(date_string, "%Y-%m-%d %H:%M")
|
||||
half_year_ago = datetime.now() - timedelta(days=30)
|
||||
if date > half_year_ago:
|
||||
return False,date_string
|
||||
else:
|
||||
return True,date_string
|
||||
@retry()
|
||||
def login(self):
|
||||
h = {
|
||||
"Host": "api.yd.dgtech.top",
|
||||
"sec-ch-ua": "Not/A)Brand;v=8, Chromium;v=126, Android",
|
||||
"sec-ch-ua-mobile": "?1",
|
||||
"sec-ch-ua-platform": "Android",
|
||||
"upgrade-insecure-requests": "1",
|
||||
"user-agent": "Mozilla/5.0 (Linux; Android 14; 23113RKC6C Build/UKQ1.230804.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260117 MMWEBSDK/20240301 MMWEBID/5295 MicroMessenger/8.0.48.2580(0x28003035) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
|
||||
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/wxpic,image/tpg,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
||||
"x-requested-with": "com.tencent.mm",
|
||||
"sec-fetch-site": "none",
|
||||
"sec-fetch-mode": "navigate",
|
||||
"sec-fetch-user": "?1",
|
||||
"sec-fetch-dest": "document",
|
||||
"accept-encoding": "gzip, deflate, br, zstd",
|
||||
"accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
|
||||
"priority": "u=0, i"}
|
||||
r = requests.get('https://api.yd.dgtech.top/twyd/agent/user/login?aid=dabd8febf0c64c31b79c4785034e0de9&refererUserUuid=dbcc7c9327e64e9f94ac412a03c4debb',allow_redirects=False,headers=h)
|
||||
loginurl = r.headers['Location']
|
||||
data = {'Wxid':self.Wxid,'url':loginurl}
|
||||
url = requests.post(self.apiurl+'/loginbyweb',json=data).json()['url']
|
||||
r = requests.get(url,headers=h,allow_redirects=False)
|
||||
j = parse_qs(urlparse(r.headers['Location']).query)
|
||||
domain = urlparse(r.headers['Location']).netloc
|
||||
self.ck = j['sessionId'][0]
|
||||
logging.info(f'登录成功[{self.ck}]')
|
||||
self.h = {
|
||||
"content-length": "2",
|
||||
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Android WebView\";v=\"126\"",
|
||||
"sec-ch-ua-mobile": "?1",
|
||||
"user-agent": "Mozilla/5.0 (Linux; Android 14; 23113RKC6C Build/UKQ1.230804.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260183 MMWEBSDK/20240301 MMWEBID/98 MicroMessenger/8.0.48.2580(0x28003035) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
|
||||
"aid": "dabd8febf0c64c31b79c4785034e0de9",
|
||||
"content-type": "application/json",
|
||||
"accept": "application/json, text/javascript, */*; q=0.01",
|
||||
"sessionid": self.ck,
|
||||
"sec-ch-ua-platform": "\"Android\"",
|
||||
"origin": f"https://{domain}",
|
||||
"x-requested-with": "com.tencent.mm",
|
||||
"sec-fetch-site": "cross-site",
|
||||
"sec-fetch-mode": "cors",
|
||||
"sec-fetch-dest": "empty",
|
||||
"referer": f"https://{domain}/",
|
||||
"accept-encoding": "gzip, deflate, br, zstd",
|
||||
"accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
|
||||
"priority": "u=1, i"
|
||||
}
|
||||
@retry()
|
||||
def ruko(self):
|
||||
url = 'https://api.yd.dgtech.top/mpreader/gotoRead'
|
||||
r = requests.post(url,json={},headers=self.h).json()
|
||||
if r['msg'] == 'OK':
|
||||
h = {
|
||||
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Android WebView\";v=\"126\"",
|
||||
"sec-ch-ua-mobile": "?1",
|
||||
"user-agent": "Mozilla/5.0 (Linux; Android 14; 23113RKC6C Build/UKQ1.230804.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260183 MMWEBSDK/20240301 MMWEBID/98 MicroMessenger/8.0.48.2580(0x28003035) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
|
||||
"sec-ch-ua-platform": "\"Android\"",
|
||||
"accept": "image/wxpic,image/tpg,image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
|
||||
"x-requested-with": "com.tencent.mm",
|
||||
"sec-fetch-site": "cross-site",
|
||||
"sec-fetch-mode": "no-cors",
|
||||
"sec-fetch-dest": "image",
|
||||
"referer": "https://b1b08f658d.zncyxt.cn/",
|
||||
"accept-encoding": "gzip, deflate, br, zstd",
|
||||
"accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
|
||||
"priority": "u=1, i"
|
||||
}
|
||||
imgurl = r['data']['url']
|
||||
r = requests.get(imgurl,headers=h,timeout=10)
|
||||
image_base64 = base64.b64encode(r.content).decode('utf-8')
|
||||
data = {"image":image_base64}
|
||||
r = requests.post("https://python.huaji.asia/decode_qr", json=data).json()
|
||||
result = r['data']
|
||||
logging.info(f'请求解码成功[{result}]')
|
||||
h = {
|
||||
'User-Agent': 'Mozilla/5.0 (Linux; Android 14; 23113RKC6C Build/UKQ1.230804.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260183 MMWEBSDK/20240301 MMWEBID/98 MicroMessenger/8.0.48.2580(0x28003035) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64',
|
||||
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/wxpic,image/tpg,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
|
||||
# 'Accept-Encoding': 'gzip, deflate, br, zstd',
|
||||
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Android WebView";v="126"',
|
||||
'sec-ch-ua-mobile': '?1',
|
||||
'sec-ch-ua-platform': '"Android"',
|
||||
'upgrade-insecure-requests': '1',
|
||||
'x-requested-with': 'com.tencent.mm',
|
||||
'sec-fetch-site': 'none',
|
||||
'sec-fetch-mode': 'navigate',
|
||||
'sec-fetch-user': '?1',
|
||||
'sec-fetch-dest': 'document',
|
||||
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
||||
'priority': 'u=0, i',
|
||||
# 'Cookie': 'token=nf9amey318ukp0bdij5gwoct7sz4v6l2',
|
||||
}
|
||||
r = requests.get(result,headers=h,timeout=10)
|
||||
if r.status_code == 200:
|
||||
matches = re.findall(r'<script.*?>.*?</script>', r.text, re.DOTALL)
|
||||
code = (matches[2].replace('<script>','').replace('</script>','').replace('\n','').replace('\t',''))
|
||||
# with open('code.js','w') as f:
|
||||
# f.write(code)
|
||||
decodeurl = 'https://decode.huaji.asia/decode'
|
||||
data = {"code": code,"plugins": ["obfuscator"]}
|
||||
r = requests.post(decodeurl,json=data).json()
|
||||
if r['success']:
|
||||
logging.info('参数被加密 进行解密操作')
|
||||
code = r["decodedCode"]
|
||||
regex = r"a\((['\"])(.*?)\1,\s*(['\"])(.*?)\3,\s*(['\"])(.*?)\5\)"
|
||||
matches = re.findall(regex, code)
|
||||
if matches:
|
||||
for match in matches:
|
||||
param1, param2, param3 = match[1], match[3], match[5]
|
||||
print("参数1:", param1)
|
||||
print("参数2:", param2)
|
||||
print("参数3:", param3)
|
||||
self.read_session = param2
|
||||
|
||||
else:
|
||||
print("没有匹配到调用")
|
||||
domain = urlparse(result).netloc
|
||||
self.domainnum = domain.split('.')[0].replace('https://','')
|
||||
|
||||
self.readh = {
|
||||
"Host": "api.yd.dgtech.top",
|
||||
"content-length": "2",
|
||||
"sec-ch-ua": "Not/A)Brand;v=8, Chromium;v=126, Android",
|
||||
"sec-ch-ua-mobile": "?1",
|
||||
"user-agent": "Mozilla/5.0 (Linux; Android 14; 23113RKC6C Build/UKQ1.230804.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260117 MMWEBSDK/20240301 MMWEBID/5295 MicroMessenger/8.0.48.2580(0x28003035) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
|
||||
"aid": "dabd8febf0c64c31b79c4785034e0de9",
|
||||
"content-type": "application/json",
|
||||
"accept": "application/json, text/javascript, */*; q=0.01",
|
||||
"sessionid": self.read_session,
|
||||
"sec-ch-ua-platform": "Android",
|
||||
"origin": f"https://{domain}",
|
||||
"x-requested-with": "com.tencent.mm",
|
||||
"sec-fetch-site": "same-site",
|
||||
"sec-fetch-mode": "cors",
|
||||
"sec-fetch-dest": "empty",
|
||||
"referer": f"https://{domain}/",
|
||||
"accept-encoding": "gzip, deflate, br, zstd",
|
||||
"accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
|
||||
"priority": "u=1, i"
|
||||
}
|
||||
|
||||
return True
|
||||
|
||||
else:
|
||||
logging.error(f"获取入口失败[{r}]")
|
||||
return False
|
||||
def tuisong(self):
|
||||
# 发送消息到wxpusher
|
||||
url = f"{self.apiurl}/zdgjc"
|
||||
data = {"url":self.readurl}
|
||||
r = requests.post(url,json=data).json()
|
||||
logging.info(f"遇到检测文章:推送结果[{r}]")
|
||||
@retry()
|
||||
def read(self):
|
||||
|
||||
while True:
|
||||
timestamp = int(time.time()*1000)
|
||||
#print(timestamp,self.readh['aid'],self.domainnum,self.readh['sessionid'])
|
||||
#exit()
|
||||
signstr = str(timestamp) + self.readh['aid'] + self.domainnum + self.readh['sessionid']
|
||||
sign = hashlib.md5(signstr.encode()).hexdigest()
|
||||
data = {
|
||||
"sign": sign,
|
||||
"time": timestamp
|
||||
}
|
||||
url = f'https://api.yd.dgtech.top/ydrw/article?_t={timestamp}'
|
||||
r = requests.post(url,json=data,headers=self.readh).json()
|
||||
if r['success']:
|
||||
self.readurl = r['data']['url']
|
||||
va,acttime = self.get_readtime(self.readurl)
|
||||
logging.info(f'获取文章链接成功[{self.readurl}]文章发布时间[{acttime}]')
|
||||
|
||||
if 'biz' not in self.readurl or 'chksm' in self.readurl or va:
|
||||
self.tuisong()
|
||||
time.sleep(random.uniform(20,25))
|
||||
else:
|
||||
time.sleep(random.uniform(10,15))
|
||||
|
||||
logging.info(f'阅读成功[{r["msg"]}]')
|
||||
|
||||
else:
|
||||
logging.error(f'取文章链接失败:{r}')
|
||||
break
|
||||
@retry()
|
||||
def withdraw(self):
|
||||
url = 'https://api.yd.dgtech.top/twyd/agent/user/getCoinDrawList'
|
||||
r = requests.post(url,json={},headers=self.h).json()
|
||||
allmoney = r["data"]["user"]["totalCoin"] / 10000
|
||||
lessmoney = r['data']['coinList'][0]['amount']
|
||||
uuid = r["data"]["coinList"][0]["uuid"]
|
||||
logging.info(f'余额:{allmoney}')
|
||||
if withdraw_auto:
|
||||
if allmoney >= lessmoney:
|
||||
url = 'https://api.yd.dgtech.top/twyd/agent/user/userCoinDraw'
|
||||
data = {"withdrawUuid":uuid}
|
||||
r = requests.post(url,json=data,headers=self.h).json()
|
||||
logging.info(f"提现结果[{r}]")
|
||||
send(code+"提现通知📢📢📢",f"微信账户[{self.bz}]\n余额:{allmoney} 元\n提现结果:{r}")
|
||||
else:
|
||||
logging.info('余额不足不提现')
|
||||
|
||||
|
||||
def main(self):
|
||||
try:
|
||||
self.login()
|
||||
if self.ruko():
|
||||
self.read()
|
||||
self.withdraw()
|
||||
except Exception as e:
|
||||
logging.error(f'程序异常退出:{e}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
env().main()
|
||||
Loading…
Reference in New Issue
Block a user