host如何去广告

@teddyluo  November 21, 2019

有一些小伙伴在后台问我关于网络的一些问题,恰好最近我在折腾 host 去广告,索性就把我的折腾过程写一个小小的笔记吧。

host 是什么

首先我们要知道一个很简单的事情,你想要到世界中的一个地方去,那你就需要知道这个地方的『地址』,在网络世界中,这个『地址』就指的是 IP 地址,譬如

XX省XX市XX县XX街道XXX门牌号

这是一个典型的中国地址,通过不同的 XX 数值来记录不同的信息

127.0.0.1

这是一个典型的 IP 地址,通过一串数字来记录不同的信息

怎么样,是不是发现了其中的相似点?

但是我们在日常生活中是很少说:『我要去 XX 省 XX 市 XX 县 XX 街道 XXX 门牌号』的,而是会说『我要去 XX 家』、『我要去 XX 广场』、『我要去 XX 学校』,这是一个典型的『可以但没必要』的案例。

放在网络世界上也一样,我要打开百度首页,我不会费劲去说『打开 220.181.38.148』,而是直接输入『www.baidu.com』。

很明显,在『真实地址』和『代号』之间有一个『翻译』,那么谁来给我们提供这其中的『翻译』功能呢?过去,人们通过电话本、地址本这样的本地物理存储来解决,需要的时候我可以翻电话本,它可以把名字翻译成地址信息(还有其他更多的信息),现在随着互联网的兴起,没人会用本地物理储存了,大家取而代之使用各种各样的『地图』APP,需要的时候直接搜索就行了。

网络世界也是一样的道理,『电话本』就是我们常说的『host』,『地图』就是『DNS』。

host 的定义

hosts文件是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主机名称映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和DNS不同的是,计算机的使用者可以直接对hosts文件进行控制。

host 文件打开以后长这个样子:

我们可以看到,host 文件除了一些描述性的、被注释掉的文字外,生效的全是

0.0.0.0 0127.adsame.com

类似这种 IP 地址加域名的字段。

其实很好理解,当计算机在访问一个域名时,它会先在 host 文件中查找,有这个域名吗?这个域名对应的 IP 地址是多少?找到了 IP 地址以后,计算机就会直接访问这个 IP 地址,省去了先去问 DNS 服务商的一步,大大提高了连通速度。

但是缺点也同样明显,与电话本一样,如果别人地址更改了,不及时更新就会导致再次访问域名时导航到其他的地址。

host 能干啥

首先,host 最主要的一个应用途径就是破除某些网络环境带来的限制,比如我需要访问一个很偏门的网站,我知道这个网站的域名和 IP 地址,可是这个网站在任何 DNS 服务商都没有解析记录,那么我没办法直接访问域名来访问网站,这个时候我就可以通过 host 文件来添加本地的解析,这样再访问这个网站。(就到这里,再说下去我号没了)

第二个很重要的应用就是去除广告,

我们在访问一些网站的时候,这个网站会加载很多其他 ip 上的东西,比如广告,于是我们就可以通过将广告域名解析到一个空地址(通常是 127.0.0.1)来达到屏蔽的目的。

一些好用的去广告 host 推荐

对于一些有基础的小伙伴,可以直接跳到这里来找相应的资源和链接。

自由·负责·克制 去广告 Hosts 项目https://github.com/neoFelhz/neohosts
这一家去广告效果算是十分克制且有效的,在我的日常使用中的确能够去除绝大多数广告并且对正常站点没有影响。

yhostshttps://github.com/vokins/yhosts
这一家的使用效果明显,但是存在很少的误杀情况,如果有使用以后某些软件或者 app 闪退或者 bug,可以在 host 中删除相关解析规则(目前我删除了魅族相关规则,因为会误杀到收藏 app 的使用)

1024_hosts:https://raw.githubusercontent.com/Goooler/1024_hosts/master/hosts
这一家主要针对 1024 网站和澳门那啥赌场,值得一用。

StevenBlack: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
这一家是国外维护者屏蔽国外网站广告,比较适合一些经常访问国外站点的用户。

设置 host

host 文件放置在正确位置后,我们需要进行一次 DNS 刷新缓存,不然很可能出现 host 文件无法生效的问题。

DNS 刷新缓存的命令:

在cmd中输入:

ipconfig /flushdns

如果懒得输入,也可以直接重启计算机达到刷新效果。

下一节,咱们用 Python 写一个下载安装 host 的小工具。敬请期待。


添加新评论