Spaces:
jiome
/
Sleeping

chatyou commited on
Commit
6933ad0
·
verified ·
1 Parent(s): b8472b1

Update index.js

Browse files
Files changed (1) hide show
  1. index.js +43 -150
index.js CHANGED
@@ -1,162 +1,55 @@
 
 
 
1
 
2
- // 引入 express 模块
3
- const express = require('express');
4
- // 创建 express 应用
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
- // 定义一个函数,接受 Cookie-Values 和要保留的键的数组作为参数
15
- function filterCookieValues(cookieValues, keepKeys) {
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
- if (setValue) {
73
- strValues = setValue;
74
- if (getUValue){
75
- // 如果 getUValue 不在 strUvalues 中,将其添加到 strUvalues 中
76
- if (!strUvalues.includes(getUValue)) {
77
- strUvalues += ';' + getUValue;
78
- }
79
  }
80
- // 返回成功信息
81
- res.send('Set value successfully');
82
- } else {
83
- // 返回错误信息
84
- res.status(400).send('No Cookie-Values in header');
85
- }
86
- });
87
 
88
- // 处理 GET 请求
89
- app.all('/GET', (req, res) => {
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
- // 处理 CLS 请求
106
- app.all('/CLS', (req, res) => {
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
- res.send('Clear value successfully'+ "\n" + replacedStr);
125
- // 返回 JSON 数据
126
- //res.json(jsonString);
127
-
128
- });
129
 
 
 
 
130
 
131
- // 处理 HisU 请求
132
- app.all('/HisU', (req, res) => {
133
- // 获取请求的方法
134
- let method = req.method;
135
- // 获取 pwd 参数的值
136
- let pwd = req.query.pwd;
137
- // 如果没有 pwd 参数,或者 pwd 参数的值不等于密码变量的值,返回错误信息
138
- if (!pwd || pwd !== password) {
139
- res.status(401).send('Invalid password');
140
- return;
 
 
 
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 };