sproxy开发体验
曾经为了让所有服务不允许随便访问公网,要访问公网则必须走代理,于是就需要一个非常NB的代理,能应对各种复杂的需求,于是自己写了一个sproxy(Supper Proxy),支持http 隧道代理、https隧道代理、sni代理。
现在,为了一些特殊的需要,需要在代理之后再转发到一个socket5代理,这样就可以与所有的socket5代理(比如: shadowsocks)实现对接,查了一下资料,其实,修改非常简单,我可以只修改两行代码就能搞定,借助golang.org/x/net/proxy 中的socket5代理,至于如何配置是否走代理,简单通过设置环境变量来实现了,如:
all_proxy=socks5://127.0.0.1:1080
尽管只有两行代码,还是学到了不少东西:
想让mac上的IDE调试那个需要listen 443的程序,默认IDE不是root启动的,没有权限listen 1024以下的端口,于是通过查资料发现,可以通过端口重定向实现,让需要调试的程序listen 1443, 通过 (http://www.cnblogs.com/fullstack-yang/p/6223960.html ) 提到的方法将443的数据包重定向到 1443, 相关参考: http://www.cnblogs.com/fullstack-yang/p/6224050.html
socks5不仅可以支持ip地址,还支持域名,可以在socks5之前解析域名,也可以在socks5之后解析域名;原本程序是在socks5之前解析域名的,程序偶尔会调试不通,因为socks5之前通过 114.114.114.114 解析到的 www.google.com 的ip地址是被篡改过的,有时候是Twitter的,有时候是facebook的,还有不知道是谁家的,这种情况就需要把解析域名的事情放到socks5之后做了
关于域名被篡改的情况,还可以通过dnscrypt-proxy 来解决,只是,这个需要部署dnscrypt-server,不过也有很多公开的dnscrypt-server,稍微麻烦一些,没尝试
或许可以有一种dns-proxy,可以把dns请求转发到socket5,也是挺好的,注意: golang.org/x/net/proxy 中的socks5尚不支持udp (https://github.com/better0332/myproxy/blob/master/proxy/socks5.go) 这里有人实现过,不过star好少
也可以自己实现一个dns-server
单步调试golang时,提示找不到lldb-server, 解决办法:
xcode-select --install
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:phpor 来源: PHPor 的Blog
- 标签: sproxy
- 发布时间:2017-10-15 09:56:47
- [66] Oracle MTS模式下 进程地址与会话信
- [65] Go Reflect 性能
- [64] 如何拿下简短的域名
- [60] android 开发入门
- [59] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [58] IOS安全–浅谈关于IOS加固的几种方法
- [54] 视觉调整-设计师 vs. 逻辑
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 界面设计速成