随笔 - 272  文章 - 0  评论 - 283  阅读 - 142万

简单的TCP代理服务器

我之前的一篇文章(http://www.cnblogs.com/MikeZhang/archive/2012/03/07/socketRedirect.html )中介绍过用python写的一个简单的http端口转发程序,其实那个也算是个代理服务器,只是功能比较简单罢了。由于这段时间在开发代理服务器,接触到各个方面的资料,这里总结下,也方便我以后使用。

一、netcat实现

网址:http://netcat.sourceforge.net/

netcat是个很强大的工具,在网络工具中有“瑞士军刀”美誉不懂的搜索下,我就不多说了,相关用法可参考这里:http://en.wikipedia.org/wiki/Netcat

我主要演示下tcp代理。

1、首先开启9000端口提供http服务

./httpShareWithTrace_linux64 9000

(这个可以参考:http://www.cnblogs.com/MikeZhang/archive/2012/08/10/httpShareGolang20120809.html

我们可以看下效果:

2、开启端口转发(tcp代理)

命令如下:

mkfifo backpipe

nc -l 12345 0<backpipe | nc 192.168.1.100 9000 1>backpipe

图示如下:

和之前的图比较后发现,用12345这个端口和9000这个端口访问到的东西是相同的,说明代理成功了。

二、socat实现

网址:http://www.dest-unreach.org/socat/

这个和netcat功能类似,具体参考上面给的链接,这里我主要是给出代理的命令。

还以上面的情形为例(http还用9000的端口),命令如下:

socat TCP-LISTEN:8080,fork TCP:192.168.1.100:9000

效果如下:

三、Python实现(增强版)

网址:https://github.com/knownsec/rtcp

我之前写的那个太玩具了,推荐用这个。

四、c++ boost 实现

网址:http://tcpproxy.codeplex.com/

这个是借助c++boost库实现的,用的异步机制,写的比较好。

五、go语言实现

网址:https://gist.github.com/3853140

这个是github上我的gist,这个实现很轻巧,功能很强大。

好,就这些了,希望对你有帮助。

posted on   Mike_Zhang  阅读(11762)  评论(7编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2012年10月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示