具有基本扩展名的统一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在……里面::pf4publicGentoo覆盖
在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→右键单击命令提示符→“以管理员身份运行”
您还可以参考“第三方主机管理器”部分,了解来自第三方的更多推荐解决方案
警告:使用此hostsWindows中的文件可能需要禁用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/Ubuntusudo 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