feat 签到结果保存

This commit is contained in:
jxxghp 2023-07-20 08:34:24 +08:00
parent 2d628361cf
commit 87e50b72da
18 changed files with 236 additions and 227 deletions

View File

@ -1,8 +1,9 @@
import traceback
from datetime import datetime
from multiprocessing.dummy import Pool as ThreadPool
from multiprocessing.pool import ThreadPool
from threading import Event
from typing import Any, List, Dict
from typing import Any, List, Dict, Tuple
from urllib.parse import urljoin
from apscheduler.schedulers.background import BackgroundScheduler
@ -133,8 +134,16 @@ class AutoSignIn(_PluginBase):
if status:
logger.info("站点签到任务完成!")
# 获取今天的日期
key = datetime.now().strftime('%Y-%m-%d')
# 保存数据
self.save_data(key, [{
"site": s[0],
"status": s[1]
} for s in status])
# 发送通知
self.chain.post_message(title="站点自动签到", text="\n".join([s for s in status if s]))
self.chain.post_message(title="站点自动签到",
text="\n".join([f'{s[0]}{s[1]}' for s in status if s]))
else:
logger.error("站点签到任务失败!")
@ -164,21 +173,21 @@ class AutoSignIn(_PluginBase):
message=self.signin_site(site_info)
)
def signin_site(self, site_info: CommentedMap) -> str:
def signin_site(self, site_info: CommentedMap) -> Tuple[str, str]:
"""
签到一个站点
"""
site_module = self.__build_class(site_info.get("url"))
if site_module and hasattr(site_module, "signin"):
try:
status, msg = site_module().signin(site_info)
_, msg = site_module().signin(site_info)
# 特殊站点直接返回签到信息,防止仿真签到、模拟登陆有歧义
return msg or ""
return site_info.get("name"), msg or ""
except Exception as e:
traceback.print_exc()
return f"{site_info.get('name')}签到失败:{str(e)}"
return site_info.get("name"), f"签到失败:{str(e)}"
else:
return self.__signin_base(site_info)
return site_info.get("name"), self.__signin_base(site_info)
@staticmethod
def __signin_base(site_info: CommentedMap) -> str:
@ -214,8 +223,8 @@ class AutoSignIn(_PluginBase):
proxies=proxy_server)
if not SiteUtils.is_logged_in(page_source):
if under_challenge(page_source):
return f"{site}无法通过Cloudflare"
return f"{site}仿真登录失败Cookie已失效"
return f"无法通过Cloudflare"
return f"仿真登录失败Cookie已失效"
else:
res = RequestUtils(cookies=site_cookie,
ua=ua,
@ -237,20 +246,20 @@ class AutoSignIn(_PluginBase):
else:
msg = f"状态码:{res.status_code}"
logger.warn(f"{site} 签到失败,{msg}")
return f"{site}签到失败,{msg}"
return f"签到失败,{msg}"
else:
logger.info(f"{site} 签到成功")
return f"{site}签到成功"
return f"签到成功"
elif res is not None:
logger.warn(f"{site} 签到失败,状态码:{res.status_code}")
return f"{site}签到失败,状态码:{res.status_code}"
return f"签到失败,状态码:{res.status_code}"
else:
logger.warn(f"{site} 签到失败,无法打开网站")
return f"{site}签到失败,无法打开网站!"
return f"签到失败,无法打开网站!"
except Exception as e:
logger.warn("%s 签到失败:%s" % (site, str(e)))
traceback.print_exc()
return f"{site}签到失败:{str(e)}"
return f"签到失败:{str(e)}"
def stop_service(self):
"""

View File

@ -55,24 +55,24 @@ class Pt52(_ISiteSigninHandler):
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
return True, '今日已签到'
# 没有签到则解析html
html = etree.HTML(html_text)
if not html:
return False, f'{site}签到失败'
return False, '签到失败'
# 获取页面问题、答案
questionid = html.xpath("//input[@name='questionid']/@value")[0]
@ -127,21 +127,21 @@ class Pt52(_ISiteSigninHandler):
proxies=settings.PROXY if proxy else None
).post_res(url='https://52pt.site/bakatest.php', data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
# 判断是否签到成功
sign_status = self.sign_in_result(html_res=sign_res.text,
regexs=self._success_regex)
if sign_status:
logger.info(f"{site}签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
else:
sign_status = self.sign_in_result(html_res=sign_res.text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
logger.error(f"签到失败,请到页面查看")
return False, f'{site}签到失败,请到页面查看'
logger.error(f"{site} 签到失败,请到页面查看")
return False, '签到失败,请到页面查看'

View File

@ -47,17 +47,17 @@ class BTSchool(_ISiteSigninHandler):
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
# 已签到
if self._sign_text not in html_text:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
html_text = self.get_page_source(url='https://pt.btschool.club/index.php?action=addbonus',
cookie=site_cookie,
@ -66,10 +66,10 @@ class BTSchool(_ISiteSigninHandler):
render=render)
if not html_text:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
# 签到成功
if self._sign_text not in html_text:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'

View File

@ -56,24 +56,24 @@ class CHDBits(_ISiteSigninHandler):
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 没有签到则解析html
html = etree.HTML(html_text)
if not html:
return False, f'{site}签到失败'
return False, '签到失败'
# 获取页面问题、答案
questionid = html.xpath("//input[@name='questionid']/@value")[0]
@ -128,21 +128,21 @@ class CHDBits(_ISiteSigninHandler):
proxies=settings.PROXY if proxy else None
).post_res(url='https://chdbits.co/bakatest.php', data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
# 判断是否签到成功
sign_status = self.sign_in_result(html_res=sign_res.text,
regexs=self._success_regex)
if sign_status:
logger.info(f"{site} 签到成功")
return True, f'{site}签到成功'
return True, '签到成功'
else:
sign_status = self.sign_in_result(html_res=sign_res.text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
logger.error(f"签到失败,请到页面查看")
return False, f'{site}签到失败,请到页面查看'
logger.error(f"{site} 签到失败,请到页面查看")
return False, '签到失败,请到页面查看'

View File

@ -45,18 +45,18 @@ class HaiDan(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._succeed_regex)
if sign_status:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
logger.error(f"签到失败,签到接口返回 {html_text}")
return False, f'{site}签到失败'
logger.error(f"{site} 签到失败,签到接口返回 {html_text}")
return False, '签到失败'

View File

@ -49,16 +49,16 @@ class Hares(_ISiteSigninHandler):
render=render)
if not html_text:
logger.error(f"模拟访问失败,请检查站点连通性")
return False, f'{site}模拟访问失败,请检查站点连通性'
logger.error(f"{site} 模拟访问失败,请检查站点连通性")
return False, '模拟访问失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"模拟访问失败Cookie失效")
return False, f'{site}模拟访问失败Cookie失效'
logger.error(f"{site} 模拟访问失败Cookie失效")
return False, '模拟访问失败Cookie失效'
# if self._sign_text in html_res.text:
# logger.info(f"今日已签到")
# return True, f'【{site}】今日已签到'
# return True, '今日已签到'
headers = {
'Accept': 'application/json',
@ -69,15 +69,15 @@ class Hares(_ISiteSigninHandler):
proxies=settings.PROXY if proxy else None
).get_res(url="https://club.hares.top/attendance.php?action=sign")
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
# {"code":1,"msg":"您今天已经签到过了"}
# {"code":0,"msg":"签到成功"}
sign_dict = json.loads(sign_res.text)
if sign_dict['code'] == 0:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
else:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'

View File

@ -47,17 +47,17 @@ class HDArea(_ISiteSigninHandler):
proxies=proxies
).get_res(url="https://pt.hd4fans.org/index.php")
if not html_res or html_res.status_code != 200:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败cookie失效")
return False, f'{site}签到失败cookie失效'
logger.error(f"{site} 签到失败cookie失效")
return False, '签到失败cookie失效'
# 判断是否已签到
if self._repeat_text in html_res.text:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 签到
data = {
@ -68,12 +68,12 @@ class HDArea(_ISiteSigninHandler):
proxies=proxies
).post_res(url="https://pt.hd4fans.org/checkin.php", data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
# sign_res.text=本次签到魔力
if sign_res.text and int(sign_res.text) > 0:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
logger.error(f"签到失败,签到接口返回 {sign_res.text}")
return False, f'{site}签到失败'
logger.error(f"{site} 签到失败,签到接口返回 {sign_res.text}")
return False, '签到失败'

View File

@ -50,20 +50,20 @@ class HDArea(_ISiteSigninHandler):
proxies=proxies
).post_res(url="https://www.hdarea.co/sign_in.php", data=data)
if not html_res or html_res.status_code != 200:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
# 判断是否已签到
# '已连续签到278天此次签到您获得了100魔力值奖励!'
if self._success_text in html_res.text:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
if self._repeat_text in html_res.text:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.error(f"签到失败,签到接口返回 {html_res.text}")
return False, f'{site}签到失败'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
logger.error(f"{site} 签到失败,签到接口返回 {html_res.text}")
return False, '签到失败'

View File

@ -52,8 +52,8 @@ class HDChina(_ISiteSigninHandler):
cookie += sub_str + ";"
if "hdchina=" not in cookie:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
site_cookie = cookie
# 获取页面html
@ -62,12 +62,12 @@ class HDChina(_ISiteSigninHandler):
proxies=proxies
).get_res(url="https://hdchina.org/index.php")
if not html_res or html_res.status_code != 200:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_res.text or "阻断页面" in html_res.text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
# 获取新返回的cookie进行签到
site_cookie = ';'.join(['{}={}'.format(k, v) for k, v in html_res.cookies.get_dict().items()])
@ -77,20 +77,20 @@ class HDChina(_ISiteSigninHandler):
sign_status = self.sign_in_result(html_res=html_res.text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 没有签到则解析html
html = etree.HTML(html_res.text)
if not html:
return False, f'{site}签到失败'
return False, '签到失败'
# x_csrf
x_csrf = html.xpath("//meta[@name='x-csrf']/@content")[0]
if not x_csrf:
logger.error("签到失败获取x-csrf失败")
return False, f'{site}签到失败'
logger.error("{site} 签到失败获取x-csrf失败")
return False, '签到失败'
logger.debug(f"获取到x-csrf {x_csrf}")
# 签到
@ -102,16 +102,16 @@ class HDChina(_ISiteSigninHandler):
proxies=proxies
).post_res(url="https://hdchina.org/plugin_sign-in.php?cmd=signin", data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
sign_dict = json.loads(sign_res.text)
logger.debug(f"签到返回结果 {sign_dict}")
if sign_dict['state']:
# {'state': 'success', 'signindays': 10, 'integral': 20}
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
else:
# {'state': False, 'msg': '不正确的CSRF / Incorrect CSRF token'}
logger.error(f"签到失败不正确的CSRF / Incorrect CSRF token")
return False, f'{site}签到失败'
logger.error(f"{site} 签到失败不正确的CSRF / Incorrect CSRF token")
return False, '签到失败'

View File

@ -47,20 +47,20 @@ class HDCity(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
# 判断是否已签到
# '已连续签到278天此次签到您获得了100魔力值奖励!'
if self._success_text in html_text:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
if self._repeat_text in html_text:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.error(f"签到失败,签到接口返回 {html_text}")
return False, f'{site}签到失败'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
logger.error(f"{site} 签到失败,签到接口返回 {html_text}")
return False, '签到失败'

View File

@ -50,18 +50,18 @@ class HDSky(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 获取验证码请求,考虑到网络问题获取失败,多获取几次试试
res_times = 0
@ -118,16 +118,16 @@ class HDSky(_ISiteSigninHandler):
).post_res(url='https://hdsky.me/showup.php', data=data)
if res and res.status_code == 200:
if json.loads(res.text)["success"]:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
elif str(json.loads(res.text)["message"]) == "date_unmatch":
# 重复签到
logger.warn(f"重复成功")
return True, f'{site}今日已签到'
logger.warn(f"{site} 重复成功")
return True, '今日已签到'
elif str(json.loads(res.text)["message"]) == "invalid_imagehash":
# 验证码错误
logger.warn(f"签到失败:验证码错误")
return False, f'{site}签到失败:验证码错误'
logger.warn(f"{site} 签到失败:验证码错误")
return False, '签到失败:验证码错误'
logger.error(f'签到失败:未获取到验证码')
return False, f'{site}签到失败:未获取到验证码'
logger.error(f'{site} 签到失败:未获取到验证码')
return False, '签到失败:未获取到验证码'

View File

@ -49,18 +49,18 @@ class HDUpt(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 签到
html_text = self.get_page_source(url='https://pt.hdupt.com/added.php?action=qiandao',
@ -69,14 +69,14 @@ class HDUpt(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
logger.debug(f"签到接口返回 {html_text}")
logger.debug(f"{site} 签到接口返回 {html_text}")
# 判断是否已签到 sign_res.text = ".23"
if len(list(map(int, re.findall(r"\d+", html_text)))) > 0:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
logger.error(f"签到失败,签到接口返回 {html_text}")
return False, f'{site}签到失败'
logger.error(f"{site} 签到失败,签到接口返回 {html_text}")
return False, '签到失败'

View File

@ -51,16 +51,16 @@ class Opencd(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
if self._repeat_text in html_text:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 获取签到参数
html_text = self.get_page_source(url='https://www.open.cd/plugin_sign-in.php',
@ -69,24 +69,24 @@ class Opencd(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
# 没有签到则解析html
html = etree.HTML(html_text)
if not html:
return False, f'{site}签到失败'
return False, '签到失败'
# 签到参数
img_url = html.xpath('//form[@id="frmSignin"]//img/@src')[0]
img_hash = html.xpath('//form[@id="frmSignin"]//input[@name="imagehash"]/@value')[0]
if not img_url or not img_hash:
logger.error(f"签到失败,获取签到参数失败")
return False, f'{site}签到失败,获取签到参数失败'
logger.error(f"{site} 签到失败,获取签到参数失败")
return False, '签到失败,获取签到参数失败'
# 完整验证码url
img_get_url = 'https://www.open.cd/%s' % img_url
logger.debug(f"获取到{site}验证码链接 {img_get_url}")
logger.debug(f"{site} 获取到{site}验证码链接 {img_get_url}")
# ocr识别多次获取6位验证码
times = 0
@ -122,11 +122,11 @@ class Opencd(_ISiteSigninHandler):
# sign_res.text = '{"state":"success","signindays":"0","integral":"10"}'
sign_dict = json.loads(sign_res.text)
if sign_dict['state']:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
else:
logger.error(f"签到失败,签到接口返回 {sign_dict}")
return False, f'{site}签到失败'
logger.error(f"{site} 签到失败,签到接口返回 {sign_dict}")
return False, '签到失败'
logger.error(f'签到失败:未获取到验证码')
return False, f'{site}签到失败:未获取到验证码'
logger.error(f'{site} 签到失败:未获取到验证码')
return False, '签到失败:未获取到验证码'

View File

@ -43,16 +43,16 @@ class PTerClub(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败请检查cookie是否失效'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败请检查cookie是否失效'
sign_dict = json.loads(html_text)
if sign_dict['status'] == '1':
# {"status":"1","data":" (签到已成功300)","message":"<p>这是您的第<b>237</b>次签到,
# 已连续签到<b>237</b>天。</p><p>本次签到获得<b>300</b>克猫粮。</p>"}
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
else:
# {"status":"0","data":"抱歉","message":"您今天已经签到过了,请勿重复刷新。"}
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'

View File

@ -71,28 +71,28 @@ class Tjupt(_ISiteSigninHandler):
# 获取签到后返回html判断是否签到成功
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 没有签到则解析html
html = etree.HTML(html_text)
if not html:
return False, f'{site}签到失败'
return False, '签到失败'
img_url = html.xpath('//table[@class="captcha"]//img/@src')[0]
if not img_url:
logger.error(f"签到失败,未获取到签到图片")
return False, f'{site}签到失败,未获取到签到图片'
logger.error(f"{site} 签到失败,未获取到签到图片")
return False, '签到失败,未获取到签到图片'
# 签到图片
img_url = "https://www.tjupt.org" + img_url
@ -103,8 +103,8 @@ class Tjupt(_ISiteSigninHandler):
proxies=settings.PROXY if proxy else None
).get_res(url=img_url)
if not captcha_img_res or captcha_img_res.status_code != 200:
logger.error(f"签到图片 {img_url} 请求失败")
return False, f'{site}签到失败,未获取到签到图片'
logger.error(f"{site} 签到图片 {img_url} 请求失败")
return False, '签到失败,未获取到签到图片'
captcha_img = Image.open(BytesIO(captcha_img_res.content))
captcha_img_hash = self._tohash(captcha_img)
logger.debug(f"签到图片hash {captcha_img_hash}")
@ -114,8 +114,8 @@ class Tjupt(_ISiteSigninHandler):
options = html.xpath("//input[@name='answer']/following-sibling::text()")
if not values or not options:
logger.error(f"签到失败,未获取到答案选项")
return False, f'{site}签到失败,未获取到答案选项'
logger.error(f"{site} 签到失败,未获取到答案选项")
return False, '签到失败,未获取到答案选项'
# value+选项
answers = list(zip(values, options))
@ -191,7 +191,7 @@ class Tjupt(_ISiteSigninHandler):
logger.error(f"豆瓣图片匹配,未获取到匹配答案")
# 没有匹配签到成功,则签到失败
return False, f'{site}签到失败,未获取到匹配答案'
return False, '签到失败,未获取到匹配答案'
def __signin(self, answer, site_cookie, ua, proxy, site, exits_answers=None, captcha_img_hash=None):
"""
@ -207,8 +207,8 @@ class Tjupt(_ISiteSigninHandler):
proxies=settings.PROXY if proxy else None
).post_res(url=self._sign_in_url, data=data)
if not sign_in_res or sign_in_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
# 获取签到后返回html判断是否签到成功
sign_status = self.sign_in_result(html_res=sign_in_res.text,
@ -220,10 +220,10 @@ class Tjupt(_ISiteSigninHandler):
self.__write_local_answer(exits_answers=exits_answers or {},
captcha_img_hash=captcha_img_hash,
answer=answer)
return True, f'{site}签到成功'
return True, '签到成功'
else:
logger.error(f"签到失败,请到页面查看")
return False, f'{site}签到失败,请到页面查看'
logger.error(f"{site} 签到失败,请到页面查看")
return False, '签到失败,请到页面查看'
def __write_local_answer(self, exits_answers, captcha_img_hash, answer):
"""

View File

@ -52,19 +52,19 @@ class TTG(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
# 判断是否已签到
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 获取签到参数
signed_timestamp = re.search('(?<=signed_timestamp: ")\\d{10}', html_text).group()
@ -82,16 +82,16 @@ class TTG(_ISiteSigninHandler):
).post_res(url="https://totheglory.im/signed.php",
data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
sign_res.encoding = "utf-8"
if self._success_text in sign_res.text:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
if self._sign_text in sign_res.text:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
logger.error(f"签到失败,未知原因")
return False, f'{site}签到失败,未知原因'
logger.error(f"{site} 签到失败,未知原因")
return False, '签到失败,未知原因'

View File

@ -54,8 +54,8 @@ class U2(_ISiteSigninHandler):
now = datetime.datetime.now()
# 判断当前时间是否小于9点
if now.hour < 9:
logger.error(f"签到失败9点前不签到")
return False, f'{site}签到失败9点前不签到'
logger.error(f"{site} 签到失败9点前不签到")
return False, '签到失败9点前不签到'
# 获取页面html
html_text = self.get_page_source(url="https://u2.dmhy.org/showup.php",
@ -64,25 +64,25 @@ class U2(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}签到失败,请检查站点连通性'
logger.error(f"{site} 签到失败,请检查站点连通性")
return False, '签到失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}签到失败Cookie失效'
logger.error(f"{site} 签到失败Cookie失效")
return False, '签到失败Cookie失效'
# 判断是否已签到
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}今日已签到'
logger.info(f"{site} 今日已签到")
return True, '今日已签到'
# 没有签到则解析html
html = etree.HTML(html_text)
if not html:
return False, f'{site}签到失败'
return False, '签到失败'
# 获取签到参数
req = html.xpath("//form//td/input[@name='req']/@value")[0]
@ -91,8 +91,8 @@ class U2(_ISiteSigninHandler):
submit_name = html.xpath("//form//td/input[@type='submit']/@name")
submit_value = html.xpath("//form//td/input[@type='submit']/@value")
if not re or not hash_str or not form or not submit_name or not submit_value:
logger.error("签到失败,未获取到相关签到参数")
return False, f'{site}签到失败'
logger.error("{site} 签到失败,未获取到相关签到参数")
return False, '签到失败'
# 随机一个答案
answer_num = random.randint(0, 3)
@ -110,14 +110,14 @@ class U2(_ISiteSigninHandler):
).post_res(url="https://u2.dmhy.org/showup.php?action=show",
data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}签到失败,签到接口请求失败'
logger.error(f"{site} 签到失败,签到接口请求失败")
return False, '签到失败,签到接口请求失败'
# 判断是否签到成功
# sign_res.text = "<script type="text/javascript">window.location.href = 'showup.php';</script>"
if self._success_text in sign_res.text:
logger.info(f"签到成功")
return True, f'{site}签到成功'
logger.info(f"{site} 签到成功")
return True, '签到成功'
else:
logger.error(f"签到失败,未知原因")
return False, f'{site}签到失败,未知原因'
logger.error(f"{site} 签到失败,未知原因")
return False, '签到失败,未知原因'

View File

@ -46,17 +46,17 @@ class ZhuQue(_ISiteSigninHandler):
proxy=proxy,
render=render)
if not html_text:
logger.error(f"模拟登录失败,请检查站点连通性")
return False, f'{site}模拟登录失败,请检查站点连通性'
logger.error(f"{site} 模拟登录失败,请检查站点连通性")
return False, '模拟登录失败,请检查站点连通性'
if "login.php" in html_text:
logger.error(f"模拟登录失败Cookie失效")
return False, f'{site}模拟登录失败Cookie失效'
logger.error(f"{site} 模拟登录失败Cookie失效")
return False, '模拟登录失败Cookie失效'
html = etree.HTML(html_text)
if not html:
return False, f'{site}模拟登录失败'
return False, '模拟登录失败'
# 释放技能
msg = '失败'
@ -85,4 +85,4 @@ class ZhuQue(_ISiteSigninHandler):
msg = f'成功,获得{bonus}魔力'
logger.info(f'{site}】模拟登录成功,技能释放{msg}')
return True, f'{site}模拟登录成功,技能释放{msg}'
return True, f'模拟登录成功,技能释放{msg}'