diff --git a/py/tests/test_鲸鱼APP.py b/py/tests/test_鲸鱼APP.py index 405c6da..ec24065 100644 --- a/py/tests/test_鲸鱼APP.py +++ b/py/tests/test_鲸鱼APP.py @@ -38,3 +38,18 @@ class TestJingyuSpider(unittest.TestCase): self.spider.host = "http://test.com" result = self.spider._api_post("someEndpoint") self.assertEqual(result, payload) + + def test_init_fetches_host_from_site_url(self): + init_encrypted = self.spider._aes_encrypt(json.dumps({"type_list": []})) + + class FakeInitResponse: + status_code = 200 + encoding = "utf-8" + text = "http://example.com" + def json(self): + return {"data": init_encrypted} + + self.spider.fetch = lambda url, **kwargs: FakeInitResponse() + self.spider.post = lambda url, **kwargs: FakeInitResponse() + self.spider.init() + self.assertEqual(self.spider.host, "http://example.com") diff --git a/py/鲸鱼APP.py b/py/鲸鱼APP.py index 5f0de08..73b1239 100644 --- a/py/鲸鱼APP.py +++ b/py/鲸鱼APP.py @@ -29,8 +29,28 @@ class Spider(BaseSpider): def getName(self): return self.name + SITE_URL = "https://jingyu4k-1312635929.cos.ap-nanjing.myqcloud.com/juyu3.json" + def init(self, extend=""): - pass + if self.host: + return + headers = {"User-Agent": self.ua} + try: + rsp = self.fetch(self.SITE_URL, headers=headers, timeout=10, verify=False) + host = rsp.text.strip().rstrip("/") + if not host.startswith("http"): + host = "http://" + host + self.host = host + except Exception as e: + self.log(f"获取host失败: {e}") + raise + try: + data = self._api_post(self.init_endpoint) + if data and data.get("config", {}).get("system_search_verify_status"): + self.search_verify = True + self.init_data = data + except Exception as e: + self.log(f"初始化数据失败: {e}") def _aes_encrypt(self, plaintext): key = AES_KEY.encode("utf-8")