Tohr - HTTP 层上的洋葱路由器

目录 互联网, 开源

Tohr (The Onion HTTP Router) 是我上个星期写的一个小的研究项目,它的名字起源于 Tor (The Onion Router)。简单地来说,它就是试图在 HTTP 层上实现类似于 Tor 实现的功能—— HTTP 层上的 HTTP(S) 隧道。

这个 idea 不是我想出来的,而是受到 GAppProxy 的启发(GAppProxy 是一个 great work)。但是 GAppProxy 只是利用 Google 的平台,而且受到 GAE 的很多限制。那么我的贡献呢,就是把这个 idea 通用化,设计一个协议使其支持多平台,解决了 GAppProxy 的一些 bug,完善了 HTTPS 的支持。(哦,忘记了,我还给它起了一个很 fancy 的名字 ^_^)目前 Tohr 的路由器可以是 Google App Engine 上的 Python 网站,也可以是普通的 Apache+PHP 站点。

Tohr 是怎么工作的?

Tohr 的工作原理

Tohr 的工作原理见上图。首先您得拥有一个墙外的主机(免费或者收费的)作为 Tohr 路由器,Tohr目前支持 Google App Engine 和 Apache+PHP 服务器,您将对应的 tohr-router 文件上传到服务器上;然后您在本地运行一个 tohr-daemon 守护程序,设置 tohr-daemon 连接 tohr-router 的 url,tohr-daemon 默认会开启 9090 来提供一个 HTTP(S) 代理服务,您只需要将浏览器的 HTTP 代理设置为 localhost:9090,您的访问请求就会通过 tohr-daemon 转发到 Tohr 路由器上,这样就能通过它来访问被防火墙禁止访问的网站了。

Tohr 是给什么人用的?

目前来讲 Tohr 仍然不很完善,而且还需要加入对其它类型的主机,比如 asp.net、jsp 的支持,还有对多跳和匿名的支持,还没有一个针对普通用户易用性的优化。要求普通用户都有一个墙外主机也是件比较为难的事情(虽然申请一个国外免费 PHP 空间并不困难,比如这里),因此 Tohr 目前还仅适合爱折腾的人使用,尤其是懂 Python 或 PHP 的爱折腾的人,所以在这里是找不到一个一步步的图文教程教普通用户怎么配置的。当然,如果哪位用户愿意做一个,请发送到邮件列表或者提交补丁,我很乐意将它放在项目文档里。

长按识别二维码关注《边际效应》
长按识别二维码关注《边际效应》

