========================
██╗ ██╗ ██████╗ ████████╗ ██████╗ ██████╗
██║ ██║██╔═══██╗╚══██╔══╝██╔═══██╗██╔══██╗
██║ █╗ ██║██║ ██║ ██║ ██║ ██║██████╔╝
██║███╗██║██║ ██║ ██║ ██║ ██║██╔═══╝
╚███╔███╔╝╚██████╔╝ ██║ ╚██████╔╝██║
╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝
WOTOP 是一款能够将所有类型的流量通过标准 HTTP 通道进行隧道的工具。
适用于代理过滤所有流量但仅允许标准 HTTP(S) 流量的场景。与其他要么要求你位于允许任意流量通过的代理之后(可能通过初始 CONNECT 请求),要么仅适用于 SSH 的工具不同,本工具不施加此类限制。
假设你想通过 SSH 连接到一台没有 root 权限的远程机器。
将涉及 7 个实体:
如果没有代理,通信方式大致如下:
客户端 -> 客户端 SSH 进程 -> 目标服务器 -> 目标 SSH 进程
在这种场景下,以下是建议的方法:
客户端 -> 客户端 SSH 进程 -> 客户端 WOTOP 进程 -> 代理 -> 目标 WOTOP 进程 -> 目标 SSH 进程 -> 目标服务器
WOTOP 简单地将所有数据包装在 HTTP 数据包中,并相应地进行缓冲。
另一种更复杂的场景:你有一个外部工具服务器,并需要从代理后面访问另一台服务器的资源。在这种情况下,wotop 仍然在你的外部服务器上运行,但第二个命令(使用说明部分)中不使用 localhost,而是使用拥有该资源的目标机器的主机名。
在客户端机器上:
./wotop <client-hop-port> <server-host-name> <server-hop-port>
在目标机器上:
./wotop <server-hop-port> localhost <target-port> SERVER
(注意末尾的关键字 SERVER)
在 SSH 的情况下,目标端口为 22。 现在这两者运行后,要使用 SSH,你可以运行以下命令:
ssh <target-machine-username>@localhost -p <client-hop-port>
注意:关键字 server 告诉 wotop 连接的哪一端需要通过 HTTP 进行。
欢迎提交 Pull Request!😄