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 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.include_router(login.router, tags=["login"])
api_router.include_router(users.router, prefix="/users", tags=["users"])
api_router.include_router(sites.router, prefix="/sites", tags=["sites"])
api_router.include_router(messages.router, prefix="/messages", tags=["messages"])
api_router.include_router(webhooks.router, prefix="/webhooks", tags=["webhooks"])
api_router.include_router(subscribes.router, prefix="/subscribes", tags=["subscribes"])
api_router.include_router(user.router, prefix="/user", tags=["user"])
api_router.include_router(site.router, prefix="/site", tags=["site"])
api_router.include_router(message.router, prefix="/message", tags=["message"])
api_router.include_router(webhook.router, prefix="/webhook", tags=["webhook"])
api_router.include_router(subscribe.router, prefix="/subscribe", tags=["subscribe"])
api_router.include_router(media.router, prefix="/media", tags=["media"])
api_router.include_router(douban.router, prefix="/douban", tags=["douban"])

View File

@ -49,6 +49,50 @@ async def create_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)
async def read_user_by_id(
user_id: int,

View File

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

View File

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

View File

@ -28,3 +28,7 @@ class User(Base):
@staticmethod
def get_by_email(db: Session, email: str):
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
# 站点UA
ua: str = None
# 代理
# Requests 代理
proxies: dict = None
# playwright 代理
proxy_server: dict = None
# 是否渲染
render: bool = False
# Referer
@ -99,6 +101,7 @@ class TorrentSpider:
self.ua = settings.USER_AGENT
if indexer.get('proxy'):
self.proxies = settings.PROXY
self.proxy_server = settings.PROXY_SERVER
if indexer.get('cookie'):
self.cookie = indexer.get('cookie')
if referer:
@ -222,7 +225,7 @@ class TorrentSpider:
url=searchurl,
cookies=self.cookie,
ua=self.ua,
proxies=self.proxies
proxies=self.proxy_server
)
else:
# requests请求

View File

@ -22,7 +22,7 @@ class Slack:
_client: WebClient = 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):

View File

@ -20,7 +20,7 @@ apihelper.proxy = settings.PROXY
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()
_bot: telebot.TeleBot = None

View File

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

View File

@ -46,12 +46,13 @@ class Pt52(_ISiteSigninHandler):
ua = site_info.get("ua")
render = site_info.get("render")
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',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:

View File

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

View File

@ -46,13 +46,14 @@ class CHDBits(_ISiteSigninHandler):
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
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")
# 判断今日是否已签到
html_text = self.get_page_source(url='https://chdbits.co/bakatest.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:

View File

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

View File

@ -39,13 +39,14 @@ class Hares(_ISiteSigninHandler):
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
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")
# 获取页面html
html_text = self.get_page_source(url='https://club.hares.top',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:

View File

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

View File

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

View File

@ -41,13 +41,14 @@ class HDUpt(_ISiteSigninHandler):
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
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")
# 获取页面html
html_text = self.get_page_source(url='https://pt.hdupt.com',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:
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',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")

View File

@ -42,13 +42,14 @@ class Opencd(_ISiteSigninHandler):
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
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")
# 判断今日是否已签到
html_text = self.get_page_source(url='https://www.open.cd',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:
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',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:
logger.error(f"签到失败,请检查站点连通性")

View File

@ -35,13 +35,14 @@ class PTerClub(_ISiteSigninHandler):
site_cookie = site_info.get("cookie")
ua = site_info.get("ua")
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")
# 签到
html_text = self.get_page_source(url='https://pterclub.com/attendance-ajax.php',
cookie=site_cookie,
ua=ua,
proxies=proxies,
proxies=proxy_server,
render=render)
if not html_text:
logger.error(f"签到失败,签到接口请求失败")

View File

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

View File

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

View File

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

View File

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

View File

@ -101,6 +101,7 @@ class SiteStatistic(_PluginBase):
ua = site_info.get("ua")
session = requests.Session()
proxies = settings.PROXY if proxy else None
proxy_server = settings.PROXY_SERVER if proxy else None
render = site_info.get("render")
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,
cookies=site_cookie,
ua=ua,
proxies=proxies)
proxies=proxy_server)
else:
# 普通模式
res = RequestUtils(cookies=site_cookie,