forked from netptop/siteproxy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cf_www.netptop.com_worker.js
280 lines (253 loc) · 16.1 KB
/
cf_www.netptop.com_worker.js
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
const someHTML = `
<!DOCTYPE html>
<html lang="zh-Hans">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Siteproxy</title>
<style>
body {
display: flex;
justify-content: center;
font-family: sans-serif;
color: #a89e84;
background-color: #fdf6e3;
transition: background-color 0.3s, color 0.3s;
}
body.dark-mode {
color: #dddddd;
background-color: #000000;
}
.container {
width: 80%;
}
h1 {
display: inline-block;
color: #a89e84;
margin: 100px 0 62px 0;
}
.dark-mode h1 {
color: #dddddd;
}
.logo {
display: inline-block;
margin-left: 10px;
fill: #a89e84;
}
.dark-mode .logo svg {
fill: #dddddd;
}
.search-box {
width: 100%;
padding: 10px;
margin-bottom: 40px;
font-size: 18px;
color: #a89e84;
border: 2px solid #a89e84;
background-color: #f5f5f5;
border-radius: 5px;
outline: none;
box-sizing: border-box;
}
.dark-mode .search-box {
color: #ffffff;
border-color: #777777;
background-color: #333333;
}
.dark-mode {
border-color: #777777;
background-color: #333333;
}
.dark-mode {
color: #ffffff;
background-color: #555555;
}
.theme-toggle {
position: fixed;
top: 20px;
right: 20px;
cursor: pointer;
}
h3 {
color: #a89e84;
margin: 20px 0 10px 0;
}
.dark-mode h3 {
color: #dddddd;
}
hr {
border: 1px solid #a89e84;
margin-bottom: 15px;
}
.dark-mode hr {
border-color: #777777;
}
.websites {
display: flex;
flex-wrap: wrap;
}
.website {
display: inline-block;
padding: 5px 10px;
margin: 10px 10px 10px 0;
text-decoration: none;
color: #a89e84;
border: 2px solid #a89e84;
background-color: #eee8d5;
border-radius: 3px;
}
.dark-mode .website {
color: #dddddd;
border-color: #777777;
background-color: #333333;
}
.footer {
position: relative;
width: 100%;
margin: 100px 0 38px 0;
text-align: center;
}
a {
color: #a89e84;
text-decoration: none;
}
.dark-mode a {
color: #dddddd;
}
</style>
</head>
<body>
<div class="theme-toggle">
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="32" height="32">
<path
d="M736 624A399.52 399.52 0 0 1 352.48 110.944a416 416 0 1 0 599.616 449.344A397.728 397.728 0 0 1 736 624z"
fill="#000000"></path>
</svg>
</div>
<div class="container">
<h1>Siteproxy</h1>
<div class="logo">
<a href="https://github.com/netptop/siteproxy" target="_blank">
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="32" height="32">
<title>GitHub</title>
<path
d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
</svg>
</a>
</div>
<div class="logo">
<a href="https://t.me/siteproxy" target="_blank">
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="32" height="32">
<title>Telegram</title>
<path
d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z" />
</svg>
</a>
</div>
<div class="websites">
<input type="text" class="search-box" placeholder="输入要访问的网址。。。" />
</div>
<h3>搜索引擎</h3>
<hr>
<div class="websites">
<div><a class="website" href="https://www.google.com" target="_blank">Google IPv4</a></div>
<div><a class="website" href="https://ipv6.google.com" target="_blank">Google IPv6</a></div>
<div><a class="website" href="https://duckduckgo.com" target="_blank">DuckDuckGo</a></div>
<div><a class="website" href="https://www.bing.com" target="_blank">Bing</a></div>
</div>
<h3>常用网站</h3>
<hr>
<div class="websites">
<div><a class="website" href="https://duckduckgo.com/aichat" target="_blank">DuckDuckGo AI Chat</a></div>
<div><a class="website" href="https://zh.wikipedia.org/" target="_blank">Wikipedia</a></div>
<div><a class="website" href="https://www.youtube.com/?gl=US" target="_blank">YouTube</a></div>
<div><a class="website" href="https://x.com/" target="_blank">X / Twitter</a></div>
<div><a class="website" href="https://www.apkmirror.com/" target="_blank">APKMirror</a></div>
<div><a class="website" href="https://web.telegram.org/" target="_blank">Web Telegram</a></div>
</div>
<h3>新闻网站</h3>
<hr>
<div class="websites">
<div><a class="website" href="https://www.voachinese.com/" target="_blank">美国之音</a></div>
<div><a class="website" href="https://cn.nytimes.com/" target="_blank">纽约时报</a></div>
<div><a class="website" href="https://www.reuters.com/" target="_blank">路透社</a></div>
<div><a class="website" href="https://cn.wsj.com/" target="_blank">华尔街日报</a></div>
<div><a class="website" href="https://www.dw.com/zh/" target="_blank">德国之声</a></div>
<div><a class="website" href="https://news.creaders.net/breaking/" target="_blank">万维读者</a></div>
<div><a class="website" href="https://udn.com/news/breaknews/" target="_blank">聯合新聞網</a></div>
<div><a class="website" href="https://www.rfi.fr/cn/" target="_blank">法国国际广播电台</a></div>
<div><a class="website" href="https://cnnews.chosun.com/" target="_blank">朝鲜日报</a></div>
<div><a class="website" href="https://std.stheadline.com/" target="_blank">星島日報</a></div>
</div>
<h3>海外论坛</h3>
<hr>
<div class="websites">
<div><a class="website" href="https://www.wenxuecity.com/" target="_blank">文学城</a></div>
<div><a class="website" href="https://www.6parknews.com/" target="_blank">留园网</a></div>
<div><a class="website" href="https://www.iask.ca/" target="_blank">加拿大家园</a></div>
</div>
<div class="footer">
<p>本站内容源自互联网, 如有内容侵犯了你的权益, 请联系删除相关内容, 联系邮箱: <a href="mailto:[email protected]">[email protected]</a></p>
<p id="copyright"></p>
</div>
</div>
<script>
const currentYear = new Date().getFullYear();
document.getElementById("copyright").innerHTML = "Copyright 2020-" + currentYear + " <a href='https://github.com/netptop/siteproxy' target='_blank'>siteproxy</a> All Rights Reserved";
</script>
<script>
const searchBox = document.querySelector('.search-box');
const themeToggle = document.querySelector('.theme-toggle');
window.addEventListener('load', () => {
const theme = localStorage.getItem('theme');
if (theme === 'dark-mode') {
document.body.classList.add('dark-mode');
const svg = themeToggle.querySelector('svg');
svg.innerHTML = \`<path d="M511.998465 305.797661c-113.855094 0-206.190059 92.332918-206.190059 206.182896 0 113.888863 92.334965 206.145034 206.190059 206.145034 113.89398 0 206.154243-92.295056 206.154243-206.145034S625.892445 305.797661 511.998465 305.797661L511.998465 305.797661zM511.998465 202.705702c18.992563 0 34.364669-15.371082 34.364669-34.322713L546.363134 99.652628c0-18.9854-15.372106-34.362622-34.364669-34.362622-18.9854 0-34.363645 15.377222-34.363645 34.362622l0 68.730361C477.63482 187.367365 493.013065 202.705702 511.998465 202.705702L511.998465 202.705702zM511.998465 821.216527c-18.9854 0-34.363645 15.415085-34.363645 34.362622l0 68.728314c0 19.024286 15.378246 34.401508 34.363645 34.401508 18.992563 0 34.364669-15.377222 34.364669-34.401508L546.363134 855.579149C546.363134 836.631612 530.990005 821.216527 511.998465 821.216527L511.998465 821.216527zM924.306952 477.618958l-68.728314 0c-18.990516 0-34.367739 15.375176-34.367739 34.361599 0 18.989493 15.377222 34.362622 34.367739 34.362622l68.728314 0c19.024286 0 34.401508-15.373129 34.401508-34.362622C958.70846 492.995157 943.331237 477.618958 924.306952 477.618958L924.306952 477.618958zM202.71133 511.98158c0-18.986423-15.371082-34.361599-34.363645-34.361599l-68.693522 0c-18.948561 0-34.363645 15.375176-34.363645 34.361599 0 18.989493 15.415085 34.362622 34.363645 34.362622l68.732407 0C187.37197 546.344203 202.71133 530.97005 202.71133 511.98158L202.71133 511.98158zM779.289114 293.326629l48.585555-48.583508c13.443174-13.443174 13.443174-35.18536 0-48.585555-13.400195-13.405311-35.18229-13.405311-48.585555 0l-48.626487 48.585555c-13.367449 13.403265-13.367449 35.218106 0 48.583508C744.029052 306.730916 765.810125 306.730916 779.289114 293.326629L779.289114 293.326629zM244.710886 730.633463l-48.586578 48.624441c-13.404288 13.366426-13.404288 35.146475 0 48.585555 13.405311 13.44215 35.149545 13.44215 48.586578 0l48.586578-48.585555c13.404288-13.43908 13.443174-35.218106 0-48.624441C279.89727 717.270107 258.153036 717.270107 244.710886 730.633463L244.710886 730.633463zM779.289114 730.633463c-13.440104-13.364379-35.222199-13.364379-48.626487 0-13.405311 13.366426-13.367449 35.147498 0 48.624441l48.626487 48.585555c13.365402 13.44215 35.146475 13.44215 48.585555 0 13.443174-13.401218 13.443174-35.180244 0-48.585555L779.289114 730.633463 779.289114 730.633463zM244.710886 196.120726c-13.438057-13.405311-35.18229-13.405311-48.586578 0-13.404288 13.403265-13.404288 35.145451 0 48.584532l48.586578 48.584532c13.405311 13.405311 35.187407 13.443174 48.586578 0 13.443174-13.365402 13.404288-35.180244 0-48.584532L244.710886 196.120726 244.710886 196.120726zM244.710886 196.120726" fill="#ffffff"></path>\`;
}
});
themeToggle.addEventListener('click', () => {
document.body.classList.toggle('dark-mode');
const svg = themeToggle.querySelector('svg');
if (document.body.classList.contains('dark-mode')) {
localStorage.setItem('theme', 'dark-mode');
svg.innerHTML = \`<path d="M511.998465 305.797661c-113.855094 0-206.190059 92.332918-206.190059 206.182896 0 113.888863 92.334965 206.145034 206.190059 206.145034 113.89398 0 206.154243-92.295056 206.154243-206.145034S625.892445 305.797661 511.998465 305.797661L511.998465 305.797661zM511.998465 202.705702c18.992563 0 34.364669-15.371082 34.364669-34.322713L546.363134 99.652628c0-18.9854-15.372106-34.362622-34.364669-34.362622-18.9854 0-34.363645 15.377222-34.363645 34.362622l0 68.730361C477.63482 187.367365 493.013065 202.705702 511.998465 202.705702L511.998465 202.705702zM511.998465 821.216527c-18.9854 0-34.363645 15.415085-34.363645 34.362622l0 68.728314c0 19.024286 15.378246 34.401508 34.363645 34.401508 18.992563 0 34.364669-15.377222 34.364669-34.401508L546.363134 855.579149C546.363134 836.631612 530.990005 821.216527 511.998465 821.216527L511.998465 821.216527zM924.306952 477.618958l-68.728314 0c-18.990516 0-34.367739 15.375176-34.367739 34.361599 0 18.989493 15.377222 34.362622 34.367739 34.362622l68.728314 0c19.024286 0 34.401508-15.373129 34.401508-34.362622C958.70846 492.995157 943.331237 477.618958 924.306952 477.618958L924.306952 477.618958zM202.71133 511.98158c0-18.986423-15.371082-34.361599-34.363645-34.361599l-68.693522 0c-18.948561 0-34.363645 15.375176-34.363645 34.361599 0 18.989493 15.415085 34.362622 34.363645 34.362622l68.732407 0C187.37197 546.344203 202.71133 530.97005 202.71133 511.98158L202.71133 511.98158zM779.289114 293.326629l48.585555-48.583508c13.443174-13.443174 13.443174-35.18536 0-48.585555-13.400195-13.405311-35.18229-13.405311-48.585555 0l-48.626487 48.585555c-13.367449 13.403265-13.367449 35.218106 0 48.583508C744.029052 306.730916 765.810125 306.730916 779.289114 293.326629L779.289114 293.326629zM244.710886 730.633463l-48.586578 48.624441c-13.404288 13.366426-13.404288 35.146475 0 48.585555 13.405311 13.44215 35.149545 13.44215 48.586578 0l48.586578-48.585555c13.404288-13.43908 13.443174-35.218106 0-48.624441C279.89727 717.270107 258.153036 717.270107 244.710886 730.633463L244.710886 730.633463zM779.289114 730.633463c-13.440104-13.364379-35.222199-13.364379-48.626487 0-13.405311 13.366426-13.367449 35.147498 0 48.624441l48.626487 48.585555c13.365402 13.44215 35.146475 13.44215 48.585555 0 13.443174-13.401218 13.443174-35.180244 0-48.585555L779.289114 730.633463 779.289114 730.633463zM244.710886 196.120726c-13.438057-13.405311-35.18229-13.405311-48.586578 0-13.404288 13.403265-13.404288 35.145451 0 48.584532l48.586578 48.584532c13.405311 13.405311 35.187407 13.443174 48.586578 0 13.443174-13.365402 13.404288-35.180244 0-48.584532L244.710886 196.120726 244.710886 196.120726zM244.710886 196.120726" fill="#ffffff"></path>\`;
} else {
localStorage.setItem('theme', 'light-mode');
svg.innerHTML = \`<path d="M736 624A399.52 399.52 0 0 1 352.48 110.944a416 416 0 1 0 599.616 449.344A397.728 397.728 0 0 1 736 624z" fill="#000000"></path>\`;
}
});
searchBox.addEventListener('keyup', (event) => {
if (event.key === 'Enter') {
navigate();
}
});
function navigate() {
let inputText = searchBox.value.trim();
if (!inputText.startsWith('http://') && !inputText.startsWith('https://')) {
inputText = 'https://' + inputText;
}
window.open(inputText, '_blank');
}
</script>
</body>
</html>
`
/**
* rawHtmlResponse delievers a response with HTML inputted directly
* into the worker script
* @param {string} html
*/
async function rawHtmlResponse(html) {
const init = {
headers: {
'content-type': 'text/html;charset=UTF-8',
},
};
return new Response(html, init);
}
addEventListener('fetch', event => {
const { url } = event.request;
return event.respondWith(rawHtmlResponse(someHTML));
})