mirror of
https://github.com/CHERWING/CHERWIN_SCRIPTS.git
synced 2024-11-22 09:04:11 +08:00
利用Cloudflare Workers代理999域名
This commit is contained in:
parent
1e0b01c75e
commit
646c422a36
58
Cloudflare Workers Proxy/999域名反代.js
Normal file
58
Cloudflare Workers Proxy/999域名反代.js
Normal file
@ -0,0 +1,58 @@
|
||||
addEventListener('fetch', event => {
|
||||
event.respondWith(handleRequest(event.request));
|
||||
});
|
||||
|
||||
async function handleRequest(request) {
|
||||
const url = new URL(request.url);
|
||||
const targetUrl = new URL('https://mc.999.com.cn' + url.pathname + url.search);
|
||||
|
||||
// 创建新 Headers 对象,排除以 'cf-' 开头的请求头
|
||||
let newHeaders = new Headers();
|
||||
for (let pair of request.headers.entries()) {
|
||||
if (!pair[0].startsWith('cf-')) {
|
||||
newHeaders.append(pair[0], pair[1]);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建一个新的请求以访问目标 URL
|
||||
const modifiedRequest = new Request(targetUrl, {
|
||||
headers: newHeaders,
|
||||
method: request.method,
|
||||
body: request.body,
|
||||
redirect: 'manual'
|
||||
});
|
||||
|
||||
try {
|
||||
const response = await fetch(modifiedRequest);
|
||||
let modifiedResponse;
|
||||
|
||||
// 处理重定向
|
||||
if ([301, 302, 303, 307, 308].includes(response.status)) {
|
||||
const location = new URL(response.headers.get('location'));
|
||||
modifiedResponse = new Response(null, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: {
|
||||
'Location': location.href
|
||||
}
|
||||
});
|
||||
} else {
|
||||
modifiedResponse = new Response(response.body, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: response.headers
|
||||
});
|
||||
}
|
||||
|
||||
// 添加 CORS 头部,允许跨域访问
|
||||
modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');
|
||||
modifiedResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
|
||||
modifiedResponse.headers.set('Access-Control-Allow-Headers', '*');
|
||||
|
||||
return modifiedResponse;
|
||||
} catch (error) {
|
||||
return new Response('无法访问目标地址: ' + error.message, {
|
||||
status: 500
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user