nnt 大佬有话说 :
【科普】北岸是怎么检测的?绕开北岸用国内服务器?
本帖最后由 nnt 于 2021-9-29 16:31 编辑
很久没发帖了,无聊来水水贴,纯手敲,欢迎回复讨论~
原以为很多MJJ应该都清楚北岸相关的东西,应该不用再多说啥,没想到平时还是会有很多MJJ不清楚
首先北岸是针对在中国大陆地区开展网络活动的网站
网站假设在 中国香港、中国台湾 的服务器上不需要北岸
1、其次北岸检测的原理是啥?为什么我解析到阿里云/腾讯云的小鸡上过一会儿就被屏蔽了?
首先是HOST头判断,说到这个就得说明HOST头的用处了。
我们知道,一台服务器可以部署多个网站、而一个网站也可以架设在多个服务器上
而我们发送的数据包通常是只发送到一个服务器上的
那么服务器上的web应用如Nginx需要判断这个数据包到底是属于哪个网站该接受的包
那么就需要去读取HOST头,已确定对应的域名然后执行对应的操作
而云服务商们就可以在网关处监听80端口的流量,并读取HOST头然后查询该域名是否北岸
若未北岸,则此请求包则会被拦截,并返回一个调转响应包(屏蔽页面)
而我们知道,HTTPS由于是加密后的数据,这时候无法直接查看HOST头,那么云服务商们又是如何拦截的呢?
我们知道,HTTPS的页面,在访问前会先想服务器获取证书并进行CA验证,而在向服务器获取证书的过程中也需要发送一个SNI头,其中包含有我们的域名,因为一个服务器同样可以部署多个HTTPS的网站,那么服务器只需要把HOST的规则改改,变成针对SNI的规则,那么HTTPS的网站,也是会被拦截的了
2、绕北岸的操作是如何弄的?
前面说了那么多,不知道大家有没有注意到,判断域名检测的都是服务商的操作,而有些服务商的某些业务存在一定缺陷,
就导致一定情况下可以做到的,但是这种基本上就是见光死。比如说:腾讯云的服务器,你自己私自解析一个未北岸域名到其国内服务器刚开始可以能够正常使用,流量一大 或者时间稍长些就被拦截了;阿里云的CDN,开海外地区强制解析国内节点(已失效)等。如果有服务商,敢于卖你服务器而且不做北岸拦截,那么同样也是可以做到的,不过怕是用不了几天就被郭嘉 吊销证,上游也不会供货给你。不过你要是足够NB,自建机房,而且上头有人那还是有点可能的,比如Google的recaptcha.net,国内无北岸照样耍。
此处“绕”北岸不讨论域名+非80、443端口的方法
3、绕开北岸用国内服务器?
看了上面的一点应该知道不太可能了,因为没有服务商因为这点小钱丢了西瓜,不值当,目前来看大部分说能免北岸国内机子的几乎都是骗子,极少部分人可能掌握了某些服务商的BUG可以做到。
4、CDN如何“绕”开北岸?
这里说的“绕”实际上不太准确,因为实际上你套了CDN之后,用户是与CDN做交互的,ping出来的服务器都不是国内的服务器了。只是说,你可以照样把网站假设在国内的服务器上,套上一层CDN后“复活”,属于是出口转内销了。
在大部分的CDN中,可以设置回源域名,也就是用户A向CDN访问网站B的内容,CDN向源站获取北岸网站C的内容后,把网站C的内容当做网站B的内容返回给用户A,依此达到“绕”北岸的作用。而目前大部分的CDN回源域名都可以任意设置(据我所知华为云已经需要进行归属校验了),回源域名可以任意填写一个国内的北岸域名均可(可以不是自己的)。注:此方法也可以复活被墙的北岸米,使其可以使用大陆之外的服务器
5、CloudFlare可以利用上边的方法绕开北岸吗?
由于CF的CDN免费版无法设置回源HOST,所以不行,但是如果你用worker反代也不是不可以,不过注意没缓存的加持…https://cdn.jsdelivr.net/gh/master-of-forums/master-of-forums/public/images/patch.gif