libQtShadowsocks项目介绍和备忘

shadowsocks应该是继各种VPN和GoAgent之后,目前最受欢迎的代理协议了。VPN不灵活,而且能够被防火墙识别特征,能够轻松封锁,GoAgent则面临可用IP越来越少的困境。懒得介绍原项目了,不知道shadowsocks的自己去Google查吧。

libQtShadowsocks就像名字暗示的一样,是一个Library(库),用Qt(C++)写的,实现了shadowsocks的各项功能。

最初的时候我只计划写客户端这一块,因为libQtShadowsocks的首要目的就是实现客户端方面的shadowsocks功能然后融入到Shadowsocks-Qt5项目中,以便摆脱用shadowsocks-libev当library带来的各种问题。不过后来翻了一下各个port的源码,发现服务端和客户端的差别很小,相当于逆操作而已,于是定下了要支持服务端的目标,今天这个目标已经实现了,所以回来码了这篇文章。

你可能在想,这个项目和你有啥关系?

好样的……如果你是个开发者,想写个shadowsocks的前端或者扩展shadowsocks,现在只需要调用libQtShadowsocks就行了,省了很多事。如果你告诉我shadowsocks-libev也可以当library用,那我要说“你是没用过!自己去试试看再发言吧。”

如果你是一个普通的端用户(end user),那么这个项目则提供了一个替代选择(alternative),因为子项目shadowsocks-libqss是个使用libQtShadowsocks的示例程序,即能当local用也能当server用。给你除了Python、C、Go、Nodejs之外第四个选择!(Nodejs版已死)。

好的,那么目前有哪些特性?

  • 双向兼容其它shadowsocks ports(不兼容就不能叫shadowsocks了……)
  • 支持几乎全部加密方式(支持RC4-MD5,但是不支持RC4)
  • Botan加密库(目前唯一一个既不使用OpenSSL也不使用PolarSSL也不使用libsodium的shadowsocks版本)
  • 高速度!低占用!
  • 原生同时又跨平台(Qt)!
  • C++!!!shadowsocks唯一的C++ port!

在哪里?

代码托管在GitHub,GPLv3LGPLv3许可证,地址戳我

 

如果你是Windows平台只打算用客户端功能的用户的话,用我的Shadowsocks-Qt5就好了!

Comments

