由于法律风险和敏感性,本文不探讨使用代理或者混淆作为解决方案,而是研究一种更加合法合规和轻量化的无代理直连方案来加速部分网站的访问,在结尾处我编写了一个简单易用的开源桌面端程序,运用本文介绍的原理来实现部分网站的加速,如果你对原理部分不感兴趣,也可以直接跳至结尾处看我写的程序
咱先以开发者们更常使用的 Github 为例解释原理,从这里直入正题
与大多数无法直连的网站不同,由于庞大的用户访问量以及对开源事业做出的巨大贡献,Github 实际上并未受到国家审查机制的阻断,但我们实际直连 Github 的体验依然很不稳定 (昨天我写这篇文章的时候就怎么都访问不上,今天改文章的时候刷新了几次之后又能直连了,但下载个文件的速度依旧与某度网盘不相上下),很多用户即使访问 Github 也得开个代理 (刚截的 Github 直连超时截图 ↓)
为什么会访问慢或者访问超时?这里我本地 ping 一下看看解析结果:
可以看到解析出来的是 140.82.121.4 这个 ip,用 itdog 查询一下这个 ip 的全国直连情况:
可以看到各省的电信和联通网大多访问超时,移动网勉强可以使用,再查下 ip 属地:
确实是 github 没错,不过嘛... 德国,搜嘎斯内,跑地球另一半去了丢
所以归根到底还是域名解析的问题,毕竟对于部分服务器遍及全球的网站,DNS 没有足够的能力给咱优选出质量最好的 ip,而且 DNS 的解析结果过段时间可能就会换一个,可能今天还能正常直连的,过几天就又不行了,这也就是为什么咱访问 Github 不稳定的原因
但 DNS 是死的,人是不那么死的,靠 DNS 不行,咱也可以人工来优选
解决方案一自然就是已经用烂了的改 hosts (域名优先按照 hosts 里写的规则解析),只要按照 "域名 优选ip" 的格式填入即可,但由于 hosts 设计的年代较早,就有点... 啸缺陷 —— 比如 hosts 不能使用通配符来泛匹配,这导致域名每有一个子域就得单独写一条 hosts (比如 github.com,www.github.com 和 gist.github.com 就只能写成三条规则),很难覆盖完全,另外的一些我不满意的地方比如 hosts 的修改需要管理员权限,影响范围相当大 (影响整个系统的域名解析),如果想回到修改前的状态的话还需要再手动还原 hosts
但幸运的是,在我读过互联网上散落的一些大佬的文章以及 Chromium 文档后很快找到了另一个方案,Chromium 内核中的 --host-rules 和 --host-resolver-rules 参数,只要给任意以 Chromium 为内核的浏览器 (如 Chrome, Edge, Brave 等) 注入这两项启动参数,就可以实现与修改 hosts 类似的效果 (注入的参数样例 ↓)
--host-rules="MAP *github.com github" --host-resolver-rules="MAP github 20.205.243.166" --test-type --ignore-certificate-errors
而且这个方案 一、支持通配符,二、范围限制在浏览器中,只会影响访问网站,系统中的程序则不会受到影响,三、不需要管理员权限,四、关闭浏览器后效果自动解除,比改 hosts 更加便捷轻量 (经测试加速效果确实要优于改 hosts)
当然如果仅止步于此的话,那我肯定是不满意的,接下来我快速写了一个桌面端程序 (Sheas Cealer) 来实现自动化注入参数,并且让启动参数的编写更加简化,然后我将程序开源了,收获了很多用户的喜欢
是的,这已经是两年多前的事了,经过这两年的持续改进维护,项目也更加完善易用了 (覆盖了更多类似情况的网站),如果你对我的项目感兴趣,这里是开源地址 (点一个
标签:直连,Github,--,增稳,访问,github,hosts From: https://www.cnblogs.com/spacetime/p/18536134