fix: encode cupfox vid in api requests
This commit is contained in:
@@ -328,6 +328,28 @@ class TestCupfoxSpider(unittest.TestCase):
|
|||||||
self.assertEqual(result["parse"], 1)
|
self.assertEqual(result["parse"], 1)
|
||||||
self.assertEqual(result["url"], "https://www.cupfox.ai/play/p77.html")
|
self.assertEqual(result["url"], "https://www.cupfox.ai/play/p77.html")
|
||||||
|
|
||||||
|
def test_player_content_urlencodes_vid_for_api_request(self):
|
||||||
|
play_html = '<script>player_aaaa={"url":"a+b/c==","from":"line","server":"no"};</script>'
|
||||||
|
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):
|
def test_search_content_returns_empty_result_for_blank_keyword(self):
|
||||||
self.assertEqual(self.spider.searchContent("", False, "1"), {"page": 1, "total": 0, "list": []})
|
self.assertEqual(self.spider.searchContent("", False, "1"), {"page": 1, "total": 0, "list": []})
|
||||||
|
|
||||||
|
|||||||
@@ -481,11 +481,12 @@ class Spider(BaseSpider):
|
|||||||
if not vid:
|
if not vid:
|
||||||
raise ValueError("missing player url")
|
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(
|
api = self._request_text(
|
||||||
self.host + "/foxplay/api.php",
|
self.host + "/foxplay/api.php",
|
||||||
method="POST",
|
method="POST",
|
||||||
body="vid=" + quote(vid),
|
body="vid=" + encoded_vid,
|
||||||
headers={
|
headers={
|
||||||
"User-Agent": self.headers["User-Agent"],
|
"User-Agent": self.headers["User-Agent"],
|
||||||
"Referer": muiplayer_url,
|
"Referer": muiplayer_url,
|
||||||
|
|||||||
Reference in New Issue
Block a user