匹配范围
*://www.nowcoder.com/*nowcoder-hot-search牛客热搜榜 用途 读取牛客热搜榜,返回热搜排名、标题、热度和条目 ID。 执行前提 先打开 https://www.nowcoder.com/,再在当前标签页执行。热搜接口公开可访问,通常无需登录;接口会设置站点 Cookie,脚本使用浏览器 credentials: "include" 发送请求。若站点返回验证、限流、空结果或接口结构变化,脚本会直接报错…
*://www.nowcoder.com/*dom.read1const rawParams = params && typeof params === "object" ? params : {};2 3function integerParam(name, fallback, min, max) {4 const raw = rawParams[name];5 const value = raw === undefined || raw === null || raw === "" ? fallback : Number(raw);6 if (!Number.isInteger(value) || value < min || value > max) {7 throw new Error(`${name} must be an integer between ${min} and ${max}`);8 }9 return value;10}11 12function assertNowcoderPage() {13 if (location.hostname !== "www.nowcoder.com") {14 throw new Error("Open https://www.nowcoder.com/ first, then run this script");15 }16}17 18async function readJson(response) {19 try {20 return await response.json();21 } catch {22 throw new Error("Response is not valid JSON");23 }24}25 26assertNowcoderPage();27const limit = integerParam("limit", 10, 1, 50);28 29const response = await fetch("https://gw-c.nowcoder.com/api/sparta/hot-search/top-hot-pc", {30 headers: { Accept: "application/json" },31 credentials: "include",32});33 34if (!response.ok) {35 throw new Error(`Hot search request failed with HTTP ${response.status}`);36}37 38const payload = await readJson(response);39 40if (payload?.success === false || (payload?.code !== undefined && Number(payload.code) !== 0)) {41 throw new Error(`Hot search request returned error: ${payload?.msg || payload?.code}`);42}43 44const rows = Array.isArray(payload?.data?.result) ? payload.data.result : [];45const result = rows46 .map((item, index) => ({47 rank: index + 1,48 title: String(item?.title ?? "").trim(),49 heat: item?.hotValueFromDolphin ?? null,50 id: String(item?.uuid || item?.id || ""),51 }))52 .filter(item => item.title)53 .slice(0, limit);54 55if (result.length === 0) {56 throw new Error("No hot search data returned");57}58 59return result.map((item, index) => ({ ...item, rank: index + 1 }));