LiuShen revisou este gist . Ir para a revisão
Sem alterações
LiuShen revisou este gist . Ir para a revisão
1 file changed, 250 insertions
worker.js(arquivo criado)
@@ -0,0 +1,250 @@ | |||
1 | + | addEventListener('fetch', event => { | |
2 | + | event.respondWith(handleRequest(event.request)) | |
3 | + | }) | |
4 | + | const specialCases = { | |
5 | + | "*": { | |
6 | + | "Origin": "DELETE", | |
7 | + | "Referer": "DELETE" | |
8 | + | } | |
9 | + | } | |
10 | + | function handleSpecialCases(request) { | |
11 | + | const url = new URL(request.url); | |
12 | + | const rules = specialCases[url.hostname] || specialCases["*"]; | |
13 | + | for (const [key, value] of Object.entries(rules)) { | |
14 | + | switch (value) { | |
15 | + | case "KEEP": | |
16 | + | break; | |
17 | + | case "DELETE": | |
18 | + | request.headers.delete(key); | |
19 | + | break; | |
20 | + | default: | |
21 | + | request.headers.set(key, value); | |
22 | + | break; | |
23 | + | } | |
24 | + | } | |
25 | + | } | |
26 | + | async function handleRequest(request) { | |
27 | + | const url = new URL(request.url); | |
28 | + | if (url.pathname === "/") { | |
29 | + | return new Response(`<!DOCTYPE html> | |
30 | + | <html lang="zh-CN"> | |
31 | + | ||
32 | + | <head> | |
33 | + | <meta charset="UTF-8"> | |
34 | + | <title>转发服务使用指南</title> | |
35 | + | <style> | |
36 | + | body { | |
37 | + | font-family: Arial, sans-serif; | |
38 | + | margin: 0; | |
39 | + | padding: 0; | |
40 | + | background: #f4f4f4; | |
41 | + | } | |
42 | + | ||
43 | + | .container { | |
44 | + | width: 80%; | |
45 | + | margin: auto; | |
46 | + | overflow: hidden; | |
47 | + | margin-bottom: 100px; | |
48 | + | } | |
49 | + | ||
50 | + | header { | |
51 | + | background: #333; | |
52 | + | color: #fff; | |
53 | + | padding: 20px; | |
54 | + | text-align: center; | |
55 | + | } | |
56 | + | ||
57 | + | section { | |
58 | + | padding: 20px; | |
59 | + | margin-bottom: 20px; | |
60 | + | } | |
61 | + | ||
62 | + | .example { | |
63 | + | background: #fff; | |
64 | + | padding: 20px; | |
65 | + | border-radius: 4px; | |
66 | + | margin-bottom: 20px; | |
67 | + | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | |
68 | + | } | |
69 | + | ||
70 | + | h2 { | |
71 | + | color: #333; | |
72 | + | border-bottom: 2px solid #ddd; | |
73 | + | padding-bottom: 10px; | |
74 | + | } | |
75 | + | ||
76 | + | code { | |
77 | + | background: #ddd; | |
78 | + | padding: 2px 6px; | |
79 | + | border-radius: 4px; | |
80 | + | display: inline-block; | |
81 | + | margin: 0 5px; | |
82 | + | } | |
83 | + | ||
84 | + | ul, ol { | |
85 | + | padding-left: 20px; | |
86 | + | } | |
87 | + | ||
88 | + | li { | |
89 | + | margin-bottom: 10px; | |
90 | + | } | |
91 | + | ||
92 | + | h3 { | |
93 | + | color: #666; | |
94 | + | } | |
95 | + | ||
96 | + | p { | |
97 | + | line-height: 1.6; | |
98 | + | } | |
99 | + | ||
100 | + | strong { | |
101 | + | color: #333; | |
102 | + | } | |
103 | + | ||
104 | + | footer { | |
105 | + | background: #333; | |
106 | + | color: #fff; | |
107 | + | text-align: center; | |
108 | + | padding: 10px 0; | |
109 | + | position: fixed; | |
110 | + | width: 100%; | |
111 | + | bottom: 0; | |
112 | + | } | |
113 | + | </style> | |
114 | + | </head> | |
115 | + | ||
116 | + | <body> | |
117 | + | <header> | |
118 | + | <h1>转发服务使用指南</h1> | |
119 | + | </header> | |
120 | + | <div class="container"> | |
121 | + | <section> | |
122 | + | <h2>简介</h2> | |
123 | + | <p>本服务是一个轻量级的 https 请求转发代理,可以帮助您绕过某些网络限制,或者在开发过程中模拟 https 请求。该转发接口基于 Cloudflare 构建,以提供快速且安全的服务体验。</p> | |
124 | + | </section> | |
125 | + | <section> | |
126 | + | <h2>服务特点</h2> | |
127 | + | <p>该转发服务具有以下特点:</p> | |
128 | + | <ul> | |
129 | + | <li>支持 https 请求转发,保证数据传输的安全性。</li> | |
130 | + | <li>提供多个转发服务域名,满足不同的使用需求。</li> | |
131 | + | <li>支持一些常用服务的专门转发接口,提供更快速的访问体验。</li> | |
132 | + | <li>免费使用,无需注册或登录,即可直接使用。</li> | |
133 | + | </ul> | |
134 | + | </section> | |
135 | + | <section> | |
136 | + | <h2>公告</h2> | |
137 | + | <p>2024-06-01: 由于服务被不正确利用,原 <code>github.lius.me</code> 域名已被 Chrome 标注为风险网站,现经过封禁对应接口后,更换为全新子域名 <code>https://gh.lius.me</code></p> | |
138 | + | <p>2024-06-11: 由于个人需要,添加docker加速服务 <code>docker.lius.me</code></p> | |
139 | + | </section> | |
140 | + | <section> | |
141 | + | <h2>服务域名</h2> | |
142 | + | <p>我们提供了多个转发服务域名,您可以根据需要选择合适的服务域名:</p> | |
143 | + | <ul> | |
144 | + | <li><strong>通用转发服务:</strong><code>https://lius.me</code></li> | |
145 | + | <li><strong>Gravatar 转发服务:</strong><code>https://gravatar.lius.me</code></li> | |
146 | + | <li><strong>GitHub 转发服务:</strong><code>https://gh.lius.me</code></li> | |
147 | + | <li><strong>Docker 镜像加速服务:</strong><code>https://docker.lius.me</code></li> | |
148 | + | </ul> | |
149 | + | </section> | |
150 | + | <section> | |
151 | + | <h2>如何使用</h2> | |
152 | + | <p>使用转发服务非常简单,只需遵循以下步骤:</p> | |
153 | + | <ol> | |
154 | + | <li>确定您想要访问的目标 URL。</li> | |
155 | + | <li>根据您的需求选择相应的转发服务域名。</li> | |
156 | + | <li>在浏览器地址栏输入我们的转发服务 URL,并在其后附加目标 URL 的完整路径。</li> | |
157 | + | <li>按下回车键,我们的服务将自动将请求转发到目标 URL。</li> | |
158 | + | </ol> | |
159 | + | </section> | |
160 | + | <section> | |
161 | + | <h2>特定域名转发接口</h2> | |
162 | + | <p>我们为一些常用的服务提供了专门的转发接口,以优化访问速度和体验。</p> | |
163 | + | <section class="example"> | |
164 | + | <h3>Gravatar 转发</h3> | |
165 | + | <p>如果您需要访问 Gravatar 的头像服务,可以使用以下转发接口:</p> | |
166 | + | <p><strong>转发服务域名:</strong><code>https://gravatar.lius.me</code></p> | |
167 | + | <p><strong>示例:</strong>要获取用户 <code>someuser</code> 的 Gravatar 头像,访问以下 URL:</p> | |
168 | + | <p><code>https://gravatar.lius.me/avatar/someuser?s=128</code></p> | |
169 | + | </section> | |
170 | + | <section class="example"> | |
171 | + | <h3>GitHub 转发</h3> | |
172 | + | <p>如果您需要访问 GitHub 的 API 或资源,可以使用以下转发接口:</p> | |
173 | + | <p><strong>转发服务域名:</strong><code>https://gh.lius.me</code></p> | |
174 | + | <p><strong>示例:</strong>要访问用户 <code>someuser</code> 的 GitHub 仓库 <code>repo</code>,请访问:</p> | |
175 | + | <p><code>https://gh.lius.me/users/someuser/repos/repo</code></p> | |
176 | + | </section> | |
177 | + | <section class="example"> | |
178 | + | <h3>Docker 镜像加速</h3> | |
179 | + | <p>如果您需要提升国内拉取 Docker 镜像的速度,可以使用以下转发接口:</p> | |
180 | + | <p><strong>转发服务域名:</strong><code>https://docker.lius.me</code></p> | |
181 | + | <p><strong>示例:</strong>要拉取镜像 <code>artalk/artalk-go:latest</code>,请使用以下命令:</p> | |
182 | + | <p><code>docker pull docker.lius.me/artalk/artalk-go:latest</code></p> | |
183 | + | </section> | |
184 | + | </section> | |
185 | + | <section> | |
186 | + | <h2>通用转发服务</h2> | |
187 | + | <p>对于不提供专门转发接口的网站,您可以继续使用我们的通用转发服务。</p> | |
188 | + | <section class="example"> | |
189 | + | <h3>通用转发示例</h3> | |
190 | + | <p><strong>转发服务域名:</strong><code>https://lius.me</code></p> | |
191 | + | <p><strong>示例:</strong>要访问 <code>https://example.com/api/data</code>,请使用以下 URL:</p> | |
192 | + | <p><code>https://lius.me/https://example.com/api/data</code></p> | |
193 | + | </section> | |
194 | + | </section> | |
195 | + | <section> | |
196 | + | <h2>注意事项</h2> | |
197 | + | <p>在使用转发服务时,请仔细阅读并遵守以下条款:</p> | |
198 | + | <h3>遵守使用条款</h3> | |
199 | + | <p>您必须遵守目标网站的使用条款和条件。本服务仅作为请求转发的中介,并不对目标网站的内容或服务负责。</p> | |
200 | + | <h3>隐私和数据安全</h3> | |
201 | + | <p>保护您的个人隐私和数据安全至关重要。请不要通过本服务发送任何敏感或个人身份信息,除非您已经确认目标网站具有足够的安全措施。</p> | |
202 | + | <h3>版权和知识产权</h3> | |
203 | + | <p>您应确保在使用本服务转发内容时,不侵犯任何第三方的版权或知识产权。对于因违反版权或知识产权法律而导致的任何争议或法律责任,您应自行承担。</p> | |
204 | + | <h3>服务限制</h3> | |
205 | + | <p>本服务有可能会限制请求的数量、频率或大小。请合理使用服务,避免对服务或目标网站造成不必要的负担。</p> | |
206 | + | <h3>免责声明</h3> | |
207 | + | <p>本服务提供“按原样”的转发服务,不提供任何形式的保证。我们不对通过本服务转发的内容的准确性、可靠性或质量负责,也不对因使用本服务而可能遭受的任何损失或损害承担责任。</p> | |
208 | + | <h3>服务变更和中断</h3> | |
209 | + | <p>我们保留随时修改、更新或中断服务的权利,无需事先通知。我们不承担因服务变更或中断而造成的任何责任。</p> | |
210 | + | <h3>用户行为</h3> | |
211 | + | <p>您应确保在使用服务时遵守所有适用的法律和规定,不进行任何非法活动或恶意行为,包括但不限于网络攻击、数据爬取或任何形式的网络欺诈。</p> | |
212 | + | </section> | |
213 | + | <section> | |
214 | + | <h2>免责声明</h2> | |
215 | + | <p><strong>免责声明:</strong></p> | |
216 | + | <p>· 使用本转发服务时,您应自行承担风险。我们不保证服务的及时性、安全性、可用性或准确性。对于因使用或无法使用本服务而造成的任何直接、间接、特殊或后果性损害,我们不承担任何责任。</p> | |
217 | + | <p>· 我们不对通过本服务转发的内容承担责任,包括但不限于版权、商标或其他知识产权问题。您应确保您有权转发目标 URL 的内容,并且遵守所有适用的法律和规定。</p> | |
218 | + | <p>· 我们保留随时修改或中断服务的权利,无需事先通知。本服务不提供任何形式的保证或条件,无论是明示的还是暗示的。</p> | |
219 | + | <p>· 该服务不收取任何费用,使用开源代码创建,如果本服务侵犯了任何您的权利以及现有条款,请联系:01@liushen.fun,我们将立刻关闭该服务。</p> | |
220 | + | </section> | |
221 | + | </div> | |
222 | + | <footer> | |
223 | + | <p>© 2024 转发服务. 保留所有权利.</p> | |
224 | + | <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script> | |
225 | + | <span id="busuanzi_container_site_pv">本站总访问量<span id="busuanzi_value_site_pv"></span>次</span><span id="busuanzi_container_site_uv"> | 本站访客数<span id="busuanzi_value_site_uv"></span>人次</span> | |
226 | + | </footer> | |
227 | + | </body> | |
228 | + | ||
229 | + | </html> | |
230 | + | `,{ | |
231 | + | headers: { | |
232 | + | 'content-type': 'text/html;charset=UTF-8', | |
233 | + | }, | |
234 | + | status: 200 // 确保状态码是200 | |
235 | + | }); | |
236 | + | }; | |
237 | + | const actualUrlStr = url.pathname.replace("/", "") + url.search + url.hash; | |
238 | + | const actualUrl = new URL(actualUrlStr); | |
239 | + | const modifiedRequest = new Request(actualUrl, { | |
240 | + | headers: request.headers, | |
241 | + | method: request.method, | |
242 | + | body: request.body, | |
243 | + | redirect: 'follow' | |
244 | + | }); | |
245 | + | handleSpecialCases(modifiedRequest); | |
246 | + | const response = await fetch(modifiedRequest); | |
247 | + | const modifiedResponse = new Response(response.body, response); | |
248 | + | modifiedResponse.headers.set('Access-Control-Allow-Origin', '*'); | |
249 | + | return modifiedResponse; | |
250 | + | } |
Próximo
Anterior