全球主机交流论坛

标题: worker反代Loc [打印本页]

作者: 鸡佬    时间: 2023-5-22 10:04
标题: worker反代Loc
正常显示图片,登录,回复,查看

  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 = 'hostloc.com';
  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/
作者: 52Fancy    时间: 2023-5-22 13:14
支持一下
作者: ghosting    时间: 2023-5-22 13:20
怎么用。。。
作者: 万古神帝    时间: 2023-5-22 13:42
我要像你这样懂那么多技术,就好了.
作者: xuhao0080    时间: 2023-5-22 13:50
自己nginx反代搞了一个带PWA的 把header标签替换加了几行关于menifest.json的直接手机“app”走起
作者: woniu    时间: 2023-5-22 13:53
用的人多 cf的ip直接被论坛拉黑了 一样用不了
作者: WwzwW    时间: 2023-5-22 14:40
本帖最后由 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 = "hostloc.com";

  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. }
复制代码


作者: kldeam    时间: 2023-5-22 14:48
发帖和搜索正常吗
作者: WwzwW    时间: 2023-5-22 14:57
本帖最后由 WwzwW 于 2023-5-22 14:59 编辑

而且,你的fetch连body都没传过去,怎么登录、发帖的?

  1. let response = await fetch(targetUrl, {
  2.     method: request.method,
  3.     headers: request.headers,
  4.     body: request.body
  5.   })
复制代码

作者: xuhaoa    时间: 2023-5-22 15:12
WwzwW 发表于 2023-5-22 14:57
而且,你的fetch连body都没传过去,怎么登录、发帖的?

登录可以,发帖好像不行
作者: WwzwW    时间: 2023-5-22 15:37
xuhaoa 发表于 2023-5-22 15:12
登录可以,发帖好像不行

是的
作者: kldeam    时间: 2023-5-22 17:49
投票也不行
作者: 胖虎    时间: 2023-5-22 17:53
我这里worker打开编辑就是一片空白,偶尔能刷出来,排查了下也不是浏览器,网路或者广告插件的问题,有人遇到过吗?
作者: 鸡佬    时间: 2023-5-22 18:45
胖虎 发表于 2023-5-22 17:53
我这里worker打开编辑就是一片空白,偶尔能刷出来,排查了下也不是浏览器,网路或者广告插件的问题,有人遇 ...

用edge能打开,chrome不行,有些js部署了之后同样也无法打开了,需要回滚部署
作者: 大白白    时间: 2023-5-22 18:49
本帖最后由 大白白 于 2023-5-22 18:52 编辑

牛逼啊人手一个
索引导航:http://pony545.github.io/suoyin/
作者: 龙腾宇内    时间: 2023-5-24 09:56
WwzwW 发表于 2023-5-22 14:40
15行那个可以不需要填写自己的反代地址,用这个就行:

楼主的是没问题的,你说没有body,人家的body就包含在request里面,而且你的域名替换也有问题,js你这样写不会替换所有数据,只有正则才能实现替换所有
作者: WwzwW    时间: 2023-5-24 12:14
龙腾宇内 发表于 2023-5-24 09:56
楼主的是没问题的,你说没有body,人家的body就包含在request里面,而且你的域名替换也有问题,js你这样 ...

噢噢,
作者: 爱生活爱拉登    时间: 2023-5-24 12:22
worker地址多少来着?




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4