前言
作为一个中国网民,网络环境可以说是非常复杂的。我认为主要复杂在两点
GFW对某些国外域名、IP的限制,这也是最主要的一点。
浏览器访问网页时一些网页的广告、诸如YouTube、bilibili等流媒体网站的视频播放无法跳过的前置广告,这也是很烦人的。
解决方案
跨过防火墙
首先,我们都知道使用V2rayN或者Clash在大部分情况下能够绕过GFW的限制。
这对于很多情况下的使用浏览器访问网站是没有任何问题的:
1. 可以在这些客户端中设置系统代理
2. 借助浏览器的插件[SwitchyOmega](https://chromewebstore.google.com/detail/proxy-switchyomega-v3/hihblcmlaaademjlakdpicchbjnnnkbo?hl=zh-CN)使浏览器具有选择代理的功能
SwitchyOmega的Chrome插件
这两种解决方案我更倾向于第二种,原因主要是因为:
因为日常需求,偶尔会使用reqable这个软件进行网络流量抓包;而必要条件就是reqable需要使用系统代理,才能捕获到流量。所以将V2rayN作为一个服务运行,等需要代理的软件配置其自定义代理通过10808服务端口即可(clash默认端口为7897)。
另外,不设置系统代理,有时候遇到网络问题能够更好的进行排查,这样对系统的侵入性更小。虽然这些代理客户端提供了tun模式接管全局流量,通过配置路由规则去指定哪些域名、IP需要通过代理,但是经过我的使用下来,这样并不完美。
原因如下:
- V2rayN的Geo域名IP数据库并不是特别准确,偶尔也会遇到能够直连的网站走代理的情况
- 手动配置路由规则的过程比较麻烦,需要进行抓包找到应用程序的远程API接口域名。
- 某些应用的api接口也会动态地变化,没法做到“一次配置,长期使用”
尽管不使用系统代理的话,能够满足我的日常使用需求,可是接着又引出了一个新的问题:
如果某些应用不支持配置自定义代理,那该如何解决?
Proxifier是一个能够将无法自定义配置代理的应用程序强行代理到配置的代理服务器的工具,并且它支持通过设置进程名匹配规则来代理流量,而不是通过域名、IP规则。但是坏消息是它需要付费购买许可才能够使用,不过网上有绿色版安装教程,某宝买注册码也就个位数,注册之后永久使用。
配置好规则以后,它可以以Windows服务的形式运行在后台。占用系统资源不多,12M的内存占用。
好了,现在解决了最让人头痛的绕过GFW的问题,接下来解决烦人的广告问题。
数不尽的广告
首先介绍一下adguard,它的主要功能就在广告拦截、DNS防护和跟踪保护了。它在底层调用了Windows的WFP网络框架,这是Windows内核中实现的一个网络框架,可以供开发者调用其API,为此我还特意查了一下相关资料。
它可以实现对流经网卡的所有流量进行过滤,并且也使用了分层架构,可以在网络协议栈的多个层面进行过滤(网络层、应用层、传输层等),实现更为精确的控制,Windows的自带防火墙也是基于WFP网络框架的。
- 广告拦截,adguard的广告过滤器有很多种,具体如下;每一种过滤器的功能也都标注在了下方。广告拦截是通过adguard提供一个类似于广告域名的数据库,当域名命中时,会拦截掉这部分流量,所以它可以加速某些因为加载广告而打开缓慢的网站、减少一部分的流量消耗。
为了展示功能的强大,我再使用百度搜索一下“英雄联盟”,在使用adguard的情况下:
不使用adguard:
这仅仅是在搜索引擎上所展示出的效果,在某些网站场景,效果更好,这里就不做展示了,不得不说adguard的广告域名数据库还是挺强大的。
DNS防护,主要是为了避免DNS劫持和过滤掉一些广告域名的DNS请求。
在我们日常生活中,访问一个之前没有访问过的网站时,都需要先经过DNS查询。当DNS服务器返回目标网站的IP之后,浏览器才能够正常访问网站内容。
而adguard则能够将系统的所有DNS请求拦截,然后再将其发送到软件配置中的DNS服务器进行查询。如果配置了DNS过滤,那么也会在此时进行过滤。将发起查询黑名单中的域名的请求进行block操作,直接返回一个空响应,表示该域名不存在。
此外,它还支持DoH、DoT协议,这两种协议都是用于伪装DNS查询请求。前者是伪装成互联网中最多的https协议,后者则伪装成TLS协议;前者性能开销相比而言更大一些,因为https需要加解密报文,但胜在部署方便,且使用广泛兼容性好,后者则性能更好一些,但部署麻烦,且存在兼容性问题;这两种协议都用于在adguard发起真正的DNS查询时使用。
至于DoQ则是将DNS伪装为quic协议的数据包,quic全名叫做Quick UDP Internet Connections,是由谷歌开发的一种基于UDP的网络传输层协议,它结合了TCP的可靠性和UDP的速度,并且内置加密功能。
简单来说DoQ是吸取了DoH的安全性和DoT的性能的一种新协议,于2022年5月发布。目前普及地并不是很广泛,但由于quic协议强大的性能并且也有不错的可靠性,前景还是非常不错的,正好adguard支持DoQ,无脑选它就没问题。
- 跟踪防护,跟踪防护则主要是为了阻止网站和广告商跟踪你的在线活动,从而保护个人隐私。它的实现手段通过:
- 跟踪器拦截表,会拦截已知的一些跟踪器的URL、域名等,这个列表会定期更新。
- 隐藏http Referer,Referer是http请求头的一个字段,它的值代表当前页面是从哪个网站跳转过来的;跟踪器可以利用Referer信息来跟踪用户浏览的路径。
- 隐藏跟踪参数,许多网站和广告商会在 URL 中添加跟踪参数,例如 UTM 参数、
fbclid
等。这些参数可以用于跟踪用户的点击行为和来源。AdGuard 可以自动删除这些跟踪参数,从而防止跟踪。 - 阻止第三方 Cookie
- 隐身模式
通过adguard的日志,你也可以随时查看电脑上的网络请求都有什么,哪些请求命中了规则,但是说实话这个日志真的做的一般般,没有一个好看的图形化界面,并且,只有当开着日志窗口时才能看到网络请求,想要查看例如几小时之前的日志只能通过将所有日志导出才能够查看,算是一点美中不足吧。
虽然adguard是一款付费软件,但我在使用它的过程中也学习了非常多的网络知识,并且也确实让我免去了广告的烦恼。好的软件值得付费,况且在淘宝购买并不贵,可以购买永久版本。
网络流量监控【可选】
之前提过查看adguard的过滤器日志没有一个好看的图形化界面,那么接下来这款软件一定能让人眼前一亮。
直接上图
它的功能有:流量统计、网络实时监控、日志分析、内网扫描
相信这些功能还是简单易懂的。就不过多解释了,遗憾的是,它也是一个付费软件,需要绑定visa或者万事达的卡才能完成购买,并且没法买断,只能按月订阅,粗略地算了一下,一年的价格单人买的话在260左右,如果多个人拼的话就可以到120左右,价格还算比较合理。但是因为我没有visa/万事达的卡,所以只能使用学习版的了,这里贴一个资源链接
https://drive.google.com/file/d/1QoAOsnZ7FYQHn1EbtR-virqOj24OvbiK/view?usp=sharing
需要注意的是,如果adguard开启了https解密功能,那么glasswire的监控功能有可能会不全。