fix 签到仿真

This commit is contained in:
jxxghp
2023-06-12 12:56:48 +08:00
parent a111c1dea9
commit 5303e0c5fb
21 changed files with 297 additions and 227 deletions

View File

@ -10,7 +10,7 @@ class PlaywrightHelper:
def get_page_source(self, url: str,
cookies: str = None,
ua: str = None,
proxy: dict = None,
proxies: dict = None,
headless: bool = True,
timeout: int = 30) -> str:
"""
@ -18,30 +18,33 @@ class PlaywrightHelper:
:param url: 网页地址
:param cookies: cookies
:param ua: user-agent
:param proxy: 代理
:param proxies: 代理
:param headless: 是否无头模式
:param timeout: 超时时间
"""
with sync_playwright() as playwright:
browser = playwright[self.browser_type].launch(headless=headless)
context = browser.new_context(user_agent=ua, proxy=proxy)
page = context.new_page()
if cookies:
page.set_extra_http_headers({"cookie": cookies})
try:
sync_stealth(page, pure=True)
page.goto(url)
res = sync_cf_retry(page)
if not res:
logger.warn("cloudflare challenge fail")
page.wait_for_load_state("networkidle", timeout=timeout * 1000)
source = page.content()
except Exception as e:
logger.error(f"获取网页源码失败: {e}")
source = None
finally:
browser.close()
source = ""
try:
with sync_playwright() as playwright:
browser = playwright[self.browser_type].launch(headless=headless)
context = browser.new_context(user_agent=ua, proxy=proxies)
page = context.new_page()
if cookies:
page.set_extra_http_headers({"cookie": cookies})
try:
sync_stealth(page, pure=True)
page.goto(url)
res = sync_cf_retry(page)
if not res:
logger.warn("cloudflare challenge fail")
page.wait_for_load_state("networkidle", timeout=timeout * 1000)
source = page.content()
except Exception as e:
logger.error(f"获取网页源码失败: {e}")
source = None
finally:
browser.close()
except Exception as e:
logger.error(f"获取网页源码失败: {e}")
return source

View File

@ -222,7 +222,7 @@ class TorrentSpider:
url=searchurl,
cookies=self.cookie,
ua=self.ua,
proxy=self.proxies
proxies=self.proxies
)
else:
# requests请求

View File

@ -138,7 +138,7 @@ class AutoSignIn(_PluginBase):
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
render = site_info.get("render")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
if not site_url or not site_cookie:
logger.warn(f"未配置 {site} 的站点地址或Cookie无法签到")
return ""
@ -154,7 +154,7 @@ class AutoSignIn(_PluginBase):
page_source = PlaywrightHelper().get_page_source(url=checkin_url,
cookies=site_cookie,
ua=ua,
proxy=proxy)
proxies=proxies)
if not SiteUtils.is_logged_in(page_source):
if under_challenge(page_source):
return f"{site}】无法通过Cloudflare"
@ -162,7 +162,7 @@ class AutoSignIn(_PluginBase):
else:
res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).get_res(url=checkin_url)
if not res and site_url != checkin_url:
logger.info(f"开始站点模拟登录:{site},地址:{site_url}...")

View File

