/** * 52监测网论坛页面代理 + 清理 UI 元素 * 职责范围: * 1. 代理论坛页面(带 cookie 转发) * 2. 注入 JS 清理相关帖子、发表新帖、页脚等元素 * * * 维护说明: * - 如需增删清理的元素,修改 injectedScript 中的选择器列表 */ const request = require("superagent"); const FORUM_HOST = "http://bbs.52jiance.cn"; // 注入的清理脚本 — 只保留正文,移除所有论坛 UI const injectedScript = ` `; module.exports.bbs52Proxy = module.exports.bbs52Proxy = async (ctx) => { try { const pathname = ctx.path.replace(/^\/_bbs52/, "") || "/"; const targetUrl = FORUM_HOST + pathname + (ctx.querystring ? "?" + ctx.querystring : ""); const res = await request .get(targetUrl) .set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") .set("Cookie", ctx.get("cookie") || "") .redirects(0) .ok((r) => r.status < 400); const contentType = res.headers["content-type"] || ""; // 仅对 HTML 响应做注入 if (contentType.includes("text/html")) { let html = res.text; // 论坛页面是混淆 JS,没有 ,直接在内容前注入 html = injectedScript + html; ctx.set("Content-Type", "text/html; charset=utf-8"); ctx.body = html; } else { // 非 HTML(图片、CSS 等)直接透传 ctx.set("Content-Type", contentType); ctx.body = res.body; } ctx.status = res.status || 200; } catch (error) { console.error("bbs52 proxy error:", error.message); // 如果代理失败,回退到原始 _bbs52 尝试 ctx.status = 502; ctx.body = "代理请求失败"; } };