V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
quietjosen
V2EX  ›  macOS

iHosts - 修改神器 (Mac)

  •  
  •   quietjosen · 2016-04-18 09:16:17 +08:00 · 18428 次点击
    这是一个创建于 3170 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我需要 iHosts 吗?

    如果你需要修改 /etc/hosts 来切换开发环境,甚至已经在用脚本、工具来编辑 Hosts ,你真的需要试试 iHosts.

    iHosts 怎么用?

    一般的 Hosts 编辑工具,都是将 Hosts 文件进行整体替换。而 iHosts 管理的粒度更小,可以仅仅更新其中的一部分。

    比如,如果你需要在开发环境(如 192.168.1.80 )、测试环境(如 192.168.1.88 )之间切换,你可以:

    • 在 iHosts 中新建一个分组。

    • 创建“开发”节点,指定 192.168.1.80 对应的域名为 mydomain.com.

    • 创建“测试”节点,指定 192.168.1.88 对应的域名为 mydomain.com.

    • 然后,在开发时可以保持使用 mydomain.com 不变,直接在 iHosts 中一键切换开发、测试环境。

    当然,实时查看 /etc/hosts 这样的功能也不能少:

    沙盒应用与权限

    由于 iHosts 即将上架 Mac App Store ,所以 iHosts 采用沙盒模式。进而,你需要在首次运行时,允许 iHosts 访问 /etc/hosts 文件,并且在 Terminal 中通过命令允许当前用户修改 /etc/hosts 文件。

    虽然稍微有些麻烦,但是更安全。如果是直接弹一个让我输入管理员密码的框,我还是有些慌的,尤其是前不久的 Transmission 事件...

    有点意思,怎么玩?

    废话不说,直接 >>> 点我免费下载 <<<

    不过,计划上架 Mac App Store 后会有收费版本,免费版本会有一些功能限制。不过没关系,可以先试试,如果你都碰不到受限的地方,说明免费版对你绝对够用啦。

    欢迎体验,围观改变世界。

    70 条回复    2017-08-27 09:42:50 +08:00
    Strikeactor
        1
    Strikeactor  
       2016-04-18 09:35:47 +08:00   ❤️ 1
    挺好玩儿,不过“你需要在首次运行时,允许 iHosts 访问 /etc/hosts 文件,并且在 Terminal 中通过命令允许当前用户修改 /etc/hosts 文件”这个感觉更麻烦啊。。
    一定要设置成当前用户改 hosts 不用输密码的话, Alfred 里一个 sed 就可以切了,这玩意安全性有点问题
    wangcheng
        2
    wangcheng  
       2016-04-18 09:41:39 +08:00   ❤️ 1
    建议编辑器使用等宽字体。
    quietjosen
        3
    quietjosen  
    OP
       2016-04-18 09:43:31 +08:00
    @Strikeactor 恩, hosts 有很多修改方式,直接使用 sed 操作 /etc/hosts 文件是需要点技术了,如果用别人封装好的插件会好些。但如果每次修改都需要输入密码就不太方便,如果将密码保存到钥匙串里会好些。但总感觉保存密码这事有点不放心...

    安全和便利确实是矛盾的,是保存 Root 密码安全,还是允许当前用户修改 Hosts 更好,往深了想可能不一定呢。
    quietjosen
        4
    quietjosen  
    OP
       2016-04-18 09:43:58 +08:00
    @wangcheng 恩,收到,感谢。
    quietjosen
        5
    quietjosen  
    OP
       2016-04-18 09:46:51 +08:00
    @Strikeactor 还是要感谢回复;我也是自己需要、周围的开发朋友也有类似的需求,才想到干脆折腾个工具出来方便大伙,这才有了 iHosts ;

    另外,只是有首次运行时才有设置的必要,之后都不再需要。而且,是因为有沙盒的限制,才需要让用户拖动选择 /etc/hosts 文件。又是安全与便利的矛盾啊...
    newbieo0O
        6
    newbieo0O  
       2016-04-18 09:51:30 +08:00
    shmilyin
        7
    shmilyin  
       2016-04-18 09:51:53 +08:00
    建议加个更新 dns 缓存的功能
    quietjosen
        8
    quietjosen  
    OP
       2016-04-18 09:59:36 +08:00
    @newbieo0O 恩,这个之前也用过,但有个严重的问题:需要我在它的 App 里输入当前账户的密码,一般这种情况我是拒绝的。

    还有个使用上的便利问题:不支持分组功能。也就是说,我在激活一个选项时,很可能想禁用另一个选项。这样的需求在这个 App 里要点 2 次。
    quietjosen
        9
    quietjosen  
    OP
       2016-04-18 10:00:10 +08:00
    @shmilyin 看来是资深啊;这个已经在计划中的,近期就会搞。
    indexof
        10
    indexof  
       2016-04-18 10:03:42 +08:00
    赞啊, 编辑框增加配色就好了,
    quietjosen
        11
    quietjosen  
    OP
       2016-04-18 10:05:24 +08:00
    @indexof 恩恩,已经在计划中了...
    xwartz
        12
    xwartz  
       2016-04-18 10:25:49 +08:00
    支持
    quietjosen
        13
    quietjosen  
    OP
       2016-04-18 10:29:11 +08:00
    @xwartz 感谢 ^_^
    v1024
        14
    v1024  
       2016-04-18 11:15:21 +08:00   ❤️ 1
    颜值不错,马克。
    quietjosen
        15
    quietjosen  
    OP
       2016-04-18 11:17:27 +08:00
    @v1024 被赞颜值,诚惶诚恐...
    Strikeactor
        16
    Strikeactor  
       2016-04-18 11:34:41 +08:00
    @quietjosen 保存 root 密码这事是肯定不能干的,不过如果是自己的脚本的话可以用 SUID 来让普通用户运行时临时拥有 root 的权限。让当前用户可以修改 hosts 的主要问题在他运行的恶意程序也可以在完全没有提示的情况下修改 hosts 进行中间人,这个问题还是比较严重的。

    GoAgentX 和 CleanMyMac 3 为了解决安全与便利的矛盾安装了 Helper ,在首次运行输入密码后程序以后的操作都可以拥有较高权限。可以参考一下 http://www.bornsleepy.com/bornsleepy/os-x-helper-applications 。不过你是要上架的,就不知道这个属不属于商店的条约禁止的了。
    mopvhs
        17
    mopvhs  
       2016-04-18 11:35:31 +08:00
    棒呆,期待轮子更圆一点

    现在在用 Gas Mask https://github.com/2ndalpha/gasmask
    v1024
        18
    v1024  
       2016-04-18 11:56:32 +08:00
    @quietjosen 因为基本都是原生 UI 和布局逻辑, 习惯了 osx 的会很舒服,比有些人自己“设计”的强多了。
    quietjosen
        19
    quietjosen  
    OP
       2016-04-18 12:04:40 +08:00
    @Strikeactor 恩,你说的有道理,我会再认真考虑。

    Helper 的方式有这样的问题:
    1 ,应该是不能上架的;一些上架的 App ,都是让用户到其官网手动下载 Helper (不受沙盒、 Mac App Store 约束),可想有些麻烦。
    2 ,其实还是相当于让一个 App 拥有超级权限。可我怎么保证这个 App 不作恶呢?即使现在不作恶,以后呢?即使自己不作恶、会不会像 Transmission 一样被利用?这也是有安全风险的。

    风险更低的做法是:手动使用 sudo 改 hosts ;但明显不便利,矛盾啊。。。
    quietjosen
        20
    quietjosen  
    OP
       2016-04-18 12:05:14 +08:00
    @mopvhs 恩好啊,哪里不圆就来踩哦~
    quietjosen
        21
    quietjosen  
    OP
       2016-04-18 12:06:10 +08:00
    @v1024 哈哈,我也是这样想的,这样缺乏 UI 设计功底的缺点反而变成优势啦 ^_^
    Suclogger
        22
    Suclogger  
       2016-04-18 12:12:11 +08:00
    我觉得 switchhosts 已经很完美了
    https://github.com/oldj/SwitchHosts
    quietjosen
        23
    quietjosen  
    OP
       2016-04-18 12:57:40 +08:00
    @Suclogger 上面也有朋友提了,我觉得主要是有 2 个问题: 1 ,需要在 App 里输入 root 密码; 2 ,不能在一个分组内仅激活一项,需要拖动把另一项关闭。
    ewBuyVmLZMZE
        24
    ewBuyVmLZMZE  
       2016-04-18 13:06:07 +08:00
    一直在用 Gas Mask
    quietjosen
        25
    quietjosen  
    OP
       2016-04-18 13:19:50 +08:00
    @syhily Gas Mask 是老牌了;主要它的切换单位是整个文件,觉着有些情况下不方便。
    iMouseWu
        26
    iMouseWu  
       2016-04-18 14:09:05 +08:00
    我一直在用的是 switchHosts.主要是它的 UI 其实看上去还是比较舒服的
    但是像 @shmilyin,DNS 缓存真的是硬伤,MAC 下每次切一个 hosts 要等一段时间才能完全切过去
    boywang004
        27
    boywang004  
       2016-04-18 14:16:41 +08:00   ❤️ 1
    一直用 GasMask 的 Local/Combine 方式组合,也很方便。可以控制小粒度的切换。你说整个文件切换大概是以前旧版本不支持 Combine 方式的时候吧?

    不管怎样,期待轮子更圆更棒,我们就切过去!
    weihongchang
        28
    weihongchang  
       2016-04-18 14:18:59 +08:00
    很方便, 可以不干扰系统文件,那么麻烦
    kikyous
        29
    kikyous  
       2016-04-18 14:34:00 +08:00   ❤️ 1
    需要 switchHosts 一样的方案多选的功能
    kikyous
        30
    kikyous  
       2016-04-18 14:34:26 +08:00
    还有远程载入 hosts 功能
    quietjosen
        31
    quietjosen  
    OP
       2016-04-18 14:46:53 +08:00
    @iMouseWu 颜既正义。不过,不同人的偏好的颜色还是有些不一样,比如上面的 v1024 同学就比较喜欢和系统 UI 风格一致的方式。
    weihongchang
        32
    weihongchang  
       2016-04-18 14:46:53 +08:00
    好像不支持 粘贴功能? 我都是敲进去的!
    http://7xsthm.com2.z0.glb.clouddn.com/ihosts.png
    quietjosen
        33
    quietjosen  
    OP
       2016-04-18 14:48:54 +08:00
    @boywang004 Gas 是有组合的方式,有一点点味道不一样,它是先组合、再使用;并且,当节点多时,组合方式就会很多,反而不麻烦。

    iHosts 支持“实时组合”,也就是说,你在菜单中通过选中实现组合的时候,就已经自己激活了。也可以随意的组合。
    quietjosen
        34
    quietjosen  
    OP
       2016-04-18 14:49:26 +08:00
    @weihongchang 这个,有点没太理解,到底是方便还是麻烦呢?
    quietjosen
        35
    quietjosen  
    OP
       2016-04-18 14:50:46 +08:00
    @kikyous iHosts 的灵活就在于方案组合哦;既可以把相关节点放在同一分组中,也可以只允许一个分组中只激活一个选项。当然,也是可以创建多个分组的。
    quietjosen
        36
    quietjosen  
    OP
       2016-04-18 14:52:22 +08:00
    @weihongchang 真是不好意思,还让你一个个打字,惭愧。。。

    因为是托盘程序,没有系统菜单,也就没有菜单中的“粘贴”快捷键;目前,可以先使用鼠标右击、然后粘贴。下个版本会增加编辑 Hosts 时的菜单支持。
    weihongchang
        37
    weihongchang  
       2016-04-18 15:09:18 +08:00
    @quietjosen 方便了啊,可以多选,自由组合,
    ![]( http://7xsthm.com2.z0.glb.clouddn.com/ihosts2.png)
    weihongchang
        38
    weihongchang  
       2016-04-18 15:10:59 +08:00
    weihongchang
        39
    weihongchang  
       2016-04-18 15:13:24 +08:00
    Micky
        40
    Micky  
       2016-04-18 15:30:35 +08:00
    r#39 @weihongchang 我比较好奇你托盘上的都是什么应用, 4 个耳朵的圆形 、拐弯箭头、纸飞机……看起来很棒的样子
    weihongchang
        41
    weihongchang  
       2016-04-18 15:42:06 +08:00
    quietjosen
        42
    quietjosen  
    OP
       2016-04-18 15:44:50 +08:00
    @weihongchang 哈哈,吓我了一跳;方便就好 ^_^
    scgy5555
        43
    scgy5555  
       2016-04-18 17:32:15 +08:00
    额,什么情况下必须用 hosts 而不用 nginx ?
    duangaduang
        44
    duangaduang  
       2016-04-18 17:59:43 +08:00
    升级账户可以添加更多节点,这么快就不够我用了?
    zander
        45
    zander  
       2016-04-18 18:01:39 +08:00
    gas mask 用了很久了。
    quietjosen
        46
    quietjosen  
    OP
       2016-04-18 18:11:01 +08:00
    @scgy5555 这个,看每个人的开发环境和习惯吧。
    quietjosen
        47
    quietjosen  
    OP
       2016-04-18 18:11:17 +08:00
    @duangaduang 哈哈,准资深用户嘛。
    quietjosen
        48
    quietjosen  
    OP
       2016-04-18 18:11:36 +08:00
    @zander 所以可以试试新的啦 ^_^
    iCantus
        49
    iCantus  
       2016-04-18 18:25:30 +08:00
    gas mask 和 switch hosts 都很不错,两者能够综合就好了。 gas mask 有托盘,会时时监测 hosts 的改变,这点很好。 switch hosts 是可以同时启用多个配置,提供开关,这点也很好。而目测楼主的轮子造的不好。
    oldj
        50
    oldj  
       2016-04-18 18:38:49 +08:00
    @quietjosen SwitchHosts! 作者飘过。

    需要输入密码这个的确是个问题,不过其实你也可以修改 /etc/hosts 文件的权限, SwitchHosts! 会先尝试写,写入失败才会请求密码。另外,它是开源的,熟悉编程的用户可以检查它的代码实现,确保没有恶意。:-)
    quietjosen
        51
    quietjosen  
    OP
       2016-04-18 18:39:27 +08:00
    @iCantus 听起来有超级亏。 iHosts 就是把 Gas Mask 和 Switch Hosts 结合了呀。比如有托盘,比如可以同时启用多个配置(选中菜单中某一项就可以了),比如还可以分组。唯一没有的就是监测 Hosts 变化,不过也会考虑的。

    别只目测呀,免费下来玩玩呗。当然,轮子还是要继续打磨圆的,虚心接受广大人民群众的改进意见。
    quietjosen
        52
    quietjosen  
    OP
       2016-04-18 18:43:29 +08:00
    @oldj 握爪!

    明白你的意思,不过如果没有提示的话,我估计很多人不知道自己改权限这事,所以我在 iHosts 中提示用户这么做。麻烦了一点,但求安全,还有就是希望能上架 Mac App Store (再祈祷一次)

    一起造好这个轮子 ^_^
    Yien
        53
    Yien  
       2016-04-18 19:39:32 +08:00 via iPhone
    感谢分享!
    quietjosen
        54
    quietjosen  
    OP
       2016-04-18 20:48:55 +08:00
    @Yien 嘿嘿,不客气 :)
    jinphen
        55
    jinphen  
       2016-04-19 09:46:23 +08:00   ❤️ 1
    建议可以设置图标,这样只要看对应的图标就知道当前 host 是哪个了
    quietjosen
        56
    quietjosen  
    OP
       2016-04-19 10:40:34 +08:00
    @jinphen 这个点子不错,收下了,谢。
    quietjosen
        57
    quietjosen  
    OP
       2016-05-03 02:04:50 +08:00
    @wangcheng 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    已经改成等宽字体了,觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        58
    quietjosen  
    OP
       2016-05-03 02:05:08 +08:00
    @indexof 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        59
    quietjosen  
    OP
       2016-05-03 02:05:17 +08:00
    @xwartz 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        60
    quietjosen  
    OP
       2016-05-03 02:05:27 +08:00
    @v1024 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        61
    quietjosen  
    OP
       2016-05-03 02:05:44 +08:00
    @mopvhs 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        62
    quietjosen  
    OP
       2016-05-03 02:06:03 +08:00
    @weihongchang 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        63
    quietjosen  
    OP
       2016-05-03 02:06:43 +08:00
    @kikyous 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        64
    quietjosen  
    OP
       2016-05-03 02:07:17 +08:00
    @Yien 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    quietjosen
        65
    quietjosen  
    OP
       2016-05-03 02:10:06 +08:00
    @jinphen 已经上架 Mac App Store: https://itunes.apple.com/cn/app/id1102004240?ls=1&mt=12
    觉得不错的话,帮忙给个好评哦,谢谢 ^_^
    daveze
        66
    daveze  
       2017-08-26 10:49:24 +08:00
    iHosts 有时会跑满一个 cpu,导致风扇呼呼作响;
    出现过程大概是:在启动 ihosts 一段时间后,然后让电脑睡眠较长一段时间,再开启电脑,就有这个问题。
    quietjosen
        67
    quietjosen  
    OP
       2017-08-26 13:32:49 +08:00
    @daveze 你的系统版本是?已知这个问题:鼠标移至 iHosts 菜单出现 Hosts 预览窗口后,有概率会出现类似问题,技术上可能是在菜单弹出时显示窗口引起的。你是否有类似操作?
    daveze
        68
    daveze  
       2017-08-26 23:28:56 +08:00
    @quietjosen 确实有这样的操作
    daveze
        69
    daveze  
       2017-08-26 23:30:24 +08:00
    @quietjosen 系统版本是 10.12.6
    quietjosen
        70
    quietjosen  
    OP
       2017-08-27 09:42:50 +08:00
    @daveze 我都不确定是我的用法有问题,还是系统有 Bug ;暂时先尽量减少这样的操作吧,我甚至都想屏蔽这个操作。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1048 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:23 · PVG 07:23 · LAX 15:23 · JFK 18:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.