具有基本扩展名的统一HOSTS文件
这个存储库整合了几个信誉良好的hosts
文件,并将它们合并到删除重复项的统一主机文件中。提供了各种定制的主机文件
所有主机文件变体的列表
此存储库提供15 different host file variants ,除了基本变体之外
这个非GitHub镜像 是用于某些主机文件管理器的链接,如Hostsman for Windows 不适用于GitHub下载链接
主机文件配方
自述文件
原始主机
唯一域
非GitHub镜像
统一主机=(广告软件+恶意软件)
Readme
link
81747
link
统一主机+假新闻
Readme
link
83,942
link
统一主机+赌博
Readme
link
84,204
link
统一主机+色情
Readme
link
107,898
link
统一主机+社交
Readme
link
84,562
link
统一主机+假新闻+赌博
Readme
link
86,399
link
统一主机+假新闻+色情
Readme
link
110,093
link
统一主机+假新闻+社交
Readme
link
86,757
link
统一主机+赌博+色情
Readme
link
110,355
link
统一主机+赌博+社交
Readme
link
87,019
link
统一主机+色情+社交
Readme
link
110,712
link
统一主机+假新闻+赌博+色情
Readme
link
112,550
link
统一主机+假新闻+赌博+社交
Readme
link
89,214
link
统一主机+假新闻+色情+社交
Readme
link
112,907
link
统一主机+赌博+色情+社交
Readme
link
113,169
link
统一主机+假新闻+赌博+色情+社交
Readme
link
115,364
link
期望值 :这些统一主机文件应服务于所有设备,而与操作系统无关
此变体中统一的主机数据源
已更新hosts
来自以下位置的文件始终是统一的并包含在其中:
扩展部分
统一主机文件是可选的可扩展文件。扩展用于按类别包括域。目前,我们提供以下类别:fakenews
,social
,gambling
,以及porn
扩展名是可选的,可以通过各种方式与基本主机文件组合。组合后的产品存储在alternates
文件夹
扩展模块的数据存储在extensions
文件夹。您可以通过管理此文件夹树来管理扩展模块,您可以在其中找到以下文件夹树的数据fakenews
,social
,gambling
,以及porn
我们为您维护和提供的扩展数据
生成您自己的统一主机文件
您有两个选项可以生成自己的主机文件。您可以在自己的环境中完成,也可以在Docker容器中完成。我们将首先报道码头,因为这是一个很短的部分
选项1:在Docker容器中生成
我们提供一个Dockerfile 您可以使用它来创建一个包含您需要的一切的Docker容器。容器将包含Python 3及其所有依赖项要求,以及此资料档案库的最新版本副本
如下所示构建Docker容器:
通过如下方式访问终端:
docker run -it (containerid) bash
选项2:在您自己的环境中生成它
要生成您自己的合并主机文件,您需要Python 3.5或更高版本
首先,使用以下命令安装依赖项:
pip3 install --user -r requirements.txt
注意事项 我们建议您将--user
在用户级别安装所需依赖项的标志。有关它的更多信息可以在pip上找到。documentation
与您的开发环境无关的通用步骤
至运行单元测试 在顶级目录中,运行:
python3 testUpdateHostsFile.py
这个updateHostsFile.py
脚本将根据本地中的源文件生成统一的主机文件data/
子文件夹。该脚本将提示您是否应获取更新的版本(从update.json
每个源文件夹中的文本文件)。否则,它将使用hosts
已经在那里的文件
python3 updateHostsFile.py [--auto] [--replace] [--ip nnn.nnn.nnn.nnn] [--extensions ext1 ext2 ext3]
命令行选项:
--help
,或-h
:显示帮助
--auto
,或-a
:在没有提示的情况下运行脚本。什么时候--auto
被调用,
主机数据源(包括扩展模块)将更新
默认情况下不包括分机。使用--extensions
或-e
标志以包括您想要的任何内容
您的活动主机文件是不 替换,除非您将--replace
旗帜
--backup
,或-b
:在覆盖现有主机文件时对其进行备份
--extensions <ext1> <ext2> <ext3>
,或-e <ext1> <ext2> <ext3>
:下面的子文件夹的名称extensions
包含要包括在合并中的其他类别特定主机文件的文件夹。示例:--extensions porn
或-e social porn
--flush-dns-cache
,或-f
:跳过刷新DNS缓存的提示。仅在以下情况下才处于活动状态--replace
也处于活动状态
--ip nnn.nnn.nnn.nnn
,或-i nnn.nnn.nnn.nnn
:用作目标的IP地址。默认值为0.0.0.0
--keepdomaincomments
,或-k
:true
(默认)或false
,保留与域显示在同一行上的注释。默认值为true
--noupdate
,或-n
:跳过从主机数据源获取更新
--output <subfolder>
,或-o <subfolder>
:将生成的源文件放入子文件夹。如果子文件夹不存在,则会创建子文件夹
--replace
,或-r
:触发器替换您的活动主机
--skipstatichosts
,或-s
:false
(默认)或true
,省略顶部的标准部分,包含如下行127.0.0.1 localhost
这对于在本地网络上配置最接近的DNS服务很有用
--nogendata
,或-g
:false
(默认)或true
跳过用于生成readme.md文件的readmeData.json文件的生成。如果您正在生成具有附加白名单或黑名单的主机文件,并且希望保持此存储库的本地签出不被修改,则此功能非常有用
--compress
,或-c
:false
(默认)或true
,压缩 主机文件忽略不必要的行(空行和注释),并在每行中放置多个域。减少主机文件的行数可提高Windows(启用DNS客户端服务)下的性能
--minimise
,或-m
:false
(默认)或true
,就像--compress
,但将每个域放在单独的行上。这是必要的,因为许多URL拦截器实现依赖于hosts
文件不符合允许在单行上有多个主机的标准
--blacklist <blacklistfile>
,或-x <blacklistfile>
:将给定的HOSTS格式的黑名单文件追加到生成的HOSTS文件中
--whitelist <whitelistfile>
,或-w <whitelistfile>
:使用给定的白名单文件从生成的主机文件中删除主机
使用NixOS:
要在您的计算机上安装主机文件,请将以下内容添加到您的configuration.nix
:
{
networking .extraHosts = let
hostsPath = https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts ;
hostsFile = builtins . fetchurl hostsPath ;
in builtins . readFile " ${ hostsFile } " ;
}
注:更改hostsPath
如果您需要其他版本的主机文件
注意:调用fetchurl
是不纯洁的。使用fetchFromGitHub
如果您希望始终获得相同的结果,请使用精确提交
我如何控制哪些源是统一的?
添加一个或多个附加内容 源文件,每个源文件都位于data/
文件夹,并指定url
键入ITSupdate.json
文件
添加一个或多个可选 扩展名,这些扩展名源自extensions/
文件夹。同样,中的urlupdate.json
控制此扩展模块查找其更新的位置
创建一个可选 blacklist
文件。此文件的内容(包含中的其他域列表hosts
文件格式)在更新过程中被附加到统一主机文件。一份样品blacklist
包括在内,并且可以根据需要进行修改
注:blacklist
不会被git跟踪,因此当您执行以下操作时,您所做的任何更改都不会被覆盖git pull
此回购来自origin
在未来
如何包含我自己的自定义域映射?
如果您有自定义主机记录,请将它们放入文件中myhosts
在更新过程中,此文件的内容将作为统一主机文件的前缀
这个myhosts
文件不会被git跟踪,因此当您执行以下操作时,您所做的任何更改都不会被覆盖git pull
此回购来自origin
在未来
如何防止包含域?
中列出的域whitelist
文件从最终的主机文件中排除
这个whitelist
使用部分匹配。所以如果你把白名单google-analytics.com
,则该域及其所有子域不会合并到最终的主机文件中
这个whitelist
不会被git跟踪,因此当您执行以下操作时,您所做的任何更改都不会被覆盖git pull
此回购来自origin
在未来
我如何贡献主机记录?
如果您发现您认为应该包含在这里的粗略域名,这里有一些贡献它们的方法
选项1:联系我们的一位主机来源
包含新域名的最佳方式是向主页为以下内容的任何数据提供商提交问题listed here 这是最好的,因为一旦您提交新的域名,它们将由维护这些源的专职人员进行管理和更新
选项2:分叉此存储库,将您的域添加到Steven Black的个人数据文件中,然后提交拉取请求
分叉此主机此回购并将您的链接添加到https://github.com/StevenBlack/hosts/blob/master/data/StevenBlack/hosts
然后,提交拉取请求
警告 :这比方案1更不可取,因为正在进行的管理落在我们身上。所以这给我们带来了更多的工作
选项3:在GitHub上创建您自己的主机列表作为回购
如果您能够策划您自己的粗略域名集合,那么就策划您自己的主机列表。然后发出回购存在的信号,如下所示a new issue 当我们创建新版本时,我们可能会将您的新回购包括到我们拉取的资源集合中
什么是主机文件?
一个HOSTS文件,名为hosts
(不带文件扩展名)是所有操作系统用于将主机名映射到IP地址的纯文本文件
在大多数操作系统中,hosts
文件优先于DNS
因此,如果域名由hosts
文件,则请求永远不会离开您的计算机
拥有一个聪明的hosts
文件在阻止恶意软件、广告软件和其他刺激物方面大有裨益
例如,要使对某些Doubleclick.net服务器的请求无效,可以将以下行添加到主机文件中:
# block doubleClick's servers
0.0.0.0 ad.ae.doubleclick.net
0.0.0.0 ad.ar.doubleclick.net
0.0.0.0 ad.at.doubleclick.net
0.0.0.0 ad.au.doubleclick.net
0.0.0.0 ad.be.doubleclick.net
# etc...
我们建议您使用0.0.0.0
而不是127.0.0.1
传统上,大多数主机文件使用127.0.0.1
,即环回地址 ,建立到本地计算机的IP连接
我们更喜欢用0.0.0.0
,它被定义为用于指定无效、未知或不适用的目标的不可路由的元地址
使用0.0.0.0
在经验上更快,可能是因为不需要等待超时解决方案。它也不会干扰可能在本地PC上运行的Web服务器
为什么不使用0
而不是0.0.0.0
?
我们试过了。使用0
并不是普遍有效
主机文件的位置
要修改您的当前hosts
文件中,在以下位置查找该文件,然后使用文本编辑器对其进行修改
MacOS(10.14.x之前的MacOS Mojave)、iOS、Android、Linux :/etc/hosts
文件
MacOS Catalina: /private/etc/hosts
文件
窗口 :%SystemRoot%\system32\drivers\etc\hosts
文件
根图(Gentoo)
Gentoo用户可以找到sb-hosts
在……里面::pf4public Gentoo覆盖
在Windows上更新主机文件
(注意:另请参阅下面列出的一些第三方主机管理器。)
在Linux和MacOS上,运行Python脚本。在Windows上,由于兼容性问题需要做更多工作,因此最好按如下方式运行批处理文件:
此文件必须 以存储库目录中的管理员权限在命令提示符下运行。除了更新HOSTS文件之外,它还可以替换现有的HOSTS文件,并重新加载DNS缓存。不用说,要想让它起作用,你必须连接到互联网上。
要以管理员身份在资料库目录中打开命令提示符,请执行以下操作:
Windows XP :Start→Run→cmd
Windows Vista,7 :开始按钮→类型cmd
→右键单击命令提示符→“以管理员身份运行”
Windows 8 :Start→Swipe Up→All Apps→Windows System→右键单击命令提示符→“以管理员身份运行”
Windows 10 :开始按钮→类型cmd
→右键单击命令提示符→“以管理员身份运行”
您还可以参考“第三方主机管理器”部分,了解来自第三方的更多推荐解决方案
警告:使用此hosts
Windows中的文件可能需要禁用DNS缓存服务
Windows对较大的主机文件有问题。Windows10安全方面的最新变化拒绝通过除注册表黑客之外的其他工具访问更改的服务。使用disable-dnscache-service-win.cmd
文件对Windows注册表进行适当更改。完成此操作后,您将需要重新启动设备。请参阅the comments within the cmd
file 有关更多详细信息,请参阅
正在重新加载主机文件
您的操作系统将缓存DNS查找。一旦新的主机文件就位,您可以重新引导或运行以下命令来手动刷新DNS缓存
|Google Chrome浏览器可能需要手动清除其DNS缓存chrome://net-internals/#dns
页,然后查看主机文件中的更改。请参见:https://superuser.com/questions/723703
窗口
使用管理员权限打开命令提示符,然后运行以下命令:
Linux操作系统
打开终端并以root权限运行:
Debian/Ubuntu sudo service network-manager restart
Linux铸币厂 sudo /etc/init.d/dns-clean start
带systemd的Linux :sudo systemctl restart network.service
Feddora Linux :sudo systemctl restart NetworkManager.service
带网络管理器的Arch Linux/Manjaro :sudo systemctl restart NetworkManager.service
带Wicd的Arch Linux/Manjaro :sudo systemctl restart wicd.service
RHEL/CentOS :sudo /etc/init.d/network restart
FreeBSD :sudo service nscd restart
要启用nscd
守护程序最初,建议您运行以下命令:
sudo sysrc nscd_enable=" YES"
sudo service nscd start
然后修改hosts
在您的/etc/nsswitch.conf
文件保存到以下位置:
其他 :咨询this Wikipedia article
MacOS
打开终端并运行:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
版本管理
此存储库使用release-it ,一个用于GitHub repos和NPM包的优秀CLI发布工具,可自动创建releases 这就是为什么package.json 和.release-it.json 文件捆绑在一起
此统一主机文件的目标
这项回购的目标是:
自动组合高质量的主机列表,
提供适合情况的扩展,
对得到的组合列表进行去重,
并使生成的文件保持合理的大小
高质量的信息源在这里被定义为经过积极策划的信息源。主机源应该由其维护人员频繁更新,包括添加和删除。主机文件越大,预期的管理级别就越高
预计此统一的HOSTS文件将在各种操作系统下同时服务于台式机和移动设备
第三方托管经理
Unified Hosts AutoUpdate (适用于Windows):Unified Hosts AutoUpdate软件包是专门为此Unified Hosts项目构建的,并且由社区成员积极开发。您可以安装和卸载任何黑名单并自动使其保持最新,并且可以放置在共享网络位置,并通过组策略在整个组织中部署。由于社区成员正在积极开发它,因此非常欢迎您的bug报告、特性请求和其他反馈
ViHoMa 是一个Visual Hosts文件管理器,由Christian Martínez用Java编写。看看这个!
有趣的应用程序
贡献自己的力量!
请阅读我们的Contributing Guide 此外,这还解释了我们如何组织此存储库中的文件和文件夹
我们总是对发现精心安排的宿主来源感兴趣。如果您找到一个,请打开一个issue 为了引起我们的注意
在您创建或回应任何问题之前,请阅读我们的code of conduct