搜索
 找回密码
 立即注册

worker/nginx反代Loc,轻松愉悦畅游互联网

魔法巴拉 2023-05-24 15:01 2562
本帖最后由 魔法巴拉 于 2023-6-6 19:59 编辑

首先要感谢https://loc.xiu.ee/thread-1171965-1-1.html
次改良版本也是基于此,没什么技术含量。

研究了下dz的源代码,查看校验逻辑要求Referer参数也一致。

提醒:使用来源不明的非官方反代有被窃取数据的风险,cfworker使用门槛很低,推荐自己搭建!
附上我自己的反代示例: https://loc.xiu.ee
稍作修改即可,顺便完善了手机端的样式:

                               
登录/注册后可看大图

                               
登录/注册后可看大图


---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------

2023-5-25 16:49
1.修复头像
2.修复交易帖显示缺失


完整代码如下

  1. /**
  2. * write by 西柚论坛 https://www.xiubbs.com
  3. */

  4. addEventListener('fetch', event => {
  5.   event.respondWith(handleRequest(event.request));
  6. });

  7. // 准备反代的目的域名
  8. let target_url = "https://hostloc.com";
  9. // 要替换内容的正则表达式
  10. let target_url_reg = /(?<=\/\/).*?hostloc\.com/g;

  11. async function handleRequest(request) {
  12.   let url = new URL(request.url);
  13.   url.hostname = new URL(target_url).hostname;

  14.   // 复制请求对象并更新它的属性
  15.   let headers = new Headers(request.headers);
  16.   headers.set("Referer", target_url);
  17.   headers.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36");

  18.   //处理头像的302跳转,处理编辑帖子之后的报错
  19.   let redirect = "manual";
  20.   if(url.href.indexOf("/uc_server/") > -1){
  21.     redirect = "follow";
  22.   }

  23.   const param = {
  24.     method: request.method,
  25.     headers: headers,
  26.     body: request.body,
  27.     redirect: redirect
  28.   }

  29.   let response = await fetch(url, param);

  30.   // 检查响应头中的内容类型
  31.   const contentType = response.headers.get('content-type');
  32.   if (contentType && contentType.includes('text')) {

  33.     // 如果是文本类型,替换响应主体中的URL
  34.     let responseBody = await response.text();
  35.     responseBody = await handleResBody(request,responseBody);

  36.     // 复制响应对象并更新它的属性
  37.     let headers = await handleResHeader(response);

  38.     return new Response(responseBody, {
  39.       status: response.status,
  40.       statusText: response.statusText,
  41.       headers: headers
  42.     });
  43.   } else {
  44.     // 如果不是文本类型,直接返回响应对象
  45.     return response;
  46.   }
  47. }


  48. async function handleResBody(request, responseBody){
  49.   responseBody = responseBody.replace(target_url_reg, new URL(request.url).hostname);
  50.   responseBody = responseBody.replace("<head>", '<head>\n<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">');
  51.   responseBody = responseBody.replace("</head>", '<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/lifespy/[email protected]/css/responsive.css">\n</head>');
  52.   responseBody = responseBody.replace("</body>", '<script src="//cdn.jsdelivr.net/gh/lifespy/[email protected]/js/polish.js" type="text/javascript"></script>\n</body>');
  53.   
  54.   //自用
  55.   responseBody = responseBody.replace('<li id="mn_N12a7" ><a href="misc.php?mod=ranklist" hidefocus="true" title="Ranklist"  >排行榜<span>Ranklist</span></a></li>', '<li id="mn_N12a7"><a href="misc.php?mod=ranklist" hidefocus="true" title="Ranklist">排行榜<span>Ranklist</span></a></li><li id="mn_N12a7"><a href="https://www.xiubbs.com" hidefocus="true" title="西柚论坛">西柚论坛<span>西柚论坛</span></a></li>');

  56.   return responseBody;
  57. }

  58. async function handleResHeader(resp){
  59.   let headers = new Headers(resp.headers);
  60.   headers.set('Access-Control-Allow-Origin', '*');
  61.   headers.set('Access-Control-Allow-Methods', 'GET');
  62.   headers.set('Access-Control-Allow-Headers', 'Content-Type');
  63.   return headers;
  64. }
复制代码



欢迎大家加入西柚论坛!
随机推荐

22 回复

