// 引入 express 模块 const express = require('express'); // 创建 express 应用 const app = express(); // 定义全局字符串变量 let strValues = ''; // 设置端口号 const port = 7860; // 从环境变量中获取密码 const password = process.env.PASSWORD || '123456' ; // 定义一个函数,接受 Cookie-Values 和要保留的键的数组作为参数 function filterCookieValues(cookieValues, keepKeys) { // 定义一个空字符串,用于存储新的 Cookie-Values 值 let newCookieValues = ""; // 用分号分割 Cookie-Values,得到一个键值对的数组 let pairs = cookieValues.split(";"); // 遍历每个键值对 for (let pair of pairs) { // 用等号分割键和值,得到一个长度为 2 的数组 let [key, value] = pair.split("=", 2); // 去除键的前后空格 key = key.trim(); // 如果键在要保留的键的数组中,就把键值对添加到新的 Cookie-Values 值中,用分号和空格分隔 if (keepKeys.includes(key)) { newCookieValues += key + "=" + value + "; "; } } // 去除新的 Cookie-Values 值的最后一个分号和空格 newCookieValues = newCookieValues.slice(0, -2); // 返回新的 Cookie-Values 值 return newCookieValues; } // 处理 POST 请求 app.post('/SET', (req, res) => { // 获取请求的方法 let method = req.method; // 获取 pwd 参数的值 let pwd = req.query.pwd; // 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息 if (!pwd || pwd !== password) { res.status(401).send('Invalid password'); return; } // 获取请求头中的 set-Values 值 //let setValue = req.header('Cookie-Values'); // 定义一个数组,包含要保留的键 let keepKeys = ["_U", "MUID", 'KievRPSSecAuth', 'cct', '_RwBf', 'SRCHHPGUSR']; // 从请求头中获取 Cookie-Values 字段的值 let cookieValues = req.header('Cookie-Values'); // 调用函数,传入 Cookie-Values 和要保留的键的数组,得到新的 Cookie-Values 值 let setValue = filterCookieValues(cookieValues, keepKeys); // 如果有值,就存入全局变量 if (setValue) { strValues = setValue; // 返回成功信息 res.send('Set value successfully'); } else { // 返回错误信息 res.status(400).send('No Cookie-Values in header'); } }); // 处理 GET 请求 app.all('/GET', (req, res) => { // 获取请求的方法 let method = req.method; // 获取 pwd 参数的值 let pwd = req.query.pwd; // 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息 if (!pwd || pwd !== password) { res.status(401).send('Invalid password'); return; } // 将全局变量添加到 JSON 数据中 let result = { result: { cookies: strValues } }; // 返回 JSON 数据 res.json(result); }); // 处理 CLS 请求 app.all('/CLS', (req, res) => { // 获取请求的方法 let method = req.method; // 获取 pwd 参数的值 let pwd = req.query.pwd; // 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息 if (!pwd || pwd !== password) { res.status(401).send('Invalid password'); return; } // 清除全局变量的值 strValues = ''; // 返回成功信息 res.send('Clear value successfully'); }); // 处理 / 请求 app.all('/', (req, res) => { // 返回提示信息 res.send('Please visit /SET /GET or /CLS with ?pwd=xxxxxx'); }); // 监听端口 app.listen(port, () => { console.log(`Server is running on port ${port}`); });