搜索前请完成人机验证
+diff --git a/packages/adapters/src/sites/challenge.test.ts b/packages/adapters/src/sites/challenge.test.ts index 537772e9..364435f3 100644 --- a/packages/adapters/src/sites/challenge.test.ts +++ b/packages/adapters/src/sites/challenge.test.ts @@ -1,5 +1,14 @@ +import { readFileSync } from "node:fs"; import { describe, expect, it } from "vitest"; -import { challengeRuleOfHtml, classifyChallengePage, detectChallenge } from "./challenge.ts"; +import { + CHALLENGE_OUTCOME_HEADER, + CHALLENGE_PEEK_BYTES, + challengeRuleOfHtml, + challengeRuleOfUnrecognizedPage, + classifyChallengePage, + detectChallenge, + isPageRequest, +} from "./challenge.ts"; import { siteFetch } from "./http.ts"; import { createSiteRateLimiter } from "./rate-limit.ts"; import { SiteError } from "./types.ts"; @@ -114,3 +123,145 @@ describe("classifyChallengePage", () => { ); }); }); + +// ── 200 状态的挑战页 / 人机验证门页(搜索页单独加盾、间歇触发)── + +const fixture = (rel: string) => readFileSync(new URL(rel, import.meta.url), "utf8"); +/** 观众真实搜索页(脱敏、删减到 4 行,`