爱意满满的作品展示区。
qgy18

实现了一个从公网访问内网 WEB 的简单工具

  •  
  •   qgy18 · Nov 24, 2015 · 10146 views
    This topic created in 4003 days ago, the information mentioned may be changed or developed.

    这是上周末为了验证一个想法,花了一个小时撸的一个从公网访问内网 WEB 服务的「玩具」,使用 HTTP/2 实现公网与内网之间的 HTTP/1.1 转发。基于 node-http2 模块, client 加 server 不超过 200 行,除了 Node.js 无需其它依赖, git clone 下来就能跑。

    https://github.com/qgy18/pangolin

    简单说就是这个东西能实现 ngrok 功能之一:让你的本机 WEB 在外网可以访问。临时共享点东西给好友,或者做微信调试还是很方便的。当然 ngrok 是 TCP 转发,能干的远远不是这个。

    最后广告下:最近我又写了不少跟 HTTP/2 有关的文章,有兴趣的同学可以关注下: https://imququ.com

    Supplement 1  ·  Nov 24, 2015
    那干脆把这个也丢上来吧 —— Node.js 实现两种 WEB 代理的演示程序:

    https://github.com/qgy18/proxy-demo

    别看代码简单,不足百行,但非常稳定,特别节省资源,已经在我的搬瓦工测试了快一周。
    36 replies  •  2018-11-02 15:11:15 +08:00
    lijinma
    lijinma
    Nov 24, 2015
    1
    谢谢 ququ
    songjiaxin2008
    songjiaxin2008
    Nov 24, 2015 via iPhone
    2
    点赞
    oott123
    oott123
    Nov 24, 2015 via Android
    3
    赞~~
    不过感觉还不如用 ssh 转发来的方便 _(:з」∠)_
    qgy18
    qgy18
    OP
    Nov 24, 2015
    4
    @oott123 理论上用 HTTP/2 做转发会省一点点流量,因为单 TCP 上多路复用,是可以用到 HTTP/2 的头部压缩策略。这个也是我想验证的点,但是还没来得及做对比。
    KenGe
    KenGe
    Nov 24, 2015
    5
    老大想跟你探讨点问题呀
    odirus
    odirus
    Nov 24, 2015
    6
    活捉一枚 360 员工,哈哈,其实我还是挺欣赏贵司的。
    qgy18
    qgy18
    OP
    Nov 24, 2015
    7
    @odirus 看我的博客关于页:「声明:本站所有文章均为本人原创,仅代表个人思想,与其他任何人或组织无关!」
    odirus
    odirus
    Nov 24, 2015
    8
    @qgy18 没别的意思哈
    qgy18
    qgy18
    OP
    Nov 24, 2015 via iPhone
    9
    @odirus :)
    Lenhoon
    Lenhoon
    Nov 24, 2015
    10
    Python 的 paramiko 库有个 Demo 是用 ssh 建立隧道做远端转发的实现的,楼主的思路也不错!顶
    zonghua
    zonghua
    Nov 24, 2015 via iPhone
    11
    @Lenhoon 哈哈,看到他讲 http 代理的文章,我中午提议给博主,然后他过了一会就做出来了。
    zonghua
    zonghua
    Nov 24, 2015 via iPhone
    12
    @oott123 ssh 转发很不稳定,丢包什么的
    qgy18
    qgy18
    OP
    Nov 24, 2015
    13
    @KenGe 啊,什么问题啊?
    inmyfree
    inmyfree
    Nov 24, 2015
    14
    活捉一枚 360 员工
    KenGe
    KenGe
    Nov 24, 2015
    15
    @qgy18 给你写信咯
    bazingaterry
    bazingaterry
    Nov 24, 2015
    16
    谢谢!正用得上!
    qgy18
    qgy18
    OP
    Nov 24, 2015
    17
    @KenGe 然后并没有收到。。。我的邮箱是 [email protected]
    maskerTUI
    maskerTUI
    Nov 24, 2015
    18
    稳定性如何?多连接会不会很容易崩掉?
    k9982874
    k9982874
    Nov 24, 2015
    19
    挺好的东西。现在懒得写东西了 scp 或者 openvpn 跳板机搞定。
    k9982874
    k9982874
    Nov 24, 2015
    20
    @Lenhoon 有 ssh 就直接 scp 啊,转发个毛线啊。。
    qgy18
    qgy18
    OP
    Nov 24, 2015
    21
    @k9982874 这个主要不是用来传文件。典型应用场景是你在本地开发 WEB 网站,遇到点 BUG ,要找个人帮你看看,你可以使用这个工具直接给他一个公网地址,他可以直接访问到你的本地环境。
    dreammes
    dreammes
    Nov 24, 2015 via iPhone
    22
    不错
    qgy18
    qgy18
    OP
    Nov 24, 2015 via iPhone
    23
    @maskerTUI 没有仔细测,感觉 node.js 处理网络还比较稳定。我 Append 的那个程序,跑了快一周没出任何问题。
    welefen
    welefen
    Nov 25, 2015
    24
    赞一个,非常好用的东西
    nealnote
    nealnote
    Nov 26, 2015
    25
    proxy-demo 看起来很不错的样子。
    qgy18
    qgy18
    OP
    Nov 26, 2015 via iPhone
    26
    @nealnote 嗯,可以试试!主要是省内存、稳定。简介我写得很低调,自己用了一周了。
    wkc
    wkc
    Nov 29, 2015❤️2
    27
    分享下相关的资料

    http://dog-tunnel.tk/ DOG TUNNEL - P2P 端口映射 ,非常强大

    https://github.com/hashicorp/yamux 单 TCP 上多路复用的一个库

    https://github.com/koding/tunnel koding 开源的从公网访问内网 WEB 的库
    wkc
    wkc
    Nov 29, 2015
    28
    对于这种代理,因为数据经过多次转发,感觉减少延时比流量压缩什么的 重要多了。

    dog-tunnel 这种 udp 打洞的方式速度是最快的,虽然实测稳定性不咋地
    wkc
    wkc
    Nov 29, 2015
    29
    以前做过这方面的尝试,都是基于 koding/tunnel 这种思路来做的。

    采用 TCP 隧道同样也可以打印出来 Request/Response 的,流量 copy 一份交给相关库去解析就行了。
    qgy18
    qgy18
    OP
    Nov 29, 2015 via iPhone
    30
    @wkc 看了一下 Yamux ,发现它借鉴了 SPDY ,也就是 HTTP/2 的前身,难怪看着这么熟。

    话说,我有个需求,但是没想到好的实现方式,你有思路么?

    需求是我的手机连接 PC 共享的热点后,如果在 PC 开一个 Proxy ,修改手机网络走 PC 的 Proxy ,很容易抓取并替换 HTTP 数据包(这也是 Fiddler 或者 Charles 的工作原理)。

    但是有些手机软件不走系统代理,我在想是否可以直接从网卡下手抓取并替换 HTTP 包。 Wireshark 可以抓包,但是貌似不能替换。
    wkc
    wkc
    Nov 29, 2015
    32
    @qgy18
    还有一个, PC 开 shadowsocks server , 手机 ss 客户端连上去。 这样就把流量导到 shadowsocks server 了。然后改 shadowsocks server 的源代码 或者用 proxychains4 等工具把流量弄到 Fiddler 上去。
    安卓的 ss 客户端记得把 shadowsocks 封成了 vpn 实现全局代理。
    直接用改路由表、改 iptables 应该也有办法, 不过我不熟悉这方面。
    qgy18
    qgy18
    OP
    Nov 29, 2015 via iPhone
    33
    @wkc 多谢 改 dns 这个应该靠谱 我研究下
    susu
    susu
    Dec 1, 2015 via iPhone
    34
    竟然看到了罗田的
    domwang
    domwang
    May 2, 2018
    35
    国内貌似不能用了,没有 Holer 好用
    https://github.com/Wisdom-Projects/holer
    wdom
    wdom
    Nov 2, 2018
    36
    建议使用开源的 holer,配置简单,设置一个 key 就搞定了,毫无技术含量。服务器在国内,速度很快。
    https://github.com/wisdom-projects/holer
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1354 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 17:13 · PVG 01:13 · LAX 09:13 · JFK 12:13
    ♥ Do have faith in what you're doing.