所以大家可以看到,要是我在里面写一个请求方法,请求一个固定地址,会发生什么呢,会不会云函数自动代替我完成对目标地址的请求,就像 VPN 或者某科学/上网工具一样?
所以,我动手试了一下。
把请求地址写成了我们的官网:
可以看到, 访问之后果然是代替我们请求了我们公司官网的地址。
到这里就是正式编写我们的函数了。
我们要实现一个效果就是收集请求端的数据包,收集请求包请求数据,然后把请求包原样发送给我们的 CS 服务器,最后收集 CS 服务器的返回包返回给请求方。
具体的代码如下:
后面的代码参考了「风起」的文章中把 body 中标识字节的 b’’ 字段舍弃的方法。
注意这里是某 B 公有云云函数的规定,必须要返回一个带 "sBase64Encoded,statusCode, headers,body 字段的一个字典。
另外一个坑是,某 B 公有云云函数的超时时间的问题。
当我们配置好之后,访问可能会遇到下图所示报错:
是因为 CS 马在运行后会先下载一个 200K+ 的配置文件(这个研究过 CS 马的童靴应该很了解),而我们的云函数在下载这么大的文件的时候会超时。
所以这个问题很难发现,直接让笔者整个周末都在研究这个问题。
顺便吐槽下某 B 公有云的错误返回,实在是太概括了,根据返回根本定位不到问题在哪里,要自己一行一行的 re 代码…… 快哭了。
这里超时时间直接给他拉满,设成 100s。
函数配置好之后,我们就可以用我们的地址上线啦。期待,呲溜~
虚拟机运行:
虚拟机抓包发现请求包已经发出去了。
仔细看一下,确实发出去的包的地址确实是某 B 公有云主机的地址。