这是上周末为了验证一个想法,花了一个小时撸的一个从公网访问内网 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
1
lijinma 2015-11-24 13:54:03 +08:00
谢谢 ququ
|
2
songjiaxin2008 2015-11-24 14:09:53 +08:00 via iPhone
点赞
|
3
oott123 2015-11-24 14:13:15 +08:00 via Android
赞~~
不过感觉还不如用 ssh 转发来的方便 _(:з」∠)_ |
4
qgy18 OP @oott123 理论上用 HTTP/2 做转发会省一点点流量,因为单 TCP 上多路复用,是可以用到 HTTP/2 的头部压缩策略。这个也是我想验证的点,但是还没来得及做对比。
|
5
KenGe 2015-11-24 14:18:56 +08:00
老大想跟你探讨点问题呀
|
6
odirus 2015-11-24 14:20:19 +08:00
活捉一枚 360 员工,哈哈,其实我还是挺欣赏贵司的。
|
10
Lenhoon 2015-11-24 15:08:20 +08:00
Python 的 paramiko 库有个 Demo 是用 ssh 建立隧道做远端转发的实现的,楼主的思路也不错!顶
|
14
inmyfree 2015-11-24 17:41:56 +08:00
活捉一枚 360 员工
|
16
bazingaterry 2015-11-24 18:37:16 +08:00
谢谢!正用得上!
|
17
qgy18 OP @KenGe 然后并没有收到。。。我的邮箱是 [email protected]
|
18
maskerTUI 2015-11-24 18:54:42 +08:00
稳定性如何?多连接会不会很容易崩掉?
|
19
k9982874 2015-11-24 18:56:37 +08:00
挺好的东西。现在懒得写东西了 scp 或者 openvpn 跳板机搞定。
|
21
qgy18 OP @k9982874 这个主要不是用来传文件。典型应用场景是你在本地开发 WEB 网站,遇到点 BUG ,要找个人帮你看看,你可以使用这个工具直接给他一个公网地址,他可以直接访问到你的本地环境。
|
22
dreammes 2015-11-24 19:38:56 +08:00 via iPhone
不错
|
23
qgy18 OP @maskerTUI 没有仔细测,感觉 node.js 处理网络还比较稳定。我 Append 的那个程序,跑了快一周没出任何问题。
|
24
welefen 2015-11-25 09:03:19 +08:00
赞一个,非常好用的东西
|
25
nealnote 2015-11-26 10:39:15 +08:00
proxy-demo 看起来很不错的样子。
|
27
wkc 2015-11-29 19:00:51 +08:00 2
分享下相关的资料
http://dog-tunnel.tk/ DOG TUNNEL - P2P 端口映射 ,非常强大 https://github.com/hashicorp/yamux 单 TCP 上多路复用的一个库 https://github.com/koding/tunnel koding 开源的从公网访问内网 WEB 的库 |
28
wkc 2015-11-29 19:04:45 +08:00
对于这种代理,因为数据经过多次转发,感觉减少延时比流量压缩什么的 重要多了。
dog-tunnel 这种 udp 打洞的方式速度是最快的,虽然实测稳定性不咋地 |
29
wkc 2015-11-29 19:11:56 +08:00
以前做过这方面的尝试,都是基于 koding/tunnel 这种思路来做的。
采用 TCP 隧道同样也可以打印出来 Request/Response 的,流量 copy 一份交给相关库去解析就行了。 |
30
qgy18 OP @wkc 看了一下 Yamux ,发现它借鉴了 SPDY ,也就是 HTTP/2 的前身,难怪看着这么熟。
话说,我有个需求,但是没想到好的实现方式,你有思路么? 需求是我的手机连接 PC 共享的热点后,如果在 PC 开一个 Proxy ,修改手机网络走 PC 的 Proxy ,很容易抓取并替换 HTTP 数据包(这也是 Fiddler 或者 Charles 的工作原理)。 但是有些手机软件不走系统代理,我在想是否可以直接从网卡下手抓取并替换 HTTP 包。 Wireshark 可以抓包,但是貌似不能替换。 |
31
wkc 2015-11-29 22:15:49 +08:00
|
32
wkc 2015-11-29 22:25:19 +08:00
@qgy18
还有一个, PC 开 shadowsocks server , 手机 ss 客户端连上去。 这样就把流量导到 shadowsocks server 了。然后改 shadowsocks server 的源代码 或者用 proxychains4 等工具把流量弄到 Fiddler 上去。 安卓的 ss 客户端记得把 shadowsocks 封成了 vpn 实现全局代理。 直接用改路由表、改 iptables 应该也有办法, 不过我不熟悉这方面。 |
34
susu 2015-12-01 19:35:48 +08:00 via iPhone
竟然看到了罗田的
|
35
domwang 2018-05-02 13:08:29 +08:00
国内貌似不能用了,没有 Holer 好用
https://github.com/Wisdom-Projects/holer |
36
wdom 2018-11-02 15:11:15 +08:00
建议使用开源的 holer,配置简单,设置一个 key 就搞定了,毫无技术含量。服务器在国内,速度很快。
https://github.com/wisdom-projects/holer |