全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 3796|回复: 17
打印 上一主题 下一主题

worker反代Loc

[复制链接]
跳转到指定楼层
1#
发表于 2023-5-22 10:04:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
正常显示图片,登录,回复,查看

  1. addEventListener('fetch', event => {
  2.   event.respondWith(handleRequest(event.request));
  3. });

  4. async function handleRequest(request) {
  5.   let url = new URL(request.url);
  6.   url.hostname = 'sunk.eu.org';
  7.   let response = await fetch(url, request);

  8.   // 检查响应头中的内容类型
  9.   const contentType = response.headers.get('content-type');
  10.   if (contentType && contentType.includes('text')) {
  11.     // 如果是文本类型,替换响应主体中的URL
  12.     let responseBody = await response.text();
  13.     responseBody = responseBody.replace(/hostloc\.com/g, 'restless-shape-9e4f.你的.workers.dev');

  14.     // 复制响应对象并更新它的属性
  15.     let headers = new Headers(response.headers);
  16.     headers.set('Access-Control-Allow-Origin', '*');
  17.     headers.set('Access-Control-Allow-Methods', 'GET');
  18.     headers.set('Access-Control-Allow-Headers', 'Content-Type');

  19.     return new Response(responseBody, {
  20.       status: response.status,
  21.       statusText: response.statusText,
  22.       headers: headers
  23.     });
  24.   } else {
  25.     // 如果不是文本类型,直接返回响应对象
  26.     return response;
  27.   }
  28. }
复制代码

https://pastebin.ubuntu.com/p/R6xWqs6Zcs/
推荐
发表于 2023-5-22 14:40:33 | 只看该作者
本帖最后由 WwzwW 于 2023-5-24 12:20 编辑

15行那个可以不需要填写自己的反代地址,用这个就行
  1. new URL(request.url).hostname
复制代码


甚至可以更通用的反代,完整代码
  1. addEventListener('fetch', event => {
  2.   event.respondWith(handleRequest(event.request));
  3. });

  4. // 准备反代的目的域名
  5. let target_url = "sunk.eu.org";

  6. async function handleRequest(request) {
  7.   let url = new URL(request.url);
  8.   url.hostname = target_url;
  9.   let response = await fetch(url, {
  10.     method: request.method,
  11.     headers: request.headers,
  12.     body: request.body
  13.   });

  14.   // 检查响应头中的内容类型
  15.   const contentType = response.headers.get('content-type');
  16.   if (contentType && contentType.includes('text')) {
  17.     // 如果是文本类型,替换响应主体中的URL
  18.     let responseBody = await response.text();
  19.    
  20.     responseBody = responseBody.replace(/hostloc\.com/g, new URL(request.url).hostname);

  21.     // 复制响应对象并更新它的属性
  22.     let headers = new Headers(response.headers);
  23.     headers.set('Access-Control-Allow-Origin', '*');
  24.     headers.set('Access-Control-Allow-Methods', 'GET');
  25.     headers.set('Access-Control-Allow-Headers', 'Content-Type');

  26.     return new Response(responseBody, {
  27.       status: response.status,
  28.       statusText: response.statusText,
  29.       headers: headers
  30.     });
  31.   } else {
  32.     // 如果不是文本类型,直接返回响应对象
  33.     return response;
  34.   }
  35. }
复制代码

18#
发表于 2023-5-24 12:22:28 | 只看该作者
worker地址多少来着?
17#
发表于 2023-5-24 12:14:37 | 只看该作者
龙腾宇内 发表于 2023-5-24 09:56
楼主的是没问题的,你说没有body,人家的body就包含在request里面,而且你的域名替换也有问题,js你这样 ...

噢噢,
16#
发表于 2023-5-24 09:56:39 | 只看该作者
WwzwW 发表于 2023-5-22 14:40
15行那个可以不需要填写自己的反代地址,用这个就行:

楼主的是没问题的,你说没有body,人家的body就包含在request里面,而且你的域名替换也有问题,js你这样写不会替换所有数据,只有正则才能实现替换所有
15#
发表于 2023-5-22 18:49:41 | 只看该作者
本帖最后由 大白白 于 2023-5-22 18:52 编辑

牛逼啊人手一个
索引导航:http://pony545.github.io/suoyin/
14#
 楼主| 发表于 2023-5-22 18:45:07 | 只看该作者
胖虎 发表于 2023-5-22 17:53
我这里worker打开编辑就是一片空白,偶尔能刷出来,排查了下也不是浏览器,网路或者广告插件的问题,有人遇 ...

用edge能打开,chrome不行,有些js部署了之后同样也无法打开了,需要回滚部署
13#
发表于 2023-5-22 17:53:16 | 只看该作者
我这里worker打开编辑就是一片空白,偶尔能刷出来,排查了下也不是浏览器,网路或者广告插件的问题,有人遇到过吗?
12#
发表于 2023-5-22 17:49:18 来自手机 | 只看该作者
投票也不行
11#
发表于 2023-5-22 15:37:23 | 只看该作者
xuhaoa 发表于 2023-5-22 15:12
登录可以,发帖好像不行

是的
10#
发表于 2023-5-22 15:12:50 来自手机 | 只看该作者
WwzwW 发表于 2023-5-22 14:57
而且,你的fetch连body都没传过去,怎么登录、发帖的?

登录可以,发帖好像不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-10-31 07:41 , Processed in 0.065394 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表