wasmedge开发中使用代理软件squid解决reqwest_wasi不支持https方案

因为reqwest_wasi不支持https请求,原因可能是(加密算法移植不好实现,证书库验证不好实现等,而且发对aes加密效率还行,但对rsa非对称加密效率极低,2048位加密"hello word"需要最快13分钟[普通机器])。

使用代理软件squid支持https · Issue #2 · WasmEdge/wasmedge_reqwest_demo · GitHub


但因为使用wasi是用wasmedge做faas实现,也就是轻量级业务,一般只要支持curd业务就行了,但生态毕竟有缺,一些基本功能不用wasi实现(rust x86平台依赖或操作系统依赖不好编译成wasi平台时),可以搭建基础常用功能,比如http正向代理软件,来实现https的请求。


首先安装,配置,启动squid(windows安装其它对应代理软件),可以参考使用squid让能上外网的linux(centos)代理内网liunx电脑上网_qwsaedca的博客-CSDN博客_squid -z
注:squid的端口默认为3128,建议修改。主要在这两行代码上
    reqwest::Proxy::https("http://10.0.182.172:3128")
    reqwest::Proxy::http("http://10.0.182.172:3128")

例子:对百度的https访问

 

pub async fn baidu() -> Result<Response<Body>, anyhow::Error> {
    // Some simple CLI args requirements...
    let url = "https://www.baidu.com/baidu?tn=monline_7_dg&ie=utf-8&wd=repository";

    let client = reqwest::Client::builder()
        .proxy(reqwest::Proxy::https("http://10.0.182.172:3128")?)
        .proxy(reqwest::Proxy::http("http://10.0.182.172:3128")?)
        .build()?;

    let body = client.get(url).send()
        .await?
        .text()
        .await?;

    println!("body = {:?}", body);
// let body="test".to_string();
    Ok(response_build(&body))
}


意义在于平台级只用搭一个代理软件来代理https流量访问,对于N个wasm镜像运行,很有作用(否则就需要对https整个实现wasi平台支持,不过发现rsa加密过程[公私密钥生成时间太长],所以放弃了)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值