使用 Lambda 代理页面
由于 Cloudflare worker 的 vless 存在无法访问 cloudflare 托管页面的缺陷,于是找了另外一种代理方式。
基本思路
本地使用中间人攻击的思路,将 HTTPS 代理到自己的服务器上,然后通过 Lambda 代理请求并返回。
为什么这么复杂?
- 单纯的 HTTP 代理,即 Connect Tunnel 方案,无法做协议转换,比如:Lambda 的 API Gateway 不支持 Connect 请求。
-
Connect Tunnel 无法解密相关具体流量,且有诸多限制,比如:只能 IP(域名) + Port,API Gateway 无法指定到根路径。
为什么用 AWS 的 Lambda ?
- 有免费额度
- 大厂产品,较为稳定(尽可能采用大厂,小厂的免费产品也很多,但很容易倒闭,封锁什么的)
- AWS 的 lambda 能直接访问,Google Cluod 和 Cloudflare worker 无法直接访问
实现方案
- HTTPS 代理使用现成的代理工具,whistle
- 通过安装本地 CA 证书,whistle 可以将浏览器代理的 HTTPS 流量,解密转成本地服务的可以识别的流量请求
- 此处为本地中间人代理,无相关安全问题
- 需要用到 whistle 脚本,参考 代码
- 本地服务器,将相关请求,包装为与 Lambda 可以是被的协议 JSON,然后 HTTPS 请求给 Lambda
- 即把 headers、method、body 封装为 json,参考 代码
- Lambda 函数,获取请求 JSON,发起请求,然后返回相关数据即可。
- Lambda 获取 json 中的相关参数,发起请求并发挥,参考 代码