fix playwright proxy

This commit is contained in:
jxxghp
2023-06-16 08:25:20 +08:00
parent 6a5e117f0b
commit 0ce6e652a0
28 changed files with 108 additions and 33 deletions

View File

@ -1,13 +1,13 @@
from fastapi import APIRouter from fastapi import APIRouter
from app.api.endpoints import login, users, sites, messages, webhooks, subscribes, media, douban from app.api.endpoints import login, user, site, message, webhook, subscribe, media, douban
api_router = APIRouter() api_router = APIRouter()
api_router.include_router(login.router, tags=["login"]) api_router.include_router(login.router, tags=["login"])
api_router.include_router(users.router, prefix="/users", tags=["users"]) api_router.include_router(user.router, prefix="/user", tags=["user"])
api_router.include_router(sites.router, prefix="/sites", tags=["sites"]) api_router.include_router(site.router, prefix="/site", tags=["site"])
api_router.include_router(messages.router, prefix="/messages", tags=["messages"]) api_router.include_router(message.router, prefix="/message", tags=["message"])
api_router.include_router(webhooks.router, prefix="/webhooks", tags=["webhooks"]) api_router.include_router(webhook.router, prefix="/webhook", tags=["webhook"])
api_router.include_router(subscribes.router, prefix="/subscribes", tags=["subscribes"]) api_router.include_router(subscribe.router, prefix="/subscribe", tags=["subscribe"])
api_router.include_router(media.router, prefix="/media", tags=["media"]) api_router.include_router(media.router, prefix="/media", tags=["media"])
api_router.include_router(douban.router, prefix="/douban", tags=["douban"]) api_router.include_router(douban.router, prefix="/douban", tags=["douban"])

View File

@ -49,6 +49,50 @@ async def create_user(
return user return user
@router.put("/", response_model=schemas.User)
async def update_user(
*,
db: Session = Depends(get_db),
user_in: schemas.UserCreate,
current_user: User = Depends(get_current_active_superuser),
) -> Any:
"""
更新用户
"""
user = current_user.get_by_email(db, email=user_in.email)
if not user:
raise HTTPException(
status_code=404,
detail="用户不存在",
)
user_info = user_in.dict()
if user_info.get("password"):
user_info["hashed_password"] = get_password_hash(user_info["password"])
user_info.pop("password")
user.update(db, **user_info)
return user
@router.delete("/", response_model=schemas.Response)
async def delete_user(
*,
db: Session = Depends(get_db),
user_in: schemas.UserCreate,
current_user: User = Depends(get_current_active_superuser),
) -> Any:
"""
删除用户
"""
user = current_user.get_by_email(db, email=user_in.email)
if not user:
raise HTTPException(
status_code=404,
detail="用户不存在",
)
user.delete_by_email(db, user_in.email)
return {"success": True}
@router.get("/{user_id}", response_model=schemas.User) @router.get("/{user_id}", response_model=schemas.User)
async def read_user_by_id( async def read_user_by_id(
user_id: int, user_id: int,

View File

@ -120,7 +120,7 @@ class SiteMessageChain(ChainBase):
url=site_info.url, url=site_info.url,
username=username, username=username,
password=password, password=password,
proxies=settings.PROXY if site_info.proxy else None proxies=settings.PROXY_HOST if site_info.proxy else None
) )
if result: if result:
cookie, ua, msg = result cookie, ua, msg = result

View File

@ -29,7 +29,7 @@ class Settings(BaseSettings):
SUPERUSER_PASSWORD: str = "password" SUPERUSER_PASSWORD: str = "password"
# API密钥需要更换 # API密钥需要更换
API_TOKEN: str = "moviepilot" API_TOKEN: str = "moviepilot"
# 网络代理 # 网络代理 IP:PORT
PROXY_HOST: str = None PROXY_HOST: str = None
# 媒体信息搜索来源 # 媒体信息搜索来源
SEARCH_SOURCE: str = "themoviedb" SEARCH_SOURCE: str = "themoviedb"
@ -183,11 +183,18 @@ class Settings(BaseSettings):
def PROXY(self): def PROXY(self):
if self.PROXY_HOST: if self.PROXY_HOST:
return { return {
"http": self.PROXY_HOST, "http": f"http://{self.PROXY_HOST}",
"https": self.PROXY_HOST "https": f"https://{self.PROXY_HOST}"
} }
return None return None
@property
def PROXY_SERVER(self):
if self.PROXY_HOST:
return {
"server": self.PROXY_HOST
}
def __init__(self): def __init__(self):
super().__init__() super().__init__()
with self.CONFIG_PATH as p: with self.CONFIG_PATH as p:

View File

@ -28,3 +28,7 @@ class User(Base):
@staticmethod @staticmethod
def get_by_email(db: Session, email: str): def get_by_email(db: Session, email: str):
return db.query(User).filter(User.email == email).first() return db.query(User).filter(User.email == email).first()
@staticmethod
def delete_by_email(db: Session, email: str):
return db.query(User).filter(User.email == email).delete()

View File

@ -31,8 +31,10 @@ class TorrentSpider:
cookie: str = None cookie: str = None
# 站点UA # 站点UA
ua: str = None ua: str = None
# 代理 # Requests 代理
proxies: dict = None proxies: dict = None
# playwright 代理
proxy_server: dict = None
# 是否渲染 # 是否渲染
render: bool = False render: bool = False
# Referer # Referer
@ -99,6 +101,7 @@ class TorrentSpider:
self.ua = settings.USER_AGENT self.ua = settings.USER_AGENT
if indexer.get('proxy'): if indexer.get('proxy'):
self.proxies = settings.PROXY self.proxies = settings.PROXY
self.proxy_server = settings.PROXY_SERVER
if indexer.get('cookie'): if indexer.get('cookie'):
self.cookie = indexer.get('cookie') self.cookie = indexer.get('cookie')
if referer: if referer:
@ -222,7 +225,7 @@ class TorrentSpider:
url=searchurl, url=searchurl,
cookies=self.cookie, cookies=self.cookie,
ua=self.ua, ua=self.ua,
proxies=self.proxies proxies=self.proxy_server
) )
else: else:
# requests请求 # requests请求

