Spaces:
jiome
/
Sleeping

File size: 3,651 Bytes
655ca0f
a2eb1d6
 
 
655ca0f
a2eb1d6
 
 
 
 
 
 
0989a67
 
 
 
 
 
 
 
 
fc7fbb1
0989a67
 
 
 
 
 
 
 
 
 
 
 
 
a2eb1d6
 
 
 
 
 
 
 
 
 
 
 
0989a67
 
 
 
 
 
 
 
 
 
7b059bf
0989a67
 
 
a2eb1d6
 
 
 
 
 
 
 
 
 
655ca0f
a2eb1d6
 
 
 
 
 
 
 
 
 
655ca0f
a2eb1d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
655ca0f
a2eb1d6
 
 
 
655ca0f
 
a2eb1d6
 
 
 
655ca0f
a2eb1d6
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

// 引入 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}`);
});