mirror of
https://github.com/KingJin-web/zy.git
synced 2025-12-18 16:04:35 +08:00
恰恰阅读
This commit is contained in:
48
微信阅读/恰恰阅读.py
48
微信阅读/恰恰阅读.py
@@ -1,18 +1,20 @@
|
|||||||
# 配置说明:
|
# 配置说明:
|
||||||
# 1. 环境变量 QQ_TOKEN: 配置token账号信息支持多账号分隔符:#
|
# 1. 环境变量 QQ_TOKEN: 配置token账号信息支持多账号分隔符:#
|
||||||
# 2. 环境变量 qqyd_ua: 配置UA信息
|
# 2. 环境变量 qqyd_ua: 配置UA信息
|
||||||
# 3. 可配置过检测接口
|
# 3. 内置过检测接口,需要是我的下级
|
||||||
# 4. 环境变量 qqyd_proxy: 配置代理连接,注意代理时长选择!注意代理时长选择!注意代理时长选择!同一账号运行时不要换ip(4.0更新内容)
|
# 4. 环境变量 qqyd_proxy: 配置代理连接,注意代理时长选择!注意代理时长选择!注意代理时长选择!(4.0更新内容)
|
||||||
# 活动入口 https://img.hnking.cn/blog/202509041844746.png
|
|
||||||
|
|
||||||
import time, json, random, requests, os
|
import time, json, random, requests, os
|
||||||
from urllib.parse import urlparse, parse_qs, unquote
|
from urllib.parse import urlparse, parse_qs, unquote
|
||||||
|
|
||||||
|
|
||||||
PROXY_URL = os.getenv("qqyd_proxy")
|
PROXY_URL = os.getenv("qqyd_proxy")
|
||||||
UA_USER_AGENT = os.getenv("qqyd_ua")
|
UA_USER_AGENT = os.getenv("qqyd_ua")
|
||||||
# 配置
|
# 配置
|
||||||
API_URL = '' # 检测文章提交接口URL
|
API_URL = '' # 检测文章提交接口URL
|
||||||
|
|
||||||
|
|
||||||
def get_random_r():
|
def get_random_r():
|
||||||
return str(random.uniform(0, 1))
|
return str(random.uniform(0, 1))
|
||||||
|
|
||||||
@@ -54,7 +56,7 @@ def getHomeInfo():
|
|||||||
'Accept-Language': 'zh-CN,zh;q=0.9',
|
'Accept-Language': 'zh-CN,zh;q=0.9',
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, headers=headers, params=params,proxies=proxies).json()
|
response = requests.get(url, headers=headers, params=params, proxies=proxies).json()
|
||||||
if response.get('code') == 0:
|
if response.get('code') == 0:
|
||||||
home_data = response.get('data', {})
|
home_data = response.get('data', {})
|
||||||
print(
|
print(
|
||||||
@@ -100,11 +102,12 @@ def extract_parameters(url):
|
|||||||
t = params.get('t', '')
|
t = params.get('t', '')
|
||||||
u = params.get('u', '')
|
u = params.get('u', '')
|
||||||
ch = params.get('ch', '')
|
ch = params.get('ch', '')
|
||||||
if t=='' or u=='' or ch=='':
|
if t == '' or u == '' or ch == '':
|
||||||
print(f"参数获取异常: {parsed_url}")
|
print(f"参数获取异常: {parsed_url}")
|
||||||
exit(0)
|
exit(0)
|
||||||
return t, u, ch
|
return t, u, ch
|
||||||
|
|
||||||
|
|
||||||
def getReadUrl():
|
def getReadUrl():
|
||||||
url = 'https://read.tslu.cn/abaaba/getReadUrl/'
|
url = 'https://read.tslu.cn/abaaba/getReadUrl/'
|
||||||
headers = {
|
headers = {
|
||||||
@@ -120,10 +123,11 @@ def getReadUrl():
|
|||||||
'Accept-Encoding': 'gzip, deflate, br',
|
'Accept-Encoding': 'gzip, deflate, br',
|
||||||
'Accept-Language': 'zh-CN,zh;q=0.9',
|
'Accept-Language': 'zh-CN,zh;q=0.9',
|
||||||
}
|
}
|
||||||
params = {'type': 2,'b': str(int(time.time()*1000)), 'token': TOKEN}
|
params = {'type': 2, 'b': str(int(time.time() * 1000)), 'token': TOKEN}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, headers=headers, params=params, proxies=proxies).json()
|
response = requests.get(url, headers=headers, params=params, proxies=proxies).json()
|
||||||
|
# print(f"url==={response['data']['url']}")
|
||||||
return extract_parameters(response['data']['url'])
|
return extract_parameters(response['data']['url'])
|
||||||
# parsed_url = urlparse(response['data']['url'])
|
# parsed_url = urlparse(response['data']['url'])
|
||||||
# outer_params = parse_qs(parsed_url.query)
|
# outer_params = parse_qs(parsed_url.query)
|
||||||
@@ -131,6 +135,7 @@ def getReadUrl():
|
|||||||
# inner_url = unquote(inner_url_encoded)
|
# inner_url = unquote(inner_url_encoded)
|
||||||
# parsed_inner = urlparse(inner_url)
|
# parsed_inner = urlparse(inner_url)
|
||||||
# inner_params = parse_qs(parsed_inner.query)
|
# inner_params = parse_qs(parsed_inner.query)
|
||||||
|
# print(inner_params)
|
||||||
# t = inner_params.get('t', ['未获取t'])[0]
|
# t = inner_params.get('t', ['未获取t'])[0]
|
||||||
# u = inner_params.get('u', ['未获取u'])[0]
|
# u = inner_params.get('u', ['未获取u'])[0]
|
||||||
# ch = inner_params.get('ch', ['未获取ch'])[0]
|
# ch = inner_params.get('ch', ['未获取ch'])[0]
|
||||||
@@ -140,19 +145,24 @@ def getReadUrl():
|
|||||||
return '未获取t', '未获取u', '未获取ch'
|
return '未获取t', '未获取u', '未获取ch'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def check_article(aid, article_url):
|
def check_article(aid, article_url):
|
||||||
"""文章检测逻辑"""
|
"""文章检测逻辑"""
|
||||||
print(f"检测文章 [ID:{aid}]")
|
print(f"检测文章 [ID:{aid}]")
|
||||||
if not API_URL:
|
if not API_URL:
|
||||||
print(f"未配置自动过检进入通知推送手动,请在面板配置文件设置对应推送..")
|
print(f"未配置自动过检进入通知推送手动,请在面板配置文件设置对应推送..")
|
||||||
title = "⚠️ QQ检测文章!请在60s内完成阅读!⚠️ 每次阅读不得少于8秒!"
|
title = "⚠️ QQ检测文章!请在120s内完成阅读!⚠️ 每次阅读不得少于8秒!"
|
||||||
content = f"文章链接:{article_url} 当前时间 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} 当前时间 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"
|
content = f"文章链接:{article_url} 当前时间 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())} 当前时间 {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())}"
|
||||||
print(QLAPI.notify(title, content))
|
QLAPI.notify(title, content)
|
||||||
time.sleep(60)
|
time.sleep(60)
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
resp = requests.post(API_URL, json={"url": article_url,'token': TOKEN,'ua':UA_USER_AGENT,'proxies':proxies}, timeout=60).json()
|
resp = requests.post(API_URL,
|
||||||
|
json={"url": article_url, 'token': TOKEN, 'ua': UA_USER_AGENT, 'proxies': proxies},
|
||||||
|
timeout=60).json()
|
||||||
if resp['status'] == 'success':
|
if resp['status'] == 'success':
|
||||||
time.sleep(8)
|
time.sleep(8)
|
||||||
print("✅ 自动过检成功")
|
print("✅ 自动过检成功")
|
||||||
@@ -204,7 +214,7 @@ def make_request(loop_count, initial_params, headers):
|
|||||||
current_c = 1
|
current_c = 1
|
||||||
user_id = initial_params.get("u", "")
|
user_id = initial_params.get("u", "")
|
||||||
channel_id = initial_params.get("ch", "")
|
channel_id = initial_params.get("ch", "")
|
||||||
|
# t=da744d77eef1eecc5d5e88975e767ab4&u=961771&ch=5948&pageshow&r=0.8785425949646586&c=1
|
||||||
for i in range(loop_count):
|
for i in range(loop_count):
|
||||||
print(f"\n[第{i + 1}次循环] c值: {current_c}")
|
print(f"\n[第{i + 1}次循环] c值: {current_c}")
|
||||||
|
|
||||||
@@ -216,7 +226,7 @@ def make_request(loop_count, initial_params, headers):
|
|||||||
params["jkey"] = current_jkey
|
params["jkey"] = current_jkey
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, params=params, headers=headers,proxies=proxies)
|
response = requests.get(url, params=params, headers=headers, proxies=proxies)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
result = response.json()
|
result = response.json()
|
||||||
|
|
||||||
@@ -271,10 +281,12 @@ def make_request(loop_count, initial_params, headers):
|
|||||||
_biz = extract_biz(article_url)
|
_biz = extract_biz(article_url)
|
||||||
print(f"📖 开始阅读: {article_url}", flush=True)
|
print(f"📖 开始阅读: {article_url}", flush=True)
|
||||||
print(f"文章信息 - : {_biz} | 已读/总数: {data.get('readNum', 0)}/{data.get('totalNum', 0)}")
|
print(f"文章信息 - : {_biz} | 已读/总数: {data.get('readNum', 0)}/{data.get('totalNum', 0)}")
|
||||||
if _biz in ['MzkyNzYxMDA0Mw==','MzkzNzk3Mjk2MQ==','MzkyMjYxMDAwMA==','Mzk3NTc4MzI1NQ==',
|
if _biz in ['MzkyNzYxMDA0Mw==', 'MzkzNzk3Mjk2MQ==', 'MzkyMjYxMDAwMA==', 'Mzk3NTc4MzI1NQ==',
|
||||||
'MzI5MjYyNDIxOA==','Mzk0OTYxMDEwNQ==','MzkzNjk3MjIxNg==','MzkzMTk0ODYxOQ==',
|
'MzI5MjYyNDIxOA==', 'Mzk0OTYxMDEwNQ==', 'MzkzNjk3MjIxNg==', 'MzkzMTk0ODYxOQ==',
|
||||||
'MzkzODk3Mjk2NQ==','MzIwOTc0MzYxMg==','MzkyOTk0NzcyNw==','MzkxOTg4MjUzOA==','Mzk4ODQ2OTYyMg==',
|
'MzkzODk3Mjk2NQ==', 'MzIwOTc0MzYxMg==', 'MzkyOTk0NzcyNw==', 'MzkxOTg4MjUzOA==',
|
||||||
'MzkzMjk3MDgxNQ==','MzkzOTYxMDQ2Mw==','MzkzODk0NzkwMg==','MzkwODYwOTUxOQ=='] or len(current_jkey) > 35:
|
'Mzk4ODQ2OTYyMg==',
|
||||||
|
'MzkzMjk3MDgxNQ==', 'MzkzOTYxMDQ2Mw==', 'MzkzODk0NzkwMg==', 'MzkwODYwOTUxOQ=='] or len(
|
||||||
|
current_jkey) > 35:
|
||||||
if not check_article(_biz, article_url):
|
if not check_article(_biz, article_url):
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -301,14 +313,13 @@ def make_request(loop_count, initial_params, headers):
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print("活动入口:https://img.hnking.cn/blog/202509041844746.png")
|
|
||||||
QQ_TOKEN = os.getenv('QQ_TOKEN')
|
QQ_TOKEN = os.getenv('QQ_TOKEN')
|
||||||
if not QQ_TOKEN:
|
if not QQ_TOKEN:
|
||||||
print("请先配置账号信息(QQ_TOKEN)")
|
print("请先配置账号信息(QQ_TOKEN)")
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
if UA_USER_AGENT:
|
if UA_USER_AGENT:
|
||||||
print(f"✅ 未配置ua: {UA_USER_AGENT}")
|
print(f"✅ 已配置ua: {UA_USER_AGENT}")
|
||||||
else:
|
else:
|
||||||
print("ℹ️ 未配置ua,停止运行")
|
print("ℹ️ 未配置ua,停止运行")
|
||||||
exit()
|
exit()
|
||||||
@@ -357,4 +368,5 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
loop_times = 39
|
loop_times = 39
|
||||||
print(f"\n开始执行{loop_times}次循环...")
|
print(f"\n开始执行{loop_times}次循环...")
|
||||||
make_request(loop_times, initial_params, headers)
|
print(initial_params)
|
||||||
|
make_request(loop_times, initial_params, headers)
|
||||||
|
|||||||
Reference in New Issue
Block a user