全球主机交流论坛

标题: 域名无北岸非改端口使用国内服务器·jsd全站cdn源码 [打印本页]

作者: ChenYFan    时间: 2021-7-31 09:14
标题: 域名无北岸非改端口使用国内服务器·jsd全站cdn源码
本帖最后由 ChenYFan 于 2021-7-31 10:25 编辑

https://github.com/ChenYFan/Blog-On-JSdelivr-SW

昨天的帖子https://hostloc.onozo.cc/thread-873335-1-1.html

修复了进入时反复横跳、#号问题

演示站点 https://blog-jsdelivr.cyfan.top

主要文件就两个:

404.html 重定向所有没有安装sw的访问流量
sw.js ServiceWorker注册器,custom路由比较沙雕,可以自行更改

有什么用处呢?其实,这就是一个简单的非北岸域名使用国内服务器例子。用户只要从海外节点【如果是香港cn2之类的会更好】拉取一个html和一个js【总流量最小可以压缩至1kb】,注册完sw之后所有的流量就与海外服务器无关了,全部被sw拦截到国内服务器上,自己的服务器可以使用非标准端口绕开北岸审查,然后用sw拦截。或者用国内的cos或oss,进一步提升访问速度!

sw拦截兼容性好吗?对用户来说,这些都是无感知的,sw相当于一个存在用户浏览器里的服务器,其实现结果与使用服务器无异。不仅可以反代静态,甚至可以反代动态网站,评论和注册功能都没有问题!【当然,用动态网站你不能直接用我的配置,我这份配置写起来极度沙雕】

另一个好处就是原始服务器开销极小。像我这种只用cf提供一个html和一个js,其余全部资源由jsd提供,基本打不死.

与JSProxy有什么区别呢?同样都是用sw,此项目主要特点就是所有流量全部转发到原始服务器,相当于一个特殊版本的jsproxy

那又有什么坏处呢:

1.源站必须允许跨域 - 这是浏览器的限制,没有办法解决,所以你不能任意反代所有网站,并且原服务器必须开启跨域支持
2.源服务器必须用HTTPS - 这是SW的限制
3.SEO极差 - 大部分蜘蛛不支持SW,这样只能爬到404
4.兼容性 - 除了IE,现代化浏览器都支持
作者: 茎肛互撸娃    时间: 2021-7-31 09:20
好像不错的样子
作者: xls    时间: 2021-7-31 09:24
一会试试,谢谢大佬
作者: Minecraft    时间: 2021-7-31 09:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: NoctuG    时间: 2021-7-31 09:52
感谢大佬分享
作者: erno    时间: 2021-7-31 09:54
做个记号
作者: madebi    时间: 2021-7-31 10:25
很好,昨天的看了就是觉得太复杂,能付费伸手吗
作者: ChenYFan    时间: 2021-7-31 10:29
madebi 发表于 2021-7-31 10:25
很好,昨天的看了就是觉得太复杂,能付费伸手吗

一共俩文件还复杂?这是我写过最没有技术含量的东西了
作者: phpsky    时间: 2021-7-31 10:32
使用非标准端口绕开北岸审查   这一步就很难避开
作者: ChenYFan    时间: 2021-7-31 10:35
phpsky 发表于 2021-7-31 10:32
使用非标准端口绕开北岸审查   这一步就很难避开

可以啊,我阿里腾讯服务器改成ssl端口8443至今未拦截
作者: Gome    时间: 2021-7-31 13:18
我刚申请了公网ip,就看见了这个帖子
作者: 滴滴单车    时间: 2021-7-31 13:30
其实都上SW了 还不如直接用jsproxy作者最近新出的freecdn 全站薅CDN算了
作者: ChenYFan    时间: 2021-7-31 13:42
滴滴单车 发表于 2021-7-31 13:30
其实都上SW了 还不如直接用jsproxy作者最近新出的freecdn 全站薅CDN算了

一样的,都是基于sw拦截
作者: tianzi1981    时间: 2021-7-31 14:06
不明觉厉 帮顶
作者: 干货插眼小助手    时间: 2021-7-31 15:31
插个眼,看看能不能学废

作者: 腾讯云6折购    时间: 2021-7-31 17:08
大佬 这怎么用阿?纯静态是要把js引入html吗 还是直接放到根目录就不管了?
作者: ChenYFan    时间: 2021-7-31 17:11
腾讯云6折购 发表于 2021-7-31 17:08
大佬 这怎么用阿?纯静态是要把js引入html吗 还是直接放到根目录就不管了? ...

自行修改sw.js修改拦截域名和源站【需开启跨域支持,CORS头为*】域名,然后把404.html和sw.js丢根目录就行了
作者: 腾讯云6折购    时间: 2021-7-31 17:15
ChenYFan 发表于 2021-7-31 17:11
自行修改sw.js修改拦截域名和源站【需开启跨域支持,CORS头为*】域名,然后把404.html和sw.js丢根目录就 ...

好的 只能加速静态网站吗 动态的行不行
作者: 腾讯云6折购    时间: 2021-7-31 17:17
另外还想问一下 海外的服务器能加速吗
作者: ChenYFan    时间: 2021-7-31 17:19
腾讯云6折购 发表于 2021-7-31 17:15
好的 只能加速静态网站吗 动态的行不行


动态的可以【但你还是要改程序支持CORS】,不过要自行修改sw.js传递cookie。

海外服务器?这个项目的意义是尽量将所有资源都由国内服务器加载,海外服务器在这其中意义不大
作者: 腾讯云6折购    时间: 2021-7-31 17:23
ChenYFan 发表于 2021-7-31 17:19
动态的可以【但你还是要改程序支持CORS】,不过要自行修改sw.js传递cookie。

