From 7b87822e02e3bbc56fdf0a24e5b44cf8deb317fc Mon Sep 17 00:00:00 2001 From: Harold <8866033@gmail.com> Date: Sun, 19 Apr 2026 20:54:17 +0800 Subject: [PATCH] fix: encode cupfox vid in api requests --- py/tests/test_茶杯狐.py | 22 ++++++++++++++++++++++ py/茶杯狐.py | 5 +++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/py/tests/test_茶杯狐.py b/py/tests/test_茶杯狐.py index 39e341b..7f1cadd 100644 --- a/py/tests/test_茶杯狐.py +++ b/py/tests/test_茶杯狐.py @@ -328,6 +328,28 @@ class TestCupfoxSpider(unittest.TestCase): self.assertEqual(result["parse"], 1) self.assertEqual(result["url"], "https://www.cupfox.ai/play/p77.html") + def test_player_content_urlencodes_vid_for_api_request(self): + play_html = '' + calls = [] + + def fake_request(url, method="GET", body=None, headers=None): + calls.append({"url": url, "method": method, "body": body, "headers": headers or {}}) + if "foxplay/api.php" in url: + return { + "status_code": 200, + "text": '{"data":{"url":"https://media.example/video.m3u8","urlmode":0}}', + "headers": {}, + } + raise AssertionError(url) + + self.spider._request_with_firewall = lambda url: play_html + self.spider._request_text = fake_request + result = self.spider.playerContent("线路一", "play/p88", []) + + self.assertEqual(result["parse"], 0) + self.assertEqual(calls[0]["body"], "vid=a%2Bb%2Fc%3D%3D") + self.assertIn("vid=a%2Bb%2Fc%3D%3D", calls[0]["headers"]["Referer"]) + def test_search_content_returns_empty_result_for_blank_keyword(self): self.assertEqual(self.spider.searchContent("", False, "1"), {"page": 1, "total": 0, "list": []}) diff --git a/py/茶杯狐.py b/py/茶杯狐.py index be976b2..8514b50 100644 --- a/py/茶杯狐.py +++ b/py/茶杯狐.py @@ -481,11 +481,12 @@ class Spider(BaseSpider): if not vid: raise ValueError("missing player url") - muiplayer_url = self.host + "/foxplay/muiplayer.php?vid=" + quote(vid) + encoded_vid = quote(vid, safe="") + muiplayer_url = self.host + "/foxplay/muiplayer.php?vid=" + encoded_vid api = self._request_text( self.host + "/foxplay/api.php", method="POST", - body="vid=" + quote(vid), + body="vid=" + encoded_vid, headers={ "User-Agent": self.headers["User-Agent"], "Referer": muiplayer_url,