LazyHosts Document
1, 使用 LazyHosts 的前提是你对 hosts、DNS 等网络知识有基本的理解,否则请不要尝试,会浪费时间!
3, Windows版中,LazyHosts 如果错误地被杀毒软件拦截,是正常的,比如诺顿可能会提示为 Heur.AdvML.C; 从个人安全的角度、以及于我们而言潜在的咨询、无解的状态考虑,建议不要使用LazyHosts。:)
LazyHosts 用前须知
- LazyHosts 运行过程中需要管理员权限,如果没有管理员权限,请退出之后重新启动 App。
- 必须从 LazyHosts 本身退出软件,不然系统默认的 DNS 系统不会自动重置而一直指向127.0.0.1。
- Windows 版本会尝试修改注册表,与
proxy.pac
相关;直接安装尝试启动的时候,会有提权错误的提示,忽略再打开即可。
LazyHosts 工作机制
LazyHosts 会在本地搭建一个 DNS 服务器,解析域名的时候,优先匹配用户自己指定的规则,如果规则不存在,则会向外部 DNS 服务器请求并返回结果,也不会影响正常网络域名解析的使用。
内置服务说明
HTTP(代理)服务
当一些黑名单内的域名请求普通的URL时返回内容,或者RescueTime自动屏蔽低效率域名时需要用到。
如果 HTTP 服务未正常启用,或者权限不够,或者80端口已经被占用。只要DNS服务正常,App一般还能保持基本的运行。
HTTPS(代理)服务
同 HTTP服务,只是特指某些URL以https://
开头的,其服务端口为443。
DNS服务
负责域名解析的基本服务。也可以在 App 内停止 DNS 服务,那么会更新为系统默认的DNS。App的基本功能将无法运行。
自动代理
这里特指 proxy.pac
文件的机制。即使 HTTP、HTTPS、DNS全部失效的情况下,proxy.pac仍然是有效的,但不会再自动探测某个域名是否被科学,而是用户自己设定 代理名单
起直接的作用。
基本技能需求
由于 LazyHosts 替换了系统的基础的 DNS 服务,可能会因为异常退出等原因,留下一些后遗症,需要有以下基本的技能才能自己完成修正。
手工修改 DNS: 当网络发生无法访问的时候,第一时间想到的是当前的 DNS 服务器是不是仍然处于127.0.0.1
的情况。
手工结束 LazyHosts 的进程: LazyHosts 会开启两个进程,一个是后端服务,一个是 GUI 主程;GUI 主程序会守护后端服务的进程,有可能会因为操作系统的原因产生无法 kill 掉的影子进程(极小概率,或者等或者重启),也有可能 GUI 主程序无法控制后端服务,而后端服务已经挂起,此时需要接触后端服务相关的进程。
Pro 版功能
Rescuetime
接入 RescueTime 的接口,开启后可以禁止访问降低效率的网站。也可以指定访问到这些低效率的网站时,跳转到指定的某个 URL。
流量抓包
Pro 版也可以进行 Proxy 以及流量抓包,但涉及 SSL 相关的,某些网站有潜在不支持的概率、甚至会触发 LazyHosts 的后端服务崩溃。仅建议作为开发、调试的补充功能,而不建议日常高频使用。
另外,涉及流量抓包,实际上是构建了一层透明代理,由于每个人所处网络环境、线路、Proxy 实际情况等等各异,所以很抱歉,一般我们情况下,我们没办法对此方面的问询做什么回应。
自动代理
如果开启自动代理
,LazyHosts 会自动生成 proxy.pac并且是使用过程中自动更新,除了使用者自己指定的域名外,其它域名在 DNS 请求的过程中,LazyHosts 会自动判断是否要添加到 proxy.pac 中。配合 SS 客户端,基本上不需要额外配置,就能实现非正常访问网站的自动代理。
注意:
1, proxy.pac
多数只是浏览器支持,对其它软件一般不起什么作用。
2,在 LazyHosts 开启的前提下,访问http://127.0.0.1:28759/auto_proxy即可看到哪些域名将会自动匹配代理;如果不希望某些在这个 list 内,请添加到白名单
,或者希望出现在这个 list 内,请手工添加到代理名单
。
3,list 的自动添加,一般在第二次访问的时候才能生效,比如第一次访问https://zh.wikipedia.org/
的时候,仍然是不可访问的,但此时已经将这个域名添加到了 list 中,然后第二次(以及之后)再访问的时候,就会自动使用代理了。
自动安装 SS 服务端
如果已经有自己的 SS 服务端运行的,如非必要,请不要使用这个功能,这样会重置整个VPS内的SS服务,有可能需要重新在各个客户端中再次设置一次。
输入自己购买的 VPS (使用 Ubuntu 操作系统)的 IP,密码,user(一般不用输入,如果是 root 的话),在 LazyHosts 中可以实现自动安装 SS 的服务端到当前的 VPS 中。
当然,作为使用者,你应该知道 SS 是什么,以及 SS 服务端与客户端的差别,以及已经下载 SS 的客户端并处于运行的状态。
你可以找到一些廉价的 VPS 提供商,也可以使用比如 Vultr, Linode 这些按量计算的供应商,启用一个 VPS 并安装 SS 的服务端后,配置 SS 客户端之后,将speedtest.net
添加到 LazyHosts 的代理名单
中,然后进行测速,速度满意可以保留当前 VPS,不满意换一个线路,其测试的成本几乎可以忽略不计。
使用自己的 SS 服务端,你可以获得非常廉价(通常又是相对于自己当前网络环境而言是质量超高)的带宽。
(泛)解析的规则语法
Host 与 IP
Host 与 IP 的前后可以互调,不影响结果,支持泛解析以及正则。
domain.com 127.0.0.1
127.0.0.1 domain.com
*.domain.com 127.0.0.1
注释
# 以# 开头即可
meta声明
ttl: 30
127.0.0.1 domain.com
比如 ttl: 30
这种 key-value 结构的,并且出现在规则头部的内容,视为meta
。
匹配的优先级
如果一个域名,在多个 Rule 中都能被匹配到,那么它将遵循以下的优先级:
1, host 完全对应
2, 带*
的泛解析匹配
3, 正则语法 (仅支持数字、字母、|*?^$
)
黑名单
一般是用来屏蔽广告、隐私探测(比如利用 cookie 相关技术跨域记录你的某些购物访问记录) 相关的域名。
将 IP 指向 127.0.0.1
的记录即视为当前域名被 block。
在自动代理
中,黑名单中的域名不进行代理,即使它同时也出现在代理名单
。
注意: 一般的规则是doamin.com IP
,但如果 RuleItem 的名字中带有black
关键字,则仅仅domain.com
等同于domain.com 127.0.0.1
。
白名单
将 IP 指向 0.0.0.0
的记录,当前域名即视为出于白名单内,并最终会溯源原始的 A 记录。
在自动代理
中,白名单中的域名不进行代理,即使它同时也出现在代理名单
;如果某个域名在启用 RescueTime 处于被 block 的范围,如果它在白名单之内,也会保证正常的访问。
注意: 一般的规则是doamin.com IP
,但如果 RuleItem 的名字中带有white
关键字,则仅仅domain.com
等同于domain.com 0.0.0.0
。
代理名单
将 IP 指向 0.0.0.1
的记录,当前域名即视为出于代理名单内,如果自动代理
没有开启的情况,会溯源原始的 A 记录;如果开启自动代理
,则会被代理。
注意: 一般的规则是doamin.com IP
,但如果 RuleItem 的名字中带有proxy
关键字,则仅仅domain.com
等同于domain.com 0.0.0.1
。
RescueTime
这是什么服务?
RescueTime.com 是一个追踪电脑使用情况的软件,并能进一步统计工作效率。
LazyHosts 与 RescueTime 结合?
在 LazyHosts 的设置内,设定 RescueTime 响应的选项,主要是设定从 RescueTime 处获得的 API Key。
RescueTime 会自动追踪你访问的网站,并且它提供的 API 会自动对网站是否令人分心做评分,最低分为-2 (令人分心),最高分为2 (专注的)。
当然,你应该是 RescueTime 的老用户,这样 LazyHosts 通过 API 获得的数据才会比较足够,不然 自动Block
所屏蔽的样本太少,并不会有太多作用。
设置中的 Min Score 是什么?
就是 RescueTime 中对一个网站的评分,一般社交类网站都是 -2,而技术类网站会是 2.
Min Score 是指所访问网站的评分必须要高于设定值,不然就是被屏蔽的。
Redirect URL 是什么?
默认因为 RescueTime 被 Block 的网址仅仅提示不可访问,但是也可以跳转到一个指定的 URL 。
假设你也在使用 MarkEditor,那么 MarkEditor 支持一个文档复制本地地址(右键点击)
,如果当前文档又是一个 Todo List 的类型。那么效果就是比如你在访问 twitter.com、weibo.com 等网站的时候,实际会跳转到你自己设定的某个 Todo List 页面内……
Traffic Debug (流量抓包)
Traffic Debug (流量 Debug) 的机制是将当前所有域名的请求指向127.0.0.1
,从而处理80、443端口的请求,并记录响应的请求日志。
一般可用作临时的抓包工具,特别是移动端设备,设定 DNS 指向自己当前电脑的 IP 即可。
注意: 默认 HTTPS 的透明代理是关闭的,如果URL 是 https 的,如需当手工开启。开启的时候,会提示可能引发潜在的不稳定因素,由于会调用ssl.so
相关的库,目前并不能完全兼容,极小概率情况下,SSL 握手的过程中,会导致后端服务进程的崩溃。
常见问题
试用版有什么限制?
LazyHosts 的试用版允许新建的 Rule 条目仅一条,以及规则有效行数不超过10条,解析结果不以正则匹配;除此之外,没有其它限制。
在星巴克等公共网络场所如何处理?
我们总结的一个规律,先在LazyHosts内停用DNS
,如有必要,将自动代理
也去掉勾选;之后停用WiFi,再重新打开WiFi。连上WiFi后,再重新启用DNS以及勾选自动代理
(如果在使用这个功能的话)。
原因未知。当然,有时不需要这样操作,自动联网时候的弹窗也能跳出来……
为什么 LazyHosts 需要管理员权限?
LazyHosts 需要开放 53 端口,这个端口需要在管理员权限下才能使用。如果非管理员权限,或者这个端口已经被占用,LazyHosts将无法工作。
由于 LazyHosts 需要管理员权限,所以请务必确保从官网下载,不然会存在无法预知的安全隐患!
是否可以仅仅单独使用LazyHosts的自动代理功能?
这里指的是“单独使用”,就是停用DNS、HTTP代理服务、HTTPS代理服务,几乎相当于停用了LazyHosts的功能,仅仅保留proxy.pac的功能。
可以是可以,这样一来可以作为SS客户端的一个补充。这并不是LazyHosts的原始目的,感觉意义也不是太大。
LazyHosts 突然没有用了?
突然没有用了
的情况在 LazyHosts 内有自动的监测,会自动调整,但不排除有调整失败的情况,需要使用者手工介入。而这个情况,一般也是发生在网络情况发生变化,比如从家里到办公室、或者到星巴克等公共场所。
在 LazyHosts 中 检查服务状态
,如果提示一切正常,则尝试关闭 DNS 服务
,再启动 DNS 服务
,是否解决问题?如果服务状态提示报错,则可能 LazyHosts 的后端服务出错,退出 LazyHosts,并重启 LazyHosts 是否解决问题?
如果仍未解决问题,再退出 LazyHosts,并在“任务管理器”、“活动监视器”中强制结束所有名为 LazyHosts 的进程,再重启 LazyHosts。
如果结束进程的过程中,遇到无法结束、或者结束后进程本身结束但实际仍然存在的情况,似乎是操作系统残留的影子进程,有很低的发生概率(原因未知),最后可能需要重启电脑才能结束这个进程。
LazyHosts 上的记录没有生效?
如果也有同样能生效的记录在系统的 hosts 文件上,需要先从 hosts 记录上移除后,LazyHosts 上的记录才会生效。
LazyHosts 的机制是通过 DNS 系统完成的,DNS 本身有个缓存时间,特别想 Chrome 等现代浏览器,自身会缓存 DNS 的查询记录,LazyHosts 的默认 TTL (缓存时间) 是30秒,如果记录在30秒内没有生效是正常的;如果超过30秒,并且跟 hosts 文本本身没有冲突,那么建议通过 LazyHosts 先行清空 DNS 缓存。
还有一种情况,LazyHosts 自身的 DNS 服务正常,但是系统的 DNS 未指向 127.0.0.1, 此时 LazyHosts 实际也会无法生效,此时可以在 LazyHosts 中关闭 DNS 服务并重新开启,就会自动矫正。(一般这种情况会在当前网络环境发生变化时偶发出现的。)
另外,可以通过命令行查询: nslookup xxx.com 127.0.0.1, 如果结果能正确返回,则说明 LazyHosts 本身的服务是工作正常的。
LazyHosts 会产生哪些网络请求?
1, 自动版本升级的检查 (每次启动的时候)
2, 版本授权激活时候
3, DNS 对外的请求
能否在局域网中使用?
不像普通的 hosts 文件,LazyHosts 也可以在局域网中使用,但是指定的 IP 应该是局域网内可以访问的 IP,而不是 127.0.0.1。
另外,比如在一台手机上使用,也需要将其的 DNS 指向运行 LazyHosts 的电脑本身的 IP,以及,电脑本身的防火墙不会拦截 53 端口的流量。
LazyHosts 可以屏蔽网站,为什么不默认提供一个列表?
确实,如果提供一个默认的 List 供选择,使用者可以屏蔽掉大部分涉及广告、访问隐私泄露的域名,但我们无法默认提供这样的设定,毕竟涉及到了实际的利益关系,从逻辑上讲,也会否定 LazyHosts 本身的正当性。
我们只能建议,创建一个 Rule Item,比如名叫 Block 或者什么,集中、自己管理即可。
使用LazyHosts后,网页就无法访问了?
LazyHosts 本身会自动修改本地的 DNS 服务指向,退出软件的时候,自动恢复原有的 DNS 服务指向。
但这个过程如果发生意外,可能会产生 LazyHosts 退出后,而本地的实际 DNS 服务器还指向 127.0.0.1,会导致网页访问不了 (实际上是域名的解析出问题了)。
这个时候,你需要自己手工修改 DNS 服务指向,恢复系统自动获取DNS的状态。或者重启 LazyHosts。
Mac上Chrome能打开网页,但是Safari却不能了?
这个跟LazyHosts应该没有关系。是Mac某个版本自身的问题,其表现为走系统默认网络服务的一些App,比如Safari、邮箱App等,实际没有任何响应。
此时,即使退出LazyHosts,也没有任何意义……
但也先不着急重启,尝试下LazyHosts在托盘按钮(顶部菜单的ICON)上的Tools
下的重启网络
。如果这个操作没有带来任何变化,那么开始重启吧……
电脑通过 USB 连接上网时,LazyHosts 无效?
是的。
貌似是因为 Mac 上通过 USB 连接上网的时候,并不能为这个 network 设置 DNS 导致的。
添加根证书信任的问题
如果没有将 LazyHosts 自动生成的随机根证书安装并信任,那么访问 HTTPS 网址中转的时候,浏览器会有风险提示。
一般 LazyHosts 会尝试自动添加这个证书到系统中,如果出现风险提示,则是自动添加失败,需要手工进行添加。从 LazyHosts 中导出(菜单点击Tools
可见)根证书后,然后安装,并确保添加、存储到受信任的根证书颁发机构
。