海外服务器?这个项目的意 ...

好的 谢谢  我说的海外服务器的意思是 海外服务器上面的网站 能不能通过这个拉到国内实现加速
作者: ChenYFan    时间: 2021-7-31 17:25
腾讯云6折购 发表于 2021-7-31 17:23
好的 谢谢  我说的海外服务器的意思是 海外服务器上面的网站 能不能通过这个拉到国内实现加速 ...


你可能理解错了我这个项目的意义这个项目不是反代,用此项目加速的结果还是用户访问到海外服务器,没有任何加速作用。

如果可行的话,用国内的服务器反代海外服务器,然后用此项目直接劫持到国内服务器上,没北岸也可以使用
作者: 腾讯云6折购    时间: 2021-7-31 17:26
还有最后一个问题 不要嫌弃我 大佬。就是非北岸域名修改端口来绕过北岸,确实可以,但是每次都要在后面手动加上端口号挺麻烦的,有什么方法省去后面加端口号的这一步,也可以访问到网站吗?因为我看你的示例网站后面就没有加端口号
作者: fhsa    时间: 2021-7-31 17:28
大佬可以研究下esni和alt-svc绕备
作者: ChenYFan    时间: 2021-7-31 17:29
fhsa 发表于 2021-7-31 17:28
大佬可以研究下esni和alt-svc绕备

esni算了,从草案变成弃婴。

alt-svc没听过,我去了解一下
作者: ChenYFan    时间: 2021-7-31 17:33
本帖最后由 ChenYFan 于 2021-7-31 17:37 编辑
腾讯云6折购 发表于 2021-7-31 17:26
还有最后一个问题 不要嫌弃我 大佬。就是非北岸域名修改端口来绕过北岸,确实可以,但是每次都要在后面手动 ...


欸。。。你可能还是没有理解我这个项目的意思。

blog-jsdelivr.cyfan.top 这个域名托管在githubpage+cf上,所以没有北岸也能使用,不用加端口,这其中只有两个文件:404.html和sw.js

用户访问后,sw.js加载到用户浏览器并安装,ServiceWorker在安装完毕后在用户浏览器后台劫持了所有去blog-jsdelivr.cyfan.top到jsd上,并且通过修改头的方式实现网页展示。

你可以打开开发者工具,看到每一个请求都会复制成两个请求,其中一个请求前面有小齿轮,是劫持到jsd的流量,另一个没有小齿轮的流量是返回给用户的。

总之,blog-jsdelivr.cyfan.top是托管在海外的,但一旦用户安装了sw,所有的流量都是和jsd交互,与海外服务器无关了。

也就是说,如果将blog-jsdelivr.cyfan.top部署到香港CN2小鸡上,那么用户只要与香港小鸡完成两次下载【大小不会超过1KB】,其余所有流量都是和国内鸡联系,而用户毫无知觉,并且所有的js都能正常使用。

最重要的是,即使用户关闭了浏览器,清除了缓存,sw还是会运行在浏览器里,并且用户下一次访问还是会直接从jsd中取得文件
作者: 腾讯云6折购    时间: 2021-7-31 17:40
ChenYFan 发表于 2021-7-31 17:33
欸。。。你可能还是没有理解我这个项目的意思。

blog-jsdelivr.cyfan.top 这个域名托管在githubpage+cf ...

感谢大佬 这下彻底懂了 去折腾了 谢谢
作者: ChenYFan    时间: 2021-7-31 18:05
fhsa 发表于 2021-7-31 17:28
大佬可以研究下esni和alt-svc绕备

alt-svc太骚了。。。但是没有服务器不会很吃亏嘛,而且cfworker似乎不能改alt-svc头。。。
作者: fhsa    时间: 2021-7-31 20:57
ChenYFan 发表于 2021-7-31 18:05
alt-svc太骚了。。。但是没有服务器不会很吃亏嘛,而且cfworker似乎不能改alt-svc头。。。 ...

我也不懂啊,偶然看到的,所以等大佬研究
作者: ChenYFan    时间: 2021-7-31 21:52
fhsa 发表于 2021-7-31 20:57
我也不懂啊,偶然看到的,所以等大佬研究

看了一下alt-svc,兼容性似乎比sw还拉
作者: G.K.D    时间: 2021-7-31 21:55
虽然用不上,但是帮顶~
作者: wqz    时间: 2021-7-31 22:01
看帖发现某些人似乎没理解啊
相当于两个文件实现的类似302的功能(打个比方,实际更类似隐式跳转)
作者: ChenYFan    时间: 2021-7-31 22:09
wqz 发表于 2021-7-31 22:01
看帖发现某些人似乎没理解啊
相当于两个文件实现的类似302的功能(打个比方,实际更类似隐式跳转) ...

差不多,但不是完全正确。也不能说完全是是隐式跳转,更像是存在用户浏览器里的服务器,劫持用户的流量
作者: mfch666    时间: 2021-8-1 17:01
这东西可以尝试下
作者: 小白来了    时间: 2021-8-20 19:14
感谢分享
作者: 猪猪欣    时间: 2021-8-20 20:54
谢谢大佬
作者: 御坂    时间: 2021-8-21 09:48
我想想,用户先访问境外服务器(域名:443),随后把请求全部在 本地转发 到境内服务器绑定域名:非标端口?
作者: 秋天的风    时间: 2021-8-21 12:23
插个眼
作者: 秋刀鱼    时间: 2021-8-21 13:07
ChenYFan 发表于 2021-7-31 10:35
可以啊,我阿里腾讯服务器改成ssl端口8443至今未拦截

流量不大确实可以,当流量到达一定,会出问题的。我就遇到了。




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