Update index.js
Browse files
index.js
CHANGED
@@ -1,162 +1,55 @@
|
|
|
|
|
|
|
|
1 |
|
2 |
-
|
3 |
-
const
|
4 |
-
|
5 |
-
const app = express();
|
6 |
-
// 定义全局字符串变量
|
7 |
-
let strValues = '';
|
8 |
-
let strUvalues = '';
|
9 |
-
// 设置端口号
|
10 |
-
const port = 7860;
|
11 |
-
// 从环境变量中获取密码
|
12 |
-
const password = process.env.PASSWORD || '123456' ;
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
// 定义一个空字符串,用于存储新的 Cookie-Values 值
|
17 |
-
let newCookieValues = "";
|
18 |
-
// 用分号分割 Cookie-Values,得到一个键值对的数组
|
19 |
-
let pairs = cookieValues.split(";");
|
20 |
-
// 遍历每个键值对
|
21 |
-
for (let pair of pairs) {
|
22 |
-
// 用第一个等号分割键和值,得到一个数组
|
23 |
-
let parts = pair.split("=");
|
24 |
-
// 取出数组的第一个元素作为键,去除前后空格
|
25 |
-
let key = parts[0].trim();
|
26 |
-
// 把数组的剩余元素用等号连接起来,得到完整的值
|
27 |
-
let value = parts.slice(1).join("=");
|
28 |
-
// 如果键在要保留的键的数组中,就把键值对添加到新的 Cookie-Values 值中,用分号和空格分隔
|
29 |
-
if (keepKeys.includes(key)) {
|
30 |
-
newCookieValues += key + "=" + value + "; ";
|
31 |
-
}
|
32 |
-
}
|
33 |
-
// 去除新的 Cookie-Values 值的最后一个分号和空格
|
34 |
-
newCookieValues = newCookieValues.slice(0, -2);
|
35 |
-
// 返回新的 Cookie-Values 值
|
36 |
-
return newCookieValues;
|
37 |
-
}
|
38 |
-
|
39 |
-
|
40 |
-
// 处理 POST 请求
|
41 |
-
app.post('/SET', (req, res) => {
|
42 |
-
// 获取请求的方法
|
43 |
-
let method = req.method;
|
44 |
-
// 获取 pwd 参数的值
|
45 |
-
let pwd = req.query.pwd;
|
46 |
-
// 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息
|
47 |
-
if (!pwd || pwd !== password) {
|
48 |
-
res.status(401).send('Invalid password');
|
49 |
-
return;
|
50 |
}
|
51 |
-
// 获取请求头中的 set-Values 值
|
52 |
-
//let setValue = req.header('Cookie-Values');
|
53 |
-
|
54 |
-
// 定义一个数组,包含要保留的键
|
55 |
-
let keepKeys = ["_U",
|
56 |
-
"MUID",
|
57 |
-
'KievRPSSecAuth',
|
58 |
-
'cct',
|
59 |
-
'_RwBf',
|
60 |
-
'SRCHHPGUSR',
|
61 |
-
'WLS'];
|
62 |
-
// 定义一个数组,包含要保留的键
|
63 |
-
let keepKeysU = ["_U",
|
64 |
-
"WLS"];
|
65 |
-
// 从请求头中获取 Cookie-Values 字段的值
|
66 |
-
let cookieValues = req.header('Cookie-Values');
|
67 |
-
// 调用函数,传入 Cookie-Values 和要保留的键的数组,得到新的 Cookie-Values 值
|
68 |
-
let setValue = filterCookieValues(cookieValues, keepKeys);
|
69 |
-
let getUValue = filterCookieValues(cookieValues, keepKeysU);
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
// 如果 getUValue 不在 strUvalues 中,将其添加到 strUvalues 中
|
76 |
-
if (!strUvalues.includes(getUValue)) {
|
77 |
-
strUvalues += ';' + getUValue;
|
78 |
-
}
|
79 |
}
|
80 |
-
|
81 |
-
|
82 |
-
} else {
|
83 |
-
// 返回错误信息
|
84 |
-
res.status(400).send('No Cookie-Values in header');
|
85 |
-
}
|
86 |
-
});
|
87 |
|
88 |
-
//
|
89 |
-
|
90 |
-
|
91 |
-
let method = req.method;
|
92 |
-
// 获取 pwd 参数的值
|
93 |
-
let pwd = req.query.pwd;
|
94 |
-
// 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息
|
95 |
-
if (!pwd || pwd !== password) {
|
96 |
-
res.status(401).send('Invalid password');
|
97 |
-
return;
|
98 |
-
}
|
99 |
-
// 将全局变量添加到 JSON 数据中
|
100 |
-
let result = { result: { cookies: strValues } };
|
101 |
-
// 返回 JSON 数据
|
102 |
-
res.json(result);
|
103 |
-
});
|
104 |
|
105 |
-
//
|
106 |
-
|
107 |
-
|
108 |
-
let method = req.method;
|
109 |
-
// 获取 pwd 参数的值
|
110 |
-
let pwd = req.query.pwd;
|
111 |
-
// 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息
|
112 |
-
if (!pwd || pwd !== password) {
|
113 |
-
res.status(401).send('Invalid password');
|
114 |
-
return;
|
115 |
-
}
|
116 |
-
//显示历史值
|
117 |
-
const replacedStr = strUvalues.replace(/;/g, "<br>");
|
118 |
-
|
119 |
-
// 清除全局变量的值
|
120 |
-
strValues = '';
|
121 |
-
strUvalues = '';
|
122 |
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
});
|
129 |
|
|
|
|
|
|
|
130 |
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
res.
|
140 |
-
|
|
|
|
|
|
|
141 |
}
|
142 |
-
|
143 |
-
//显示历史值
|
144 |
-
const replacedStr = strUvalues.replace(/;/g, "<br>");
|
145 |
-
|
146 |
-
// 返回成功信息
|
147 |
-
res.send('Ukey History:'+ "\n" + replacedStr);
|
148 |
-
|
149 |
-
});
|
150 |
-
|
151 |
-
|
152 |
-
// 处理 / 请求
|
153 |
-
app.all('/', (req, res) => {
|
154 |
-
// 返回提示信息
|
155 |
-
res.send('Please visit /SET /GET or /CLS with ?pwd=xxxxxx');
|
156 |
-
});
|
157 |
-
|
158 |
|
159 |
-
|
160 |
-
app.listen(port, () => {
|
161 |
-
console.log(`Server is running on port ${port}`);
|
162 |
-
});
|
|
|
1 |
+
const fetch = require('node-fetch');
|
2 |
+
const FormData = require('form-data');
|
3 |
+
const sharp = require('sharp');
|
4 |
|
5 |
+
async function onRequest(req, res) {
|
6 |
+
const url = new URL(req.url, `http://${req.headers.host}`);
|
7 |
+
const imageUrl = url.searchParams.get('q');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
+
if (!imageUrl) {
|
10 |
+
return res.status(400).send('');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
+
try {
|
14 |
+
const response = await fetch(imageUrl);
|
15 |
+
if (!response.ok) {
|
16 |
+
throw new Error(`获取图像失败: ${response.statusText}`);
|
|
|
|
|
|
|
|
|
17 |
}
|
18 |
+
const imageBuffer = await response.buffer();
|
19 |
+
console.log('原始图像大小:', imageBuffer.byteLength);
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
+
// 使用 sharp 库来调整图像大小
|
22 |
+
const resizedImageBuffer = await sharp(imageBuffer).resize(40).toBuffer();
|
23 |
+
console.log('压缩后的图像大小:', resizedImageBuffer.byteLength);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
|
25 |
+
// 创建一个 FormData 对象并添加压缩后的图像
|
26 |
+
const formData = new FormData();
|
27 |
+
formData.append('file', resizedImageBuffer, { filename: 'compressed.jpg', contentType: 'image/jpeg' });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
+
// 使用提供的API地址和方法上传文件
|
30 |
+
const uploadResponse = await fetch('https://telegra.ph/upload', {
|
31 |
+
method: 'POST',
|
32 |
+
body: formData
|
33 |
+
});
|
|
|
34 |
|
35 |
+
if (!uploadResponse.ok) {
|
36 |
+
throw new Error(`上传图像失败: ${uploadResponse.statusText}`);
|
37 |
+
}
|
38 |
|
39 |
+
const uploadResult = await uploadResponse.json();
|
40 |
+
console.log('上传结果:', uploadResult);
|
41 |
+
const uploadedImageUrl = uploadResult[0].src;
|
42 |
+
|
43 |
+
res.setHeader('Content-Type', 'text/plain');
|
44 |
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
45 |
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
|
46 |
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
47 |
+
res.setHeader('Access-Control-Max-Age', '86400');
|
48 |
+
res.send(uploadedImageUrl);
|
49 |
+
} catch (error) {
|
50 |
+
console.error('压缩图像时出错:', error);
|
51 |
+
res.status(500).send('');
|
52 |
}
|
53 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
+
module.exports = { onRequest };
|
|
|
|
|
|