View File

@ -22,7 +22,7 @@ class Slack:
_client: WebClient = None _client: WebClient = None
_service: SocketModeHandler = None _service: SocketModeHandler = None
_ds_url = f"http://127.0.0.1:{settings.PORT}/api/v1/messages?token={settings.API_TOKEN}" _ds_url = f"http://127.0.0.1:{settings.PORT}/api/v1/message?token={settings.API_TOKEN}"
def __init__(self): def __init__(self):

View File

@ -20,7 +20,7 @@ apihelper.proxy = settings.PROXY
class Telegram(metaclass=Singleton): class Telegram(metaclass=Singleton):
_ds_url = f"http://127.0.0.1:{settings.PORT}/api/v1/messages?token={settings.API_TOKEN}" _ds_url = f"http://127.0.0.1:{settings.PORT}/api/v1/message?token={settings.API_TOKEN}"
_event = Event() _event = Event()
_bot: telebot.TeleBot = None _bot: telebot.TeleBot = None

View File

@ -139,6 +139,7 @@ class AutoSignIn(_PluginBase):
ua = site_info.get("ua") ua = site_info.get("ua")
render = site_info.get("render") render = site_info.get("render")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
if not site_url or not site_cookie: if not site_url or not site_cookie:
logger.warn(f"未配置 {site} 的站点地址或Cookie无法签到") logger.warn(f"未配置 {site} 的站点地址或Cookie无法签到")
return "" return ""
@ -154,7 +155,7 @@ class AutoSignIn(_PluginBase):
page_source = PlaywrightHelper().get_page_source(url=checkin_url, page_source = PlaywrightHelper().get_page_source(url=checkin_url,
cookies=site_cookie, cookies=site_cookie,
ua=ua, ua=ua,
proxies=proxies) proxies=proxy_server)
if not SiteUtils.is_logged_in(page_source): if not SiteUtils.is_logged_in(page_source):
if under_challenge(page_source): if under_challenge(page_source):
return f"{site}】无法通过Cloudflare" return f"{site}】无法通过Cloudflare"

View File