@ -11,7 +11,7 @@ from app.utils.http import RequestUtils
from app.utils.string import StringUtils
class FWpt(_ISiteSigninHandler):
class Pt52(_ISiteSigninHandler):
"""
52pt
如果填写openai key则调用chatgpt获取答案
@ -44,30 +44,32 @@ class FWpt(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
proxies = settings.PROXY if site_info.get("proxy") else None
# 判断今日是否已签到
index_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url='https://52pt.site/bakatest.php')
html_text = self.get_page_source(url='https://52pt.site/bakatest.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not index_res or index_res.status_code != 200:
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in index_res.text:
if "login.php" in html_text:
logger.error(f"签到失败Cookie失效")
return False, f'{site}】签到失败Cookie失效'
sign_status = self.sign_in_result(html_res=index_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 没有签到则解析html
html = etree.HTML(index_res.text)
html = etree.HTML(html_text)
if not html:
return False, f'{site}】签到失败'
@ -94,7 +96,7 @@ class FWpt(_ISiteSigninHandler):
choice=choice,
site_cookie=site_cookie,
ua=ua,
proxy=proxy,
proxies=proxies,
site=site)
def __signin(self, questionid: str,
@ -102,7 +104,7 @@ class FWpt(_ISiteSigninHandler):
site: str,
site_cookie: str,
ua: str,
proxy: dict) -> Tuple[bool, str]:
proxies: dict) -> Tuple[bool, str]:
"""
签到请求
questionid: 450
@ -122,7 +124,7 @@ class FWpt(_ISiteSigninHandler):
sign_res = RequestUtils(cookies=site_cookie,
ua=ua,
proxies=proxy
proxies=proxies
).post_res(url='https://52pt.site/bakatest.php', data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")

View File

@ -3,8 +3,12 @@ import re
from abc import ABCMeta, abstractmethod
from typing import Tuple
import chardet
from ruamel.yaml import CommentedMap
from app.helper.browser import PlaywrightHelper
from app.log import logger
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
@ -34,6 +38,43 @@ class _ISiteSigninHandler(metaclass=ABCMeta):
"""
pass
@staticmethod
def get_page_source(url: str, cookie: str, ua: str, proxies: dict, render: bool) -> str:
"""
获取页面源码
:param url: Url地址
:param cookie: Cookie
:param ua: UA
:param proxies: 代理
:param render: 是否渲染
:return: 页面源码,错误信息
"""
if render:
return PlaywrightHelper().get_page_source(url=url,
cookies=cookie,
ua=ua,
proxies=proxies)
else:
res = RequestUtils(cookies=cookie,
ua=ua,
proxies=proxies
).get_res(url=url)
if res is not None:
# 使用chardet检测字符编码
raw_data = res.content
if raw_data:
try:
result = chardet.detect(raw_data)
encoding = result['encoding']
# 解码为字符串
return raw_data.decode(encoding)
except Exception as e:
logger.error(f"chardet解码失败{e}")
return res.text
else:
return res.text
return ""
@staticmethod
def sign_in_result(html_res: str, regexs: list) -> bool:
"""

View File

@ -5,7 +5,6 @@ from ruamel.yaml import CommentedMap
from app.core.config import settings
from app.log import logger
from app.plugins.autosignin.sites import _ISiteSigninHandler
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
@ -37,37 +36,41 @@ class BTSchool(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
proxies = settings.PROXY if site_info.get("proxy") else None
logger.info(f"{site} 开始签到")
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://pt.btschool.club")
# 判断今日是否已签到
html_text = self.get_page_source(url='https://pt.btschool.club',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_res or html_res.status_code != 200:
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
# 已签到
if self._sign_text not in html_res.text:
if self._sign_text not in html_text:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://pt.btschool.club/index.php?action=addbonus")
html_text = self.get_page_source(url='https://pt.btschool.club/index.php?action=addbonus',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not sign_res or sign_res.status_code != 200:
if not html_text:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}】签到失败,签到接口请求失败'
# 签到成功
if self._sign_text not in sign_res.text:
if self._sign_text not in html_text:
logger.info(f"签到成功")
return True, f'{site}】签到成功'

View File

@ -45,30 +45,32 @@ class CHDBits(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 判断今日是否已签到
index_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url='https://chdbits.co/bakatest.php')
html_text = self.get_page_source(url='https://chdbits.co/bakatest.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not index_res or index_res.status_code != 200:
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in index_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
sign_status = self.sign_in_result(html_res=index_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 没有签到则解析html
html = etree.HTML(index_res.text)
html = etree.HTML(html_text)
if not html:
return False, f'{site}】签到失败'
@ -95,7 +97,7 @@ class CHDBits(_ISiteSigninHandler):
choice=choice,
site_cookie=site_cookie,
ua=ua,
proxy=proxy,
proxies=proxies,
site=site)
def __signin(self, questionid: str,
@ -103,7 +105,7 @@ class CHDBits(_ISiteSigninHandler):
site: str,
site_cookie: str,
ua: str,
proxy: dict) -> Tuple[bool, str]:
proxies: dict) -> Tuple[bool, str]:
"""
签到请求
questionid: 450
@ -123,7 +125,7 @@ class CHDBits(_ISiteSigninHandler):
sign_res = RequestUtils(cookies=site_cookie,
ua=ua,
proxies=proxy
proxies=proxies
).post_res(url='https://chdbits.co/bakatest.php', data=data)
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")

View File

@ -5,7 +5,6 @@ from ruamel.yaml import CommentedMap
from app.core.config import settings
from app.log import logger
from app.plugins.autosignin.sites import _ISiteSigninHandler
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
@ -37,26 +36,28 @@ class HaiDan(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 签到
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://www.haidan.video/signin.php")
if not sign_res or sign_res.status_code != 200:
html_text = self.get_page_source(url='https://www.haidan.video/signin.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in sign_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
sign_status = self.sign_in_result(html_res=sign_res.text,
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.error(f"签到失败,签到接口返回 {sign_res.text}")
logger.error(f"签到失败,签到接口返回 {html_text}")
return False, f'{site}】签到失败'

View File

@ -38,20 +38,23 @@ class Hares(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 获取页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://club.hares.top")
if not html_res or html_res.status_code != 200:
html_text = self.get_page_source(url='https://club.hares.top',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"模拟访问失败,请检查站点连通性")
return False, f'{site}】模拟访问失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"模拟访问失败,cookie失效")
return False, f'{site}】模拟访问失败,cookie失效'
if "login.php" in html_text:
logger.error(f"模拟访问失败,Cookie失效")
return False, f'{site}】模拟访问失败,Cookie失效'
# if self._sign_text in html_res.text:
# logger.info(f"今日已签到")
@ -63,7 +66,7 @@ class Hares(_ISiteSigninHandler):
}
sign_res = RequestUtils(cookies=site_cookie,
headers=headers,
proxies=proxy
proxies=proxies
).get_res(url="https://club.hares.top/attendance.php?action=sign")
if not sign_res or sign_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")

View File

@ -39,7 +39,7 @@ class HDArea(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
# 获取页面html
data = {
@ -47,15 +47,15 @@ class HDArea(_ISiteSigninHandler):
}
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
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}】签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
# 判断是否已签到
# '已连续签到278天此次签到您获得了100魔力值奖励!'

View File

@ -39,7 +39,7 @@ class HDChina(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
# 尝试解决瓷器cookie每天签到后过期,只保留hdchina=部分
cookie = ""
@ -52,22 +52,22 @@ class HDChina(_ISiteSigninHandler):
cookie += sub_str + ";"
if "hdchina=" not in cookie:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
site_cookie = cookie
# 获取页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
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}】签到失败,请检查站点连通性'
if "login.php" in html_res.text or "阻断页面" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
# 获取新返回的cookie进行签到
site_cookie = ';'.join(['{}={}'.format(k, v) for k, v in html_res.cookies.get_dict().items()])
@ -99,7 +99,7 @@ class HDChina(_ISiteSigninHandler):
}
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
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"签到失败,签到接口请求失败")

View File

@ -5,7 +5,6 @@ from ruamel.yaml import CommentedMap
from app.core.config import settings
from app.log import logger
from app.plugins.autosignin.sites import _ISiteSigninHandler
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
@ -39,28 +38,30 @@ class HDCity(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 获取页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://hdcity.city/sign")
if not html_res or html_res.status_code != 200:
html_text = self.get_page_source(url='https://hdcity.city/sign',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
# 判断是否已签到
# '已连续签到278天此次签到您获得了100魔力值奖励!'
if self._success_text in html_res.text:
if self._success_text in html_text:
logger.info(f"签到成功")
return True, f'{site}】签到成功'
if self._repeat_text in html_res.text:
if self._repeat_text in html_text:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
logger.error(f"签到失败,签到接口返回 {html_res.text}")
logger.error(f"签到失败,签到接口返回 {html_text}")
return False, f'{site}】签到失败'

View File

@ -40,22 +40,24 @@ class HDSky(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 判断今日是否已签到
index_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url='https://hdsky.me')
if not index_res or index_res.status_code != 200:
html_text = self.get_page_source(url='https://hdsky.me',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in index_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
sign_status = self.sign_in_result(html_res=index_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
@ -67,7 +69,7 @@ class HDSky(_ISiteSigninHandler):
while not img_hash and res_times <= 3:
image_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).post_res(url='https://hdsky.me/image_code_ajax.php',
data={'action': 'new'})
if image_res and image_res.status_code == 200:
@ -112,7 +114,7 @@ class HDSky(_ISiteSigninHandler):
# 访问签到链接
res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).post_res(url='https://hdsky.me/showup.php', data=data)
if res and res.status_code == 200:
if json.loads(res.text)["success"]:

View File

@ -6,7 +6,6 @@ from ruamel.yaml import CommentedMap
from app.core.config import settings
from app.log import logger
from app.plugins.autosignin.sites import _ISiteSigninHandler
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
@ -41,41 +40,44 @@ class HDUpt(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 获取页面html
index_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://pt.hdupt.com")
if not index_res or index_res.status_code != 200:
html_text = self.get_page_source(url='https://pt.hdupt.com',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in index_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
sign_status = self.sign_in_result(html_res=index_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 签到
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).post_res(url="https://pt.hdupt.com/added.php?action=qiandao")
if not sign_res or sign_res.status_code != 200:
html_text = self.get_page_source(url='https://pt.hdupt.com/added.php?action=qiandao',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
logger.debug(f"签到接口返回 {sign_res.text}")
logger.debug(f"签到接口返回 {html_text}")
# 判断是否已签到 sign_res.text = ".23"
if len(list(map(int, re.findall(r"\d+", sign_res.text)))) > 0:
if len(list(map(int, re.findall(r"\d+", html_text)))) > 0:
logger.info(f"签到成功")
return True, f'{site}】签到成功'
logger.error(f"签到失败,签到接口返回 {sign_res.text}")
logger.error(f"签到失败,签到接口返回 {html_text}")
return False, f'{site}】签到失败'

View File

@ -41,36 +41,39 @@ class Opencd(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 判断今日是否已签到
index_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url='https://www.open.cd')
if not index_res or index_res.status_code != 200:
html_text = self.get_page_source(url='https://www.open.cd',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in index_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
if self._repeat_text in index_res.text:
if self._repeat_text in html_text:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 获取签到参数
sign_param_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url='https://www.open.cd/plugin_sign-in.php')
if not sign_param_res or sign_param_res.status_code != 200:
html_text = self.get_page_source(url='https://www.open.cd/plugin_sign-in.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
# 没有签到则解析html
html = etree.HTML(sign_param_res.text)
html = etree.HTML(html_text)
if not html:
return False, f'{site}】签到失败'
@ -112,7 +115,7 @@ class Opencd(_ISiteSigninHandler):
# 访问签到链接
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).post_res(url='https://www.open.cd/plugin_sign-in.php?cmd=signin', data=data)
if sign_res and sign_res.status_code == 200:
logger.debug(f"sign_res返回 {sign_res.text}")

View File

@ -6,7 +6,6 @@ from ruamel.yaml import CommentedMap
from app.core.config import settings
from app.log import logger
from app.plugins.autosignin.sites import _ISiteSigninHandler
from app.utils.http import RequestUtils
from app.utils.string import StringUtils
@ -35,18 +34,20 @@ class PTerClub(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 签到
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://pterclub.com/attendance-ajax.php")
if not sign_res or sign_res.status_code != 200:
html_text = self.get_page_source(url='https://pterclub.com/attendance-ajax.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,签到接口请求失败")
return False, f'{site}】签到失败请检查cookie是否失效'
sign_dict = json.loads(sign_res.text)
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>"}

View File

@ -55,35 +55,37 @@ class Tjupt(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 创建正确答案存储目录
if not os.path.exists(os.path.dirname(self._answer_file)):
os.makedirs(os.path.dirname(self._answer_file))
# 获取北洋签到页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url=self._sign_in_url)
html_text = self.get_page_source(url=self._sign_in_url,
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
# 获取签到后返回html判断是否签到成功
if not html_res or html_res.status_code != 200:
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
sign_status = self.sign_in_result(html_res=html_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 没有签到则解析html
html = etree.HTML(html_res.text)
html = etree.HTML(html_text)
if not html:
return False, f'{site}】签到失败'
img_url = html.xpath('//table[@class="captcha"]//img/@src')[0]
@ -98,7 +100,7 @@ class Tjupt(_ISiteSigninHandler):
# 获取签到图片hash
captcha_img_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).get_res(url=img_url)
if not captcha_img_res or captcha_img_res.status_code != 200:
logger.error(f"签到图片 {img_url} 请求失败")
@ -136,7 +138,7 @@ class Tjupt(_ISiteSigninHandler):
return self.__signin(answer=value,
site_cookie=site_cookie,
ua=ua,
proxy=proxy,
proxies=proxies,
site=site)
except (FileNotFoundError, IOError, OSError) as e:
logger.debug(f"查询本地已知答案失败:{e},继续请求豆瓣查询")
@ -179,7 +181,7 @@ class Tjupt(_ISiteSigninHandler):
return self.__signin(answer=value,
site_cookie=site_cookie,
ua=ua,
proxy=proxy,
proxies=proxies,
site=site,
exits_answers=exits_answers,
captcha_img_hash=captcha_img_hash)
@ -191,7 +193,7 @@ class Tjupt(_ISiteSigninHandler):
# 没有匹配签到成功,则签到失败
return False, f'{site}】签到失败,未获取到匹配答案'
def __signin(self, answer, site_cookie, ua, proxy, site, exits_answers=None, captcha_img_hash=None):
def __signin(self, answer, site_cookie, ua, proxies, site, exits_answers=None, captcha_img_hash=None):
"""
签到请求
"""
@ -202,7 +204,7 @@ class Tjupt(_ISiteSigninHandler):
logger.debug(f"提交data {data}")
sign_in_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).post_res(url=self._sign_in_url, data=data)
if not sign_in_res or sign_in_res.status_code != 200:
logger.error(f"签到失败,签到接口请求失败")

View File

@ -42,32 +42,33 @@ class TTG(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 获取页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://totheglory.im")
if not html_res or html_res.status_code != 200:
html_text = self.get_page_source(url="https://totheglory.im",
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
# 判断是否已签到
html_res.encoding = "utf-8"
sign_status = self.sign_in_result(html_res=html_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 获取签到参数
signed_timestamp = re.search('(?<=signed_timestamp: ")\\d{10}', html_res.text).group()
signed_token = re.search('(?<=signed_token: ").*(?=")', html_res.text).group()
signed_timestamp = re.search('(?<=signed_timestamp: ")\\d{10}', html_text).group()
signed_token = re.search('(?<=signed_token: ").*(?=")', html_text).group()
logger.debug(f"signed_timestamp={signed_timestamp} signed_token={signed_token}")
data = {
@ -77,7 +78,7 @@ class TTG(_ISiteSigninHandler):
# 签到
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).post_res(url="https://totheglory.im/signed.php",
data=data)
if not sign_res or sign_res.status_code != 200:

View File

@ -48,7 +48,8 @@ class U2(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
now = datetime.datetime.now()
# 判断当前时间是否小于9点
@ -57,28 +58,28 @@ class U2(_ISiteSigninHandler):
return False, f'{site}】签到失败9点前不签到'
# 获取页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://u2.dmhy.org/showup.php")
if not html_res or html_res.status_code != 200:
html_text = self.get_page_source(url="https://u2.dmhy.org/showup.php",
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")
return False, f'{site}】签到失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"签到失败,cookie失效")
return False, f'{site}】签到失败,cookie失效'
if "login.php" in html_text:
logger.error(f"签到失败,Cookie失效")
return False, f'{site}】签到失败,Cookie失效'
# 判断是否已签到
html_res.encoding = "utf-8"
sign_status = self.sign_in_result(html_res=html_res.text,
sign_status = self.sign_in_result(html_res=html_text,
regexs=self._sign_regex)
if sign_status:
logger.info(f"今日已签到")
return True, f'{site}】今日已签到'
# 没有签到则解析html
html = etree.HTML(html_res.text)
html = etree.HTML(html_text)
if not html:
return False, f'{site}】签到失败'
@ -105,7 +106,7 @@ class U2(_ISiteSigninHandler):
# 签到
sign_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
proxies=proxies
).post_res(url="https://u2.dmhy.org/showup.php?action=show",
data=data)
if not sign_res or sign_res.status_code != 200:

View File

@ -36,22 +36,24 @@ class ZhuQue(_ISiteSigninHandler):
site = site_info.get("name")
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
proxy = settings.PROXY if site_info.get("proxy") else None
proxies = settings.PROXY if site_info.get("proxy") else None
render = site_info.get("render")
# 获取页面html
html_res = RequestUtils(cookies=site_cookie,
headers=ua,
proxies=proxy
).get_res(url="https://zhuque.in")
if not html_res or html_res.status_code != 200:
html_text = self.get_page_source(url="https://zhuque.in",
cookie=site_cookie,
ua=ua,
proxies=proxies,
render=render)
if not html_text:
logger.error(f"模拟登录失败,请检查站点连通性")
return False, f'{site}】模拟登录失败,请检查站点连通性'
if "login.php" in html_res.text:
logger.error(f"模拟登录失败,cookie失效")
return False, f'{site}】模拟登录失败,cookie失效'
if "login.php" in html_text:
logger.error(f"模拟登录失败,Cookie失效")
return False, f'{site}】模拟登录失败,Cookie失效'
html = etree.HTML(html_res.text)
html = etree.HTML(html_text)
if not html:
return False, f'{site}】模拟登录失败'
@ -71,7 +73,7 @@ class ZhuQue(_ISiteSigninHandler):
}
skill_res = RequestUtils(cookies=site_cookie,
headers=headers,
proxies=proxy
proxies=proxies
).post_res(url="https://zhuque.in/api/gaming/fireGenshinCharacterMagic", json=data)
if not skill_res or skill_res.status_code != 200:
logger.error(f"模拟登录失败,释放技能失败")

View File

@ -109,7 +109,7 @@ class SiteStatistic(_PluginBase):
html_text = PlaywrightHelper().get_page_source(url=url,
cookies=site_cookie,
ua=ua,
proxy=proxies)
proxies=proxies)
else:
# 普通模式
res = RequestUtils(cookies=site_cookie,