36 responses to “libQtShadowsocks项目介绍和备忘”

  1. wgmin avatar
    wgmin

    请问windows版如何设置一个端口加密码只能一个用户连接,或者说如何安装多用户管理系统?也许没有加入这些功能?

    1. 真 avatar

      现在好像就是一个端口只能连接一个用户。因为我为了手机也能用专门新开了一个。

    2. ckrissun avatar
      ckrissun

      没有用户管理系统,只是一个支持shadowsocks协议的代理软件库

  2. 学生 avatar
    学生

    呃。。https://github.com/shadowsocks/libQtShadowsocks/releases/download/v1.8.4/shadowsocks-libqss-v1.8.4-win64.7z
    这个还有么~现在下载不了了,

    github上也都是代码。。不会编译。。

    可以请你发一份给我么。

    1. librehat avatar

      你就不能下载1.9.0吗?

  3. 也爱英雄 avatar
    也爱英雄

    终于搞定服务器安装了
    留个笔记纪念一下
    建设我这样的小白使用乌班图系统,比社区系统简单太多了。
    我在ubuntu 15.10下面完成的

    一、编辑安装源
    vi /etc/apt/sources.list

    15.04在最后复制
    deb http://ppa.launchpad.net/hzwhuang/ss-qt5/ubuntu vivid main
    deb-src http://ppa.launchpad.net/hzwhuang/ss-qt5/ubuntu vivid main

    15.10在最后复制
    deb http://ppa.launchpad.net/hzwhuang/ss-qt5/ubuntu wily main
    deb-src http://ppa.launchpad.net/hzwhuang/ss-qt5/ubuntu wily main

    二、更新软件源
    apt-get update
    apt-get upgrade

    三、安装环境及软件
    apt-get install qt5-qmake qtbase5-dev libbotan1.10-dev
    apt-get install dpkg-dev
    apt-get install libqtshadowsocks
    apt-get install shadowsocks-libqtshadowsocks

    全部安装成功,没有报错:

    四、出现的问题?
    配置文件在什么地方………..
    vi /etc/shadowsocks.json
    vi /etc/config.json
    编辑配置文件

    如何自启动?貌似每次服务器启动后需要手动启动服务端啊

  4. 来邦归来2 avatar
    来邦归来2

    另外SS客户端的负载均衡这个功能很好,希望大大后面的版本也能提供。就是有2-3个SS账号的时候,可以自动均衡用流量。

  5. 来邦归来 avatar
    来邦归来

    我在Ubuntu 15.03上面
    第一步sudo apt-get install qt5-qmake qtbase5-dev libbotan1.10-dev正常。
    第二步apt-get install dpkg-dev
    第三步dpkg-buildpackage -uc -us -b报错了。另外dpkg -i格式怎么用?

  6. tiger avatar
    tiger

    你好!首先感谢您能开发出这个作品,我的是Debian 8.2,在编译中,我也遇到了“Project ERROR: botan-1.10 development package not found”的问题。

    下面是相关信息输出:
    —————–
    root@localhost:/home/abc/libQtShadowsocks-1.8.0# make
    cd lib/ && ( test -e Makefile.libQtShadowsocks || /usr/bin/qmake /home/abc/libQtShadowsocks-1.8.0/lib/libQtShadowsocks.pro -o Makefile.libQtShadowsocks ) && make -f Makefile.libQtShadowsocks
    Project ERROR: botan-1.10 development package not found
    Makefile:39: recipe for target ‘sub-lib-libQtShadowsocks-pro-make_first-ordered’ failed
    make: *** [sub-lib-libQtShadowsocks-pro-make_first-ordered] Error 3
    —————–
    root@localhost:/# aptitude search botan
    i botan1.10-dbg – multiplatform crypto library (debug)
    i A libbotan-1.10-0 – multiplatform crypto library
    i libbotan1.10-dev – multiplatform crypto library (development)
    root@localhost:/#
    —————–
    root@localhost:/# uname -a
    Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux
    root@localhost:/#
    —————–

    谢谢了 !!!

    1. 蚂蚁 avatar
      蚂蚁

      我也是这个问题,搞了一下无没有搞定

  7. Alexyyb avatar
    Alexyyb

    我在Ubuntu 14.04上编译,提示:
    Project ERROR: botan-1.10 development package not found
    这是什么原因?我已经运行过了
    sudo apt-get install qt5-qmake qtbase5-dev libbotan1.10-dev dpkg-buildpackage -uc -us -b
    PPA版本的可以安装,但是无法在ss-qt5无法在远程登录下运行。

    1. ckrissun avatar
      ckrissun

      试试 安装 pkg-config

  8. smounives avatar
    smounives

    请问用Ubuntu 14.04用ppa源安装了libQtShadowsocks之后该怎么启动呢?配置文件默认在哪呢?

    1. smounives avatar
      smounives

      = =我自己找到了,在/usr/bin/shadowsocks-libqss ,默认好像没有config.json配置文件?我自己创建了一个,然后还想问一下,怎开启UDP Proxy ?

      1. librehat avatar

        UDP是自动开启的(和Python版一样)。

        1. smounives avatar
          smounives

          谢谢,另外我对比了一下Python版、libev版和您的libQtShadowsocks,Python和libev版速度差不多的,可是libQtShadowsocks版速度却差很多,同一个Server IP,同样的加密方式,甚至用libQtShadowsocks版下载Google Play上面的东西完全下不动,另外两个版本正常下载,这是为什么?

          1. librehat avatar

            libQtShadowsocks做服务端使用的时候存在连接中断的问题(和速度没关系),做客户端没有问题的。

          2. smounives avatar
            smounives

            这样啊,那有没有计划以后改进服务器端呢?_(:3」∠)_

  9. J.W avatar
    J.W

    请问shadowsocks-libev有什么小问题呢?不用Qt的话可以调用你这个库吗?

    1. librehat avatar

      shadowsocks-libev的库名字是libshadowsocks,现在不太清楚还有没有这个问题,去年的时候调用在Windows平台容易出现内存错误。而且要求调用者必须在子线程调用(因为一旦启动就进入事件循环,只能在主线程终止该子线程)。
      libQtShadowsocks依赖Qt(并且需要Qt的事件循环),不认为可以在plain C++上用。

  10. 御宅暴君 avatar

    瞄了一眼代码,果然还是要有点 Qt 背景……

    1. librehat avatar

      恩,其实改用C++的boost库也是可以的,但是反正都是要用第三方库,Qt跨平台还方便些。

  11. 左忠诚 avatar
    左忠诚

    我编译了botan-1.10.9,但是在编译libQtShadowsocks-1.5.0的时候,会报错:
    Project ERROR: botan-1.10 development package not found
    make: *** [sub-client-shadowsocks-libqss-pro-make_first-ordered] Error 3
    我的环境是64bit redhat enterprise 6.6,qt5.4。
    请问这可能会是什么原因?该怎么解决?谢谢

    1. librehat avatar

      说明你的botan没有安装到正确的目标位置,很有可能被装到/usr/lib下了,Fedora(所以Red Hat估计也如此)64位的library必须装到/usr/lib64下

      1. JQC avatar
        JQC

        想问问在osx上如何解决botan的问题,无论我讲botan安装到哪里,qmake都会报错

        1. librehat avatar

          你可以把Botan安装到Qt的目录或者GCC的目录里。

          1. 菜鸟 avatar
            菜鸟

            求教如何改变Botan安装目录,我用prefix=/usr/lib64可是还是会提示botan-1.11 development package not found
            实在想不出别的办法了。

  12. bingal avatar
    bingal

    你好,请问,libQtShadowsocks项目依赖的botan是什么版本的?我编译了Botan-1.11.15和Botan-1.10.9,再编译libQtShadowsocks都有问题。我的环境是win8、qt5.4。

    1. librehat avatar

      已经邮件回复你了啊,你的问题在于用的动态链接的Qt库编译的,默认libQtShadowsocks在Windows平台上是静态链接。需要编辑project文件去掉QSS_STATIC

      1. 烟寒 avatar
        烟寒

        请问这个project文件在哪里?(我是新手。。。)

  13. Gugg avatar
    Gugg

    Instead of Ramnode VPS, why not try AWS free tier EC2 instance
    it’s free, it’s speedy and it can also help people in china to get outside of the firewall via x2go

    1. librehat avatar

      AWS has only one-year free trial. After that, the price is higher than Ramnode VPS.

  14. ChinaMoe avatar

    我还以为是腾讯语音的ShadowSocks组件…

    1. librehat avatar

      任何熟悉桌面程序开发的人都不会把此Qt当成彼Qt吧…腾讯的语音软件名字也是醉了

  15. 独行猫儿 avatar

    唉,最近vpn速度越来越低(感觉是出国带宽被限制了),FG和GAE的速度也同樣變低了,痛苦

    1. librehat avatar

      我记得在国内的时候,FG和GAE一直就很慢(GAE几乎都没IP可用了)。VPN也不快,这些都容易被GFW阻断,因为特征太明显。Shadowosocks的连接是stateless的,而且加密种类多样,端口和IP地址也没有特征,理论上应该是最快的。

      当然,如果你本身TCP掉包率就很高了,那什么工具都没用。