魔法巴拉
2023-5-24 16:24:18
楼主
再来个nginx版本
  1. server {
  2.     listen 80;
  3.     listen [::]:80;
  4.     server_name loc.xiu.ee;
  5.     #SSL Configuration
  6.     listen 443 ssl;
  7.     listen [::]:443 ssl;
  8.     ssl_certificate /ssl/loc.xiu.ee.crt;
  9.     ssl_certificate_key /ssl/loc.xiu.ee.key;
  10.     ssl_session_timeout 5m;
  11.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  12.     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  13.     ssl_prefer_server_ciphers on;
  14.     if ($scheme = http) {
  15.       return 301 https://$server_name$request_uri;
  16.     }
  17.     # proxy to another site
  18.     location ~/ {
  19.       proxy_pass https://hostloc.com;
  20.       proxy_set_header Host hostloc.com;
  21.       proxy_set_header X-Real-IP $remote_addr;
  22.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  23.       proxy_set_header REMOTE-HOST $remote_addr;
  24.       proxy_set_header referer https://hostloc.com/$request_uri;
  25.       proxy_set_header Accept-Encoding "";
  26.       proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0";
  27.       sub_filter_types *;
  28.       sub_filter '<base href="https://hostloc.com/">' '<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"><link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/lifespy/css-and-js-hub/css/responsive.css" />';
  29.       sub_filter 'hostloc.com' 'loc.xiu.ee';
  30.       sub_filter '</body>' '<script src="//cdn.jsdelivr.net/gh/lifespy/css-and-js-hub/js/polish.js"></script></body>';
  31.       sub_filter_once off;
  32.       set $static_fileEJLfi5A0 0;
  33.       if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
  34.       {
  35.           set $static_fileEJLfi5A0 1;
  36.           expires 12h;
  37.       }
  38.       if ( $static_fileEJLfi5A0 = 0 )
  39.       {
  40.           add_header Cache-Control no-cache;
  41.       }
  42.     }
  43. }
复制代码
欢迎大家加入西柚论坛!
hitok
2023-5-24 22:26:10
不错不错,从别人的反代loc站看到你在loc上面这个帖子,然后好奇输入xiu.ee来到这个论坛,然后又看到这个教程,回头自己搭个
admin
2023-5-24 23:18:45
hitok 发表于 2023-5-24 22:26
不错不错,从别人的反代loc站看到你在loc上面这个帖子,然后好奇输入xiu.ee来到这个论坛,然后又看到这个教 ...

哈哈,这就是缘分呀,希望老铁多多支持论坛
欢迎大家来到西柚社区!
hitok
2023-5-25 00:19:19
那个响应式布局设计是不是适用所以网站,还是只是discuz
hitok
2023-5-25 00:25:16
admin 发表于 2023-5-24 23:18
哈哈,这就是缘分呀,希望老铁多多支持论坛

这个论坛也感觉有不少好东西,不过提个建议,帖子列表没有页码,手机下拉自动加载下一页,可是我进入了某个帖子,按返回帖子列表又会回到最上面那几个帖子,想看下一页又要等重新加载,是不是可以加回手动页码选择,像反代这个loc也是可以自动加载下一页和选择页码的
admin
2023-5-25 00:42:52
hitok 发表于 2023-5-25 00:25
这个论坛也感觉有不少好东西,不过提个建议,帖子列表没有页码,手机下拉自动加载下一页,可是我进入了某 ...

有道理,我来修改下
欢迎大家来到西柚社区!
魔法巴拉
2023-5-25 01:30:19
楼主
hitok 发表于 2023-5-25 00:25
这个论坛也感觉有不少好东西,不过提个建议,帖子列表没有页码,手机下拉自动加载下一页,可是我进入了某 ...

已经改好了,敬请体验
欢迎大家加入西柚论坛!
auto8624
2023-5-25 12:58:57
有bug
https://hostloc.com/thread-1165420-1-1.html
进去点购买显示空白,论坛其它的反代就没问题


                               
登录/注册后可看大图
admin
2023-5-25 16:14:28
hitok 发表于 2023-5-25 00:19
那个响应式布局设计是不是适用所以网站,还是只是discuz

响应式布局这个是针对dz的,样式都得细微调整
欢迎大家来到西柚社区!
admin
2023-5-25 16:14:45
auto8624 发表于 2023-5-25 12:58
有bug
https://hostloc.com/thread-1165420-1-1.html
进去点购买显示空白,论坛其它的反代就没问题

待我来修一修
欢迎大家来到西柚社区!
bindos
2023-5-25 18:57:31
厉害,可以轻松访问了
魔法巴拉
2023-6-5 16:39:01
楼主
手动前排
www
2023-6-5 20:24:09
我也搭一个去
php
2023-8-24 20:30:14
老大 用worker反代Loc
里面怎么加入 替换 内容
我想把 反代网站里面  部分 代码 替换成 自己的。
魔法巴拉
2023-8-24 22:45:28
楼主
php 发表于 2023-8-24 20:30
老大 用worker反代Loc
里面怎么加入 替换 内容
我想把 反代网站里面  部分 代码 替换成 自己的。 ...

有注释的部分就是用来替换的了,照猫画虎就行
欢迎大家加入西柚论坛!
ldj888
2023-8-24 23:56:40
内心想要什么总会有想要的出现,感谢大佬的教程,好论坛必须顶起
ace
2023-8-25 00:25:03
你好,大佬请问能不能更新一下,把异地登陆弹窗去掉啊?
魔法巴拉
2023-8-25 09:34:24
楼主
ldj888 发表于 2023-8-24 23:56
内心想要什么总会有想要的出现,感谢大佬的教程,好论坛必须顶起

感谢支持和认可!
欢迎大家加入西柚论坛!
魔法巴拉
2023-8-25 09:34:45
楼主
ace 发表于 2023-8-25 00:25
你好,大佬请问能不能更新一下,把异地登陆弹窗去掉啊?

去除这个目的是什么呢?理论上来说是可以去除的
欢迎大家加入西柚论坛!
12下一页
游客
高级模式
返回顶部