52 条评论

  • sswv
    2009-08-10

    赞,抢鲜试用一下。

  • Iron_Feet
    2009-08-10

    顶了,改天试试看。
    好东西哈。
    如同,有了国外服务器就有了自由

  • sswv
    2009-08-11

    实验成功一半,HTTP可用,但HTTPS不工作,在此处留IP为证。果然是需要小折腾一下的东西。在我的Apache上“RewriteRule ^tohr$ tohr-router.php”的似乎没有生效。有关CA证书什么的我不太懂,有空学习研究一下。

  • 草根网
    2009-08-11

    收藏至20ju.com

  • appz
    2009-08-11

    大大很牛,不懂的您是在墙内是怎么加密的连接呢?

  • Solrex
    2009-08-11

    @sswv
    HTTPS 的问题,你安装了 OpenSSL,然后把 ca.crt 安装到你浏览器的信任CA中就可以了。IE 可以直接双击 ca.crt 安装,Linux 下的 firefox 可以直接打开 ca.crt 安装,Windows 下的 Firefox 需要自己到选项->高级->加密里面导入 ca.crt 文件。
    但是强烈建议重新生成自己的 ca.key 和 ca.crt,而不是使用项目自带的 ca key pair,security reasons。Linux 下用那个 update-ca.sh 执行一下就可以了,Windows 下脚本还没有写,win 下安装 ca 要考虑的浏览器太多,烦。

  • Michael
    2009-08-11

    先顶再看,顺便赞一个,弓虽!

  • Michael
    2009-08-11

    没地儿下载?哪里可以下载到?

  • Solrex
    2009-08-11

    @Michael
    没有 release,您可以使用 svn check out。

  • Solrex Yang
    2009-08-11

    @appz
    其实加密是完全没有必要的,只要将数据压缩一下,就是乱码了,关键字过滤就没效果了。真的想要加密,也很简单,因为这个东西就自己用,自己随便写点儿什么简单的密码算法,大概不会有人有兴趣去破解一个普通老百姓使用的密码算法的。

  • sswv
    2009-08-11

    @Solrex
    搞定了,谢谢。

  • Tohr – HTTP 层上的洋葱路由器 « 细节的力量
    2009-08-12

    [...] 作者:Solrex Yang  来源:Solrex Shuffling [...]

  • yegle
    2009-08-12

    wow!曾经想过搞一个这样的东西,没想到已经实现了~

  • Solrex Yang
    2009-08-12

    Tohr router 在 http://www.000space.com 提供的免费空间上测试通过,您可以他们使用免费的 PHP 空间作为 Tohr Router 了。

  • Zay’Sky » Blog Archive » 把gapp和tohr修改了一番
    2009-08-13

    [...] 主要针对客户端的proxy.py给修改了,把我之前自己修改的和solrex添加的加密功能给和在一起,主要针对tohr并不支持没安装openssl的用户。tohr的主要特色是在服务端那里支持了php,只要你的服务器支持php并且限制不大的话都可以自由的使用,听solrex同学说日后功能将支持更多种语言asp估计也会很快放出来的,大家多多留意就好了。 [...]

  • 园子
    2009-08-13

    暂时在国内还没有找到不错的免费PHP 空间
    验证码输入几次都是错误
    呵呵~

  • Solrex
    2009-08-13

    @园子
    国内...就别想了,免费的PHP在国内是不可能赚钱的。

  • bearqq
    2009-08-20

    有个疑问,那个tohr.conf里地址的填法,我填的 http://xxx.xxx.com/tohr 这个是否正确啊~ 我是php的空间,连上后显示

    Error response

    Error code 591.

    Message: Tohr-daemon: Http error, see command line log..

    Error code explanation: 591 = ???.

    请问是怎么回事啊

  • Solrex Yang
    2009-08-21

    @bearqq
    这取决于您的空间是否支持url rewrite和您是否正确上传.htaccess文件,所以我在配置文件中说您需要首先用浏览器测试一下url是否可以访问

  • bearqq
    2009-08-21

    @Solrex Yang
    感谢您的回复,之前我在浏览器里已经试过了,显示it works,,.htaccess也上传了,不过貌似还是连接出错。反正是免费空间,也不怕提供地址:http://is.gd/2rT0D,再次感谢您的解答。

  • jijide
    2009-08-23

    现在可以在google app engine上面用吗?

  • Solrex Yang
    2009-08-23

    @bearqq
    我正休假在家,只能用手机处理事务,等我休假结束后,会尝试调试一下您的问题.

  • Facebook
    2009-08-24

    https有点小问题,无法完全载入页面,图片无法显示。比如gmail.com。

  • facebook
    2009-08-24

    用Google App Engine作代理服务器,https连接无法完全载入,图片无法显示。。。
    比如gmail.com

  • angeloudy
    2009-08-26

    从哪儿下载啊?

  • Michael
    2009-08-26

    今天checkout了新版的代码,明天传到服务器试试

  • 几种不得已时的上网办法 | Solrex Shuffling
    2009-08-28

    [...] Google 的问题,如何访问其它网站呢?就不得不提到我前段时间发布的 Tohr 项目了。Tohr 可以运行在 Google App Engine 上,所以您只需要将您的 Google App Engine [...]

  • bearqq
    2009-08-29

    @Solrex Yang
    感谢 当时用的是ubuntu9.04测试的~~gap没有试,条件不足,不过您推荐的那个网站好像也没成功,或许是我哪里做错了

  • Causalian » 悉数可以运行GAE上的开源代理
    2009-08-30

    [...] Forum:http://blog.solrex.cn/articles/tohr-the-onion-http-router.html SVN:https://tohr.svn.sourceforge.net/svnroot/tohr Posted in WEB, [...]

  • 悉数可以运行在GAE上的开源代理 « 细节的力量
    2009-08-30

    [...] Forum:http://blog.solrex.cn/articles/tohr-the-onion-http-router.html SVN:https://tohr.svn.sourceforge.net/svnroot/tohr Comments [...]

  • forkei
    2009-08-30

    这不就是跟 PhpProxy 差不多么 ……

    比如这个介绍 http://www.billwsy.com/phpproxy-intro/

  • Solrex
    2009-08-30

    @forkei
    哈哈,谢谢您的提醒,原来也有人做过类似工作呀 :) 我居然都不知道,又重新发明轮子了。

  • forkei
    2009-08-30

    @Solrex

    那个貌似很早就有了,不过有很多bug,使用几十分钟浏览器就会白屏,要重新启动客户端才可以继续使用。

  • Causalian » 悉数可以运行在GAE上的开源代理
    2009-08-30

    [...] Forum:http://blog.solrex.cn/articles/tohr-the-onion-http-router.html [...]

  • Solrex Yang
    2009-09-03

    @bearqq
    经我的测试,你的服务器只支持 HTTP 抓取,不支持 HTTPS 抓取。这个大概是你的服务器提供商的限制,我想可能那个服务器不是 Linux 服务器,或者没有安装 curl,因为 tohr 的抓取 HTTPS 页面功能是使用 curl 实现的,PHP 好像没有相应模块。

  • bearqq
    2009-09-03

    @Solrex Yang
    感谢您的测试,昨天我在windows下面又用svn下载了一次源代码,用python连上了,或许那个问题是linux和windows的svn不同点产生的吧~

  • lirui0073
    2009-09-06

    forkei :
    @Solrex
    那个貌似很早就有了,不过有很多bug,使用几十分钟浏览器就会白屏,要重新启动客户端才可以继续使用。

    phpproxy的加密已经被gfw解密了 现在还有glype等 其实在proxy.org还是那里 有很多不同类型的代理

  • client
    2009-10-05

    可以很快的翻墙,哈哈,非常不错。可是看不了YouTube,不知道能否解决这个问题 ?

  • 12345
    2009-11-23

    我怎么出现这样的错误呢?

    D:\tohr\daemon\python>tohrd.py
    Traceback (most recent call last):
    File "C:\Python26\lib\logging\__init__.py", line 765, in emit
    self.stream.write(fs % msg.encode("UTF-8"))
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 296: ordina
    l not in range(128)

  • 77
    2009-11-24

    发现问题了,图片不能显示的原因是,每个接收的文件,在头部会加上本次会话的报文。导致文件发生变化,普通htm或文本页,反正可以显示的,但图片文件就被破坏了。

  • abacuspix
    2009-12-25

    其实就是 http 隧道的一个应用吧

  • abacuspix
    2009-12-25

    Loki ICMP tunneling
    ACK tunneling
    HTTP tunneling
    呵呵 看来好好研究一下穿墙技术还是有必要的

  • forkei
    2010-01-23

    http://webproxytunnel.sourceforge.net/

    很不错

  • newbie
    2010-02-03

    您好,我在GAE上遇到了一些问题:首先我上传到GAE上没问题,访问那个地址也显示It works了。但是运行Daemon之后,显示下列信息:
    Tohr INFO: Loading configuaration from tohr.conf
    Tohr INFO: Using Tohr router(s): [u'https://----.appspot.com/tohr
    Tohr INFO: Using outgoing proxy:
    Tohr INFO: Start serving at http://127.0.0.1:9090
    但是这时候用这个代理,却显示404 not found错误。任何网站都打不开,不知是什么原因呢?

  • hg
    2010-03-27

    是不更新了么?检出地址错误

  • Solrex Yang
    2010-03-27

    @hg
    我可以访问呀,项目是在 SourceForge 上,最近的确没有更新,但是一直是可以访问的。您可以需要检查一下自己的网络连接是否可以访问 sourceforge.net

  • 转某同学介绍的GAPPPROXY+HOSTS通过教育网IPV6上外网方法 | 牧师@newsinchina的独立博客
    2010-04-02

    [...] 我是用tohr 这款代理软件的,http://blog.solrex.org/articles/tohr-the-onion-http-router.html [...]

  • stonep
    2010-04-28

    博主,我用000spaces测试了下。看一般网页正常,https失败了,而且也不能看youtube,请问是空间限制还是本身项目的原因?

  • stonep
    2010-04-28

    补充一下,我安装了openssl也导入了ca文件,但是访问https://www.google.com失败。

  • youkar
    2010-06-08

    貌似svn地址不能用,挂代理也不行!
    麻烦博主检查下!

  • tomsmar
    2010-08-16

    我昨天把我的GAP1.0.0升级到了1.2.0,效果还是不错的,可以上TWITTER,但是FACEBOOK不能登录,YOUTUBE也可以看了,速度还是不错的。

  • akira
    2011-10-26

    我在Google App Engine上跑Tohr,客户端是windows。
    跟证书也导入了,可访问Gmail,Google Doc还是不行,提示下面的错误。

    Loading 'screen' into random state - done
    Generating RSA private key, 1024 bit long modulus
    ...............................................................++++++
    ........++++++
    e is 65537 (0x10001)
    Loading 'screen' into random state - done
    Using configuration from ca\ca.conf
    error loading the config file 'ca\ca.conf'
    9172:error:02001003:system library:fopen:No such process:.\crypto\bio\bss_file.c:169:fopen('ca\ca.conf','rb')
    9172:error:2006D080:BIO routines:BIO_new_file:no such file:.\crypto\bio\bss_file.c:172:
    9172:error:0E078072:configuration file routines:DEF_LOAD:no such file:.\crypto\conf\conf_def.c:197:
    Tohr ERROR: [Errno 336445442] _ssl.c:361: error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib

发表评论

电子邮件地址不会被公开。 必填项已用*标注