SwitchHosts! v0.2 版发布

去年写了一个快速切换 hosts 的软件 SwitchHosts!,这一年里接到很多反馈意见,综合考虑了大家的意见以及自己能投入的时间之后,我终于在它的 v0.1 版发布马上一周年之际发布了 v0.2 版。

新版本 SwitchHosts! 的截图见下面:

SwitchHosts! v0.2

项目源码见:https://github.com/oldj/SwitchHosts
下载:http://oldj.github.io/SwitchHosts/

这次升级主要的改进有:

  1、改进界面;
  2、添加在线方案,允许用户引入网络上的 hosts 方案;
  3、支持方案导入及导出,方便分享自己的配置方案;
  4、优化语法高亮控件,修复渲染长 hosts 时闪屏的问题;
  5、修复程序在中文目录下无法运行的问题;
  6、支持 hosts 排序(拖拽排序);

希望大家喜欢这个新版本,也欢迎继续提意见!:-)

(2015-12-20 更新:SwitchHosts!第三版已发布。

44 Replies to “SwitchHosts! v0.2 版发布”

    1. SwitchHosts! 在打开 hosts 文件时会尝试自动检测编码,保存时会统一使用用 utf-8 编码保存。可能是打开你的那个文件时检测编码出错了?这个应该是一次性的,你新写的中文注释应该不会再显示为乱码了。

  1. 非常喜欢新版本,老的版本闪得那是一个厉害,不影响使用,但是太闪了。新版棒极了!!但是,还是没有我要的功能,就是common host的功能,所以我fork了一个出来,自己加了这个功能。想请教一下楼主,怎样制作Windows绿色版,还望赐教,不胜感激。源代码地址为:https://github.com/charlestang/SwitchHosts

    1. 那个Common hosts的功能我也想过,但是没想好交互怎么设计,所以这个版本没做,我先参考下你的分支,嘿嘿。:-)
      制作成exe文件可以使用py2exe或pyInstaller,我用的是pyInstaller。
      比如你的pyInstaller目录在 D:toolspyinstaller-2.0,SwitchHosts!源码在 D:studioSwitchHosts,那么只需要在命令行下使用类似下面的命令就可以打包成绿色exe了:
      D:toolspyinstaller-2.0> pyinstaller.py -w -F –icon=D:studioSwitchHostsuiimgicon_0.ico –name=SwitchHosts –out=D:studioSwitchHostsdist D:studioSwitchHostssrcSwitchHosts.py

  2. 我今天用py2exe折腾了一中午,硬是没有弄成功,太烦了,缺这缺那的。老说我缺少MSVCP90.dll,然后exclude dll,还是不行,后来下了个GUI2Exe,就是py2exe的UI版本,结果编出来了,但是不能运行……崩溃啊……希望尽快看到原作的功能,这样我这个山寨版就可以下岗了。我做完才看明白,原来host文件可以从云端下发,太先进了。我顿时就后悔了,应该把common host的功能设计成既支持云端,又支持本地,或者干脆用两个。那样更灵活。唉……等我学会打包再试试。

  3. 提示无权限修改 hosts 文件。程序在 D 盘根目录下,系统是 win 8 x64 英文版。
    在 Win 7 下没有权限问题么?还是用之前都要手动获取 hosts 文件权限?

      1. 哎,老大牵头一下嘛,行情您最了解了,不然这个功能意义不是不大?

      2. 我有个建议,直接从github上已有的hosts文件的raw文件下载。
        现在填写一个raw文件提示url无法访问,我翻了一下源码,发现程序在判断url是否存在的时候,用的是head方式:connection.request(“HEAD”, path)
        应该是github不接受head请求,希望这个地方改进下。
        我是搞java的,不会python,但是能看懂。

  4. Python开发的必然好啊,可惜生态圈太小。。顶作者!
    PS: 一年前我开发过一个Python应用程序,底层逻辑用py棒极了,可是前台展示却成了问题。当时我是用的Qt GUI,真的很受限制。wx一开始考虑过,但是总觉得不够漂亮就没去用。现在想通了,既然大家都往web里钻,当时真的应该做成个webapp的

    1. WebAPP也有很多限制,比如切换系统hosts这个功能好像就很难做成WebAPP。貌似TideSDK不错,能兼有WebAPP的漂亮和Python的强大,不过和wx以及pyQt一样,打包之后的尺寸比较大。

      1. 嘿嘿,我是说直接写一个简单的本地http server(或web service + 前台js)就好了,比如用web.py。这样你点击托盘图标的时候只要直接打开http://127.0.0.1:2012/就好了。

        webApp对本地基本无权限,就算上了HTML5也无济于事。

  5. 在WIN8下,单击托盘的图标界面弹不出来,要双击才弹出来,建议增加全局自定义快捷键切换到指定方案!

      1. 最新版本的 SwitchHosts! 里,左边的列表最上面有一个“公用 hosts”选项,点击就可以看到公用 hosts(common hosts)内容,然后填写内容就可以了。

        应用某个 hosts 方案时,公用 hosts 的内容会被自动添加在最前面。

      2. 刚立马去更新了,非常感谢作者,这是另一种的帮助文档,也是一个很好用的工具,非常感谢,向你致敬

  6. 您好!我是一名Ubuntu爱好者,接触Python不多,想要在Ubuntu 12.10上运行SwitchHosts! v0.2,从git上下载了您的程序。但无论是直接用Python 2.7.3直接运行SwitchHosts.py,还是根据提示先用pyinstaller打包后再运行,都有错误提示。
    其中,直接运行SwitchHosts.py的提示为:
    Traceback (most recent call last):
    File “SwitchHosts.py”, line 127, in
    main()
    File “SwitchHosts.py”, line 123, in main
    sh.run()
    File “SwitchHosts.py”, line 56, in run
    taskbar_icon=self.taskbar_icon,
    File “/home/dukeant/SwitchHosts/src/libs/MainFrame.py”, line 71, in __init__
    title or self.default_title, pos, size, style)
    File “/home/dukeant/SwitchHosts/src/libs/ui.py”, line 147, in __init__
    self.m_textCtrl_content = self.makeTextCtrl(bSizer6)
    File “/home/dukeant/SwitchHosts/src/libs/ui.py”, line 224, in makeTextCtrl
    txt_ctrl.SetMaxLength(0)
    AttributeError: ‘HostsCtrl’ object has no attribute ‘SetMaxLength’

    用pyinstaller打包的命令为:
    python pyinstaller.py -w -F –icon=/home/dukeant/SwitchHosts/src/img/logo.ico –name=SwitchHosts –out=/home/dukeant/SwitchHosts/src/dist /home/dukeant/SwitchHosts/src/SwitchHosts.py
    运行打包生成的程序,报错为:
    Traceback (most recent call last):
    File “”, line 127, in
    File “”, line 123, in main
    File “”, line 56, in run
    File “/home/dukeant/SwitchHosts/src/dist/build/pyi.linux2/SwitchHosts/out00-PYZ.pyz/libs.MainFrame”, line 71, in __init__
    File “/home/dukeant/SwitchHosts/src/dist/build/pyi.linux2/SwitchHosts/out00-PYZ.pyz/libs.ui”, line 147, in __init__
    File “/home/dukeant/SwitchHosts/src/dist/build/pyi.linux2/SwitchHosts/out00-PYZ.pyz/libs.ui”, line 224, in makeTextCtrl
    AttributeError: ‘HostsCtrl’ object has no attribute ‘SetMaxLength’
    (dukeant是我自己的账户名)
    不知道哪里出了问题,求教!

      1. Google了一下,还是不清楚如何查看wxPython版本?我找了一下,与wxPython有关的,我安装了python-wxtools 2.8.12.1-11ubuntu3.1。

      2. 在终端里输入类似这样的命令就可以看wxPython的版本了:

        python -c “import wx;print(wx.__version__)”

        我的是2.9.4.0版。用到了一些新特性,需要2.9版才能运行。

      3. 的确,我用的是Ubuntu默认软件源里的2.8.12.1。下载了wxWidgets-2.9.4,正在研究如何安装……

  7. 我看了下在线配置方案,对于http下载这些Host信息,对服务器有什么要求吗?
    我用一个txt去存放配置文件,结果URL无法访问的问题
    但是我在浏览器里面又能正常打开,请问这是什么问题。有没有对在线配置方案有更加具体的介绍呢?

    1. 看了一下,问题应该是这样:

      在下载在线URL之前,SwitchHosts!会先尝试快速地判断一下这个URL是否存在,因为如果直接去打开URL,并且这个URL刚好打不开的话,用户就会等待很久。

      判断URL是否存在的方法是httpExist(url),它实际上是向站点的域名(根目录)发一个HEAD请求。你给的第一个链接没问题,但第二个链接的域名(https://raw.githubusercontent.com)不能直接访问,会返回404状态,所以SwitchHosts!以为这个链接无法访问。

      简单来说是一个代码上的缺陷,我会在下一个版本修复,感谢反馈!

      顺便问一下,你用的是Windows版还是Mac版啊?

  8. 你好,首先感谢你和你的SwitchHosts。
    这两天用SwitchHosts时遇到了点问题,一直提示hosts未能成功切换,以前都是正常的,过完年回来就不行了。
    版本是0.1.6.1755

      1. 好的,感谢,我已经下载了最新的版本了。不过有点麻烦的事情,就是每次都需要使用管理员打开软件,双击打开软件无法修改hosts,我的系统是win7

      2. Windows系统上需要有管理员权限的程序才能修改系统hosts文件,似乎没有什么好的办法……

        一个不太好的方法是修改系统hosts文件的权限,让所有人都可读写。不过这样可能会带来安全隐患,一般不推荐这么做。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s