From 1ef2c563306d7a3d734d39167b0339085040c32e Mon Sep 17 00:00:00 2001 From: "Wang.Luo" <1593775941@qq.com> Date: Tue, 3 Jun 2025 01:54:18 +0800 Subject: [PATCH] =?UTF-8?q?"Phb=E4=BC=98=E5=8C=96=E5=A4=96=E9=83=A8Cookie?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BB=8EextendDict=E6=88=96=E8=BF=9C=E7=A8=8BURL=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=8A=A0=E8=BD=BDCookie=E9=85=8D=E7=BD=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PyramidStore/plugin/adult/Phb.py | 65 ++++++++++++++++++++++++++------ api.json | 5 ++- 2 files changed, 58 insertions(+), 12 deletions(-) diff --git a/PyramidStore/plugin/adult/Phb.py b/PyramidStore/plugin/adult/Phb.py index aa5e938..e7f3487 100644 --- a/PyramidStore/plugin/adult/Phb.py +++ b/PyramidStore/plugin/adult/Phb.py @@ -54,19 +54,62 @@ class Spider(Spider): self.session.proxies.update(self.proxies) self.session.headers.update(self.headers) - # ====== 在这里处理并传入指定的 Cookie ====== - # 你提供的 Cookie 字符串 - cookie_string = "KEY=2800769*3022907:116762244:2236104702:1; platform=mobile; ss=830813246555776814; sessid=300353306947678113; comp_detect-cookies=13166.100000; fg_afaf12e4c5419a855dd0bf120670f=41719.100000; fg_757a7e3b2b97e62caeae14647b10ab8a=62682.100000; fg_63bebf99a35b4f802b2ee7589fece7c6=48941.100000; fg_7d466c3b3b825a5e5f974868b9d87c01=43396.100000; fg_7d31324eedb583147b6dcbea0051c868=81750.100000; __s=683BD997-42FE722901BB234E92-52ADB4D; __l=683BD997-42FE722901BB234E92-52ADB4D; _ga=GA1.1.865788991.1748752797; accessAgeDisclaimerPH=1; googtrans=/auto/zh-CN; googtrans=/auto/zh-CN; ua=5088e51afb755e3294a3359f17dd8eee; il=v11msoKzX_h0h258sWpnEAzxOpywRHt3No__oI88GHuIUxNzY0Njk2NzIzOVY2Q1c2d2l2eGp4T19pOW5CVV9JSU1FQ0NGWW01YWlLNnZ5Y251LQ..; cookieConsent=2; bs=e1649232670c3a49db241055d6ccf891; bsdd=e1649232670c3a49db241055d6ccf891; htjf-mobile=3; tj_UUID=ChBNOIxil6REvZRCDWP3pmmCEgwIjYi1vgYQmfiBowEYASIgZTE2NDkyMzI2NzBjM2E0OWRiMjQxMDU1ZDZjY2Y4OTE=; tj_UUID_v2=ChBNOIxil6REvZRCDWP3pmmCEgwIjYi1vgYQmfiBowEYASIgZTE2NDkyMzI2NzBjM2E0OWRiMjQxMDU1ZDZjY2Y4OTE=; _ga_B39RFFWGYY=GS2.1.s1748884900$o2$g1$t1748885526$j58$l0$h0" + # --- 外部导入 Cookie 逻辑开始 --- + raw_cookie_data = '' # 用于暂存获取到的原始 cookie 数据 - # 将 Cookie 字符串解析为字典 - parsed_cookies = {} - for part in cookie_string.split('; '): - if '=' in part: - key, value = part.split('=', 1) # 只在第一个等号处分割,因为值可能包含等号 - parsed_cookies[key.strip()] = value.strip() # strip() 用于去除可能存在的空格 + # 1. 从 extendDict 中尝试获取 'cookie' 字段 + if 'cookie' in self.proxies: # self.proxies 实际上就是 extendDict + raw_cookie_data = self.proxies['cookie'] - self.session.cookies.update(parsed_cookies) - # ================================== + # 2. 如果 extendDict 中有 'json' 字段,从该 URL 获取 JSON 并提取 cookie + if 'json' in self.proxies: + try: + # 注意:这里假设 self.fetch 是一个已有的方法来执行请求 + # 如果没有,你需要替换为 requests.get() 或其他请求方式 + r = requests.get(self.proxies['json'], timeout=10, proxies=self.proxies, headers=self.headers) + r.raise_for_status() # 检查请求是否成功 + if 'cookie' in r.json(): + raw_cookie_data = r.json()['cookie'] + except Exception as e: + print(f"从 JSON URL 获取 Cookie 失败: {e}") + raw_cookie_data = '' # 获取失败则清空 + + # 3. 如果 raw_cookie_data 是一个 URL (http/https开头),则请求该 URL 获取纯文本 Cookie + if isinstance(raw_cookie_data, str) and raw_cookie_data.startswith('http'): + try: + r = requests.get(raw_cookie_data, timeout=10, proxies=self.proxies, headers=self.headers) + r.raise_for_status() + raw_cookie_data = r.text.strip() + except Exception as e: + print(f"从纯文本 URL 获取 Cookie 失败: {e}") + raw_cookie_data = '' + + # 4. 将获取到的原始 Cookie 数据解析并更新到 session 中 + # 如果 raw_cookie_data 仍然为空或 '{}',则不处理 + if raw_cookie_data and raw_cookie_data != '{}': + cookies_to_set = {} + if isinstance(raw_cookie_data, dict): + # 如果直接是字典类型,直接使用 + cookies_to_set = raw_cookie_data + elif isinstance(raw_cookie_data, str): + try: + # 尝试解析为 JSON 字典 (例如 {"name": "value"}) + cookies_to_set = json.loads(raw_cookie_data) + except json.JSONDecodeError: + # 如果不是 JSON,尝试按字符串格式解析 (例如 "name1=value1; name2=value2") + for part in raw_cookie_data.split('; '): + if '=' in part: + key, value = part.split('=', 1) + cookies_to_set[key.strip()] = value.strip() + + if cookies_to_set: + self.session.cookies.update(cookies_to_set) + print("Cookie 已成功加载并更新到会话。") + else: + print("未解析到有效的 Cookie 数据。") + else: + print("未指定外部 Cookie 或 Cookie 数据为空。") + # --- 外部导入 Cookie 逻辑结束 --- pass diff --git a/api.json b/api.json index 9f4707d..9b3be6c 100644 --- a/api.json +++ b/api.json @@ -2240,7 +2240,10 @@ "api": "./PyramidStore/plugin/adult/Phb.py", "searchable": 1, "quickSearch": 1, - "filterable": 1 + "filterable": 1, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/phb_cookie.txt" + } }, { "key": "xhamster",