@ -46,12 +46,13 @@ class Pt52(_ISiteSigninHandler):
ua = site_info.get("ua") ua = site_info.get("ua")
render = site_info.get("render") render = site_info.get("render")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
# 判断今日是否已签到 # 判断今日是否已签到
html_text = self.get_page_source(url='https://52pt.site/bakatest.php', html_text = self.get_page_source(url='https://52pt.site/bakatest.php',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:

View File

@ -38,13 +38,15 @@ class BTSchool(_ISiteSigninHandler):
ua = site_info.get("ua") ua = site_info.get("ua")
render = site_info.get("render") render = site_info.get("render")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
logger.info(f"{site} 开始签到") logger.info(f"{site} 开始签到")
# 判断今日是否已签到 # 判断今日是否已签到
html_text = self.get_page_source(url='https://pt.btschool.club', html_text = self.get_page_source(url='https://pt.btschool.club',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
@ -63,7 +65,7 @@ class BTSchool(_ISiteSigninHandler):
html_text = self.get_page_source(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, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:

View File

@ -46,13 +46,14 @@ class CHDBits(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 判断今日是否已签到 # 判断今日是否已签到
html_text = self.get_page_source(url='https://chdbits.co/bakatest.php', html_text = self.get_page_source(url='https://chdbits.co/bakatest.php',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:

View File

@ -37,13 +37,14 @@ class HaiDan(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 签到 # 签到
html_text = self.get_page_source(url='https://www.haidan.video/signin.php', html_text = self.get_page_source(url='https://www.haidan.video/signin.php',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -39,13 +39,14 @@ class Hares(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 获取页面html # 获取页面html
html_text = self.get_page_source(url='https://club.hares.top', html_text = self.get_page_source(url='https://club.hares.top',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:

View File

@ -39,13 +39,14 @@ class HDCity(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 获取页面html # 获取页面html
html_text = self.get_page_source(url='https://hdcity.city/sign', html_text = self.get_page_source(url='https://hdcity.city/sign',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -41,13 +41,14 @@ class HDSky(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 判断今日是否已签到 # 判断今日是否已签到
html_text = self.get_page_source(url='https://hdsky.me', html_text = self.get_page_source(url='https://hdsky.me',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -41,13 +41,14 @@ class HDUpt(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 获取页面html # 获取页面html
html_text = self.get_page_source(url='https://pt.hdupt.com', html_text = self.get_page_source(url='https://pt.hdupt.com',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")
@ -67,7 +68,7 @@ class HDUpt(_ISiteSigninHandler):
html_text = self.get_page_source(url='https://pt.hdupt.com/added.php?action=qiandao', html_text = self.get_page_source(url='https://pt.hdupt.com/added.php?action=qiandao',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -42,13 +42,14 @@ class Opencd(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 判断今日是否已签到 # 判断今日是否已签到
html_text = self.get_page_source(url='https://www.open.cd', html_text = self.get_page_source(url='https://www.open.cd',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")
@ -66,7 +67,7 @@ class Opencd(_ISiteSigninHandler):
html_text = self.get_page_source(url='https://www.open.cd/plugin_sign-in.php', html_text = self.get_page_source(url='https://www.open.cd/plugin_sign-in.php',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -35,13 +35,14 @@ class PTerClub(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 签到 # 签到
html_text = self.get_page_source(url='https://pterclub.com/attendance-ajax.php', html_text = self.get_page_source(url='https://pterclub.com/attendance-ajax.php',
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,签到接口请求失败") logger.error(f"签到失败,签到接口请求失败")

View File

@ -56,6 +56,7 @@ class Tjupt(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 创建正确答案存储目录 # 创建正确答案存储目录
@ -66,7 +67,7 @@ class Tjupt(_ISiteSigninHandler):
html_text = self.get_page_source(url=self._sign_in_url, html_text = self.get_page_source(url=self._sign_in_url,
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
# 获取签到后返回html判断是否签到成功 # 获取签到后返回html判断是否签到成功

View File

@ -43,13 +43,14 @@ class TTG(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 获取页面html # 获取页面html
html_text = self.get_page_source(url="https://totheglory.im", html_text = self.get_page_source(url="https://totheglory.im",
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -49,6 +49,7 @@ class U2(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
now = datetime.datetime.now() now = datetime.datetime.now()
@ -61,7 +62,7 @@ class U2(_ISiteSigninHandler):
html_text = self.get_page_source(url="https://u2.dmhy.org/showup.php", html_text = self.get_page_source(url="https://u2.dmhy.org/showup.php",
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"签到失败,请检查站点连通性") logger.error(f"签到失败,请检查站点连通性")

View File

@ -37,13 +37,14 @@ class ZhuQue(_ISiteSigninHandler):
site_cookie = site_info.get("cookie") site_cookie = site_info.get("cookie")
ua = site_info.get("ua") ua = site_info.get("ua")
proxies = settings.PROXY if site_info.get("proxy") else None proxies = settings.PROXY if site_info.get("proxy") else None
proxy_server = settings.PROXY_SERVER if site_info.get("proxy") else None
render = site_info.get("render") render = site_info.get("render")
# 获取页面html # 获取页面html
html_text = self.get_page_source(url="https://zhuque.in", html_text = self.get_page_source(url="https://zhuque.in",
cookie=site_cookie, cookie=site_cookie,
ua=ua, ua=ua,
proxies=proxies, proxies=proxy_server,
render=render) render=render)
if not html_text: if not html_text:
logger.error(f"模拟登录失败,请检查站点连通性") logger.error(f"模拟登录失败,请检查站点连通性")

View File

@ -101,6 +101,7 @@ class SiteStatistic(_PluginBase):
ua = site_info.get("ua") ua = site_info.get("ua")
session = requests.Session() session = requests.Session()
proxies = settings.PROXY if proxy else None proxies = settings.PROXY if proxy else None
proxy_server = settings.PROXY_SERVER if proxy else None
render = site_info.get("render") render = site_info.get("render")
logger.debug(f"站点 {site_name} url={url} site_cookie={site_cookie} ua={ua}") logger.debug(f"站点 {site_name} url={url} site_cookie={site_cookie} ua={ua}")
@ -109,7 +110,7 @@ class SiteStatistic(_PluginBase):
html_text = PlaywrightHelper().get_page_source(url=url, html_text = PlaywrightHelper().get_page_source(url=url,
cookies=site_cookie, cookies=site_cookie,
ua=ua, ua=ua,
proxies=proxies) proxies=proxy_server)
else: else:
# 普通模式 # 普通模式
res = RequestUtils(cookies=site_cookie, res = RequestUtils(cookies=site_cookie,