V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
coyove
V2EX  ›  分享创造

goflyway,一个简单的科学 HTTP 代理工具

  •  8
     
  •   coyove ·
    coyove · 2017-09-09 16:23:49 +08:00 · 30645 次点击
    这是一个创建于 2419 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/coyove/goflyway

    基于 golang。自用了半个月,稳定运行

    没啥技术含量,都是通过预设的密钥来加密信息。不同的是 goflyway 基于 HTTP,比$$要高一层,更类似于$$r 的 http 混淆模式。

    简单的说 goflyway 只干了两件事(但已经足够了):

    1. 对于 HTTP 流量,加密 Host 字段、Cookie 字段和 body,然后转发
    2. 对于 HTTPS 流量,goflyway 作为隧道代理再加密一层,防止 SSL 握手网站证书被检测到。当然建立隧道时 Host 也是加密的

    流量的加密即采用 AES256,Host 的加密准确的说应为混淆,其只改变二级(或三级、四级。。)域名,例如:

    client 端会区分国内外流量,其判断基于中国的 IP 段和china-list

    因为是基于应用层的 HTTP,传输肯定会有 overhead,性能不用指望,但也不慢多少,cpu 占用略低一些:

    $$r http goflyway

    系统占用忘截图了,50mbps,linode 1G,大概<10%cpu,<5%mem

    36 条回复    2017-09-14 11:21:43 +08:00
    JohnLou
        1
    JohnLou  
       2017-09-09 16:26:25 +08:00 via iPhone
    先支持下斗士。
    ixinshang
        2
    ixinshang  
       2017-09-09 16:42:52 +08:00 via Android
    打算尝试下
    patx
        3
    patx  
       2017-09-09 16:49:14 +08:00 via Android
    感谢分享
    Shazoo
        4
    Shazoo  
       2017-09-09 18:00:04 +08:00   ❤️ 1
    支持下。试试去~
    athanos
        5
    athanos  
       2017-09-09 18:07:33 +08:00 via Android
    手动点赞。
    v1024
        6
    v1024  
       2017-09-09 18:08:02 +08:00 via iPhone   ❤️ 1
    特征太明显,又增加了复杂性,和直接开一个 https proxy 相比,并没有什么优势。
    doubleflower
        7
    doubleflower  
       2017-09-09 18:13:18 +08:00 via Android
    @v1024 什么特征?直接开 https proxy 才特征明显
    Shazoo
        8
    Shazoo  
       2017-09-09 18:17:27 +08:00
    刚测试了下,不错。和$$相差不大~~
    ccsexyz
        9
    ccsexyz  
       2017-09-09 20:00:15 +08:00
    感觉与 ss 相比并没有明显的性能优势啊
    我这边 ss 用 speedtest 测速, 小鸡是 vultr 512M
    aes-256-cfb: 64mbps 10% CPU 3.2% mem
    chacha20: 66mbps 4.89% CPU 2.8% mem
    coyove
        10
    coyove  
    OP
       2017-09-09 20:18:09 +08:00
    @ccsexyz 确实没性能优势,现在也没能力没精力优化
    0xcb
        11
    0xcb  
       2017-09-09 20:28:41 +08:00 via Android
    多一条路总是好的
    ccsexyz
        12
    ccsexyz  
       2017-09-09 20:39:41 +08:00
    这个思路确实很不错,比 ss 的 simple-obfs 好很多。另外会对 HTTP 请求的 uri 进行处理吗?
    coyove
        13
    coyove  
    OP
       2017-09-09 20:57:10 +08:00
    @ccsexyz 会的,防止绝对 URI 路径
    newworld
        14
    newworld  
       2017-09-09 21:33:06 +08:00
    有做过安全性测试吗">? 会不会对服务器造成漏洞
    shoaly
        15
    shoaly  
       2017-09-09 21:36:01 +08:00
    问个问题, 感觉 host 这样混淆, 为何不直接:
    写一个 www.baidu.com, 然后真实的 host 放到 body 当中去.. 这样岂不是更好
    n6DD1A640
        16
    n6DD1A640  
       2017-09-09 21:55:17 +08:00
    多个轮子总是好的,点个 star 支持一下
    akira
        17
    akira  
       2017-09-09 22:00:18 +08:00
    不错,支持下。
    coyove
        18
    coyove  
    OP
       2017-09-09 22:06:28 +08:00
    @shoaly
    混淆的方式千差万别,你可以在 header 里面加一个 field 存 host,也可以存到 Cookie 的某个值里,我只是选择了我比较喜欢的方式 XD
    BombayCat
        19
    BombayCat  
       2017-09-09 22:33:02 +08:00 via Android
    技术里岛 po(`・ω・)
    ycdjhh
        20
    ycdjhh  
       2017-09-10 09:46:02 +08:00 via Android
    运行 debug 后出现 logg/logg.go:62: op.Source undefined (type *net.OpError
    has no field or method Source)
    logg/logg.go:63: op.Source undefined (type *net.OpError
    has no field or method Source)
    logg/logg.go:68: op.Source undefined (type *net.OpError
    has no field or method Source)
    logg/logg.go:70: op.Source undefined (type *net.OpError
    has no field or method Source)
    logg/logg.go:73: op.Source undefined (type *net.OpError
    has no field or method Source)是什么情况
    coyove
        21
    coyove  
    OP
       2017-09-10 10:36:35 +08:00
    @ycdjhh net.OpError.Source 这个字段直到 go1.5 才有,你的版本可能过低( go version )
    whitegerry
        22
    whitegerry  
       2017-09-10 10:57:28 +08:00
    @coyove 用 surge 配合, 怎么避开 client 端 ip 判断?
    coyove
        23
    coyove  
    OP
       2017-09-10 11:11:25 +08:00
    @whitegerry 加上 -proxy-all 不判断中国 IP 和网站
    ycdjhh
        24
    ycdjhh  
       2017-09-10 14:37:23 +08:00 via Android
    确实是 go 版本问题,目前 WiFi 状态下启用速度可以也比较省心,如何才能在移动数据状态下启用呢?
    coyove
        25
    coyove  
    OP
       2017-09-10 15:04:05 +08:00
    @ycdjhh 需要第三方 app,比如 drony。现阶段因为没有原生 app 支持,移动体验并不好,安心用$$吧。。。
    ycdjhh
        26
    ycdjhh  
       2017-09-10 18:38:21 +08:00 via Android
    下午试了下可以在 APN 中添加代理,数据流量就可以使用,而且我特意没 adb 去除感叹号
    JamesMackerel
        27
    JamesMackerel  
       2017-09-11 13:06:12 +08:00
    建议楼主注意保护自己。
    whitegerry
        28
    whitegerry  
       2017-09-12 09:19:52 +08:00
    服务器上怎么在后台运行?
    whitegerry
        29
    whitegerry  
       2017-09-12 09:45:48 +08:00
    用 nohup 好像可以
    whitegerry
        30
    whitegerry  
       2017-09-12 09:56:07 +08:00
    @coyove 加了-proxy-all 之后还是区分了 ip, 我是想让 gofw 做全局, 用 surge 来分流
    coyove
        31
    coyove  
    OP
       2017-09-12 10:58:56 +08:00
    @whitegerry
    加了-proxy-all 以后看看 ipip.net (国内)和 ipinfo.io (国外)显示的 IP 是什么
    qianguozheng
        32
    qianguozheng  
       2017-09-12 11:16:30 +08:00
    还要租个服务器,楼主干脆点,搞个小企业卖吧
    whitegerry
        33
    whitegerry  
       2017-09-12 12:24:35 +08:00
    @coyove 现在好了
    停止用什么命令?
    molezznet
        34
    molezznet  
       2017-09-14 11:10:48 +08:00
    很好用哦, 至少电脑上简单.
    android 还是不方便
    molezznet
        35
    molezznet  
       2017-09-14 11:11:11 +08:00
    @whitegerry kill 可以结束 nohup
    whitegerry
        36
    whitegerry  
       2017-09-14 11:21:43 +08:00
    @molezz765
    作者更新很勤快
    android 的 nexus player 上用 proxydroid 和 drony 折腾了不少时间, 昨晚上才配合 drony 搞定.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5344 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.