主要观点:
- 介绍了一个通过代理到另一个代理来绕过网络限制代理的“proxy-proxy-proxyer”,最初是为在特定环境下绕过代理访问 GitHub 而开发。
- 详细讲述了实现该“proxy-proxy-proxyer”的过程,包括 HTTP 和 HTTPS 代理的操作方法、遇到的 DPI 问题及解决办法(利用 SNI 实现代理),以及在不同语言(Node.js 和 Rust)中的实现和优化。
关键信息: - 开发原因是在特定 coworking 空间遇到网络限制代理,无法访问 GitHub 等网站。
- HTTP 代理操作方法:发送完整 URI 或更改 HTTP 动词,HTTPS 代理通过 CONNECT 请求建立隧道。
- 遇到 DPI 导致连接突然终止,通过测试发现代理允许 TLS 但不允许明文 HTTP,利用 SNI 实现代理。
- 在 Node.js 和 Rust 中分别实现并遇到内存问题,最终在 Rust 中完成。
重要细节: - 开发过程中尝试了多种方法绕过代理,如强制 HTTPS、更改预设 DNS 等均失败。
- 实现过程中遇到的各种技术细节,如 HTTP 代理请求格式、TLS 握手的 SNI 字段等。
- 强调该工具不适合实际使用的原因,如无 proper 认证、只能连接 443 端口等。
使用方法:设置云 VM 并开放端口,在 VM 上运行 Rust 服务器,在客户端运行 Node.js 程序并配置浏览器代理。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。