1

我正在尝试使用 Reqwest 的代理功能将 user:pass basic auth 和 URL 的其余部分传递给代理功能。显然,这个板条箱的工作方式基本身份验证不能以这种方式传递给代理。

当我注释掉代理时,我得到了我的数据,但它没有通过我的代理:

let raw_proxy = format!("https://{}:{}@{}", username, password, forward_proxy);
let proxy = reqwest::Proxy::all(&raw_proxy).unwrap();
let mut buf = &mut Vec::new();

File::open("../cert.der").unwrap().read_to_end(&mut buf).unwrap();
let cert = reqwest::Certificate::from_der(&buf).unwrap();
let client = reqwest::Client::builder()
    .add_root_certificate(cert)
    //.proxy(proxy)
    .build().unwrap();

let mut res = client.post("http://httpbin.org/post")
    .header(ContentType::json())
    .body(format!("{}", redacted_data))
    .send().unwrap();
4

2 回答 2

1

简短的回答是你不能不写更多的代码。有关更长的答案,请参阅我 2 年前打开的这张票。https://github.com/hyperium/hyper/issues/531

基本上,经过身份验证的代理目前不起作用。标题没有被更新。

作者是支持的,这不是一个高优先级。我不再支持代理,所以它也不再是我的代理。

于 2017-10-25T21:15:20.630 回答
1

如果你使用的是最新的 reqwest 版本,这个问题已经解决了。您需要确定您使用的是 HTTP 还是 HTTPS。要仔细检查它是否连接到代理,您可以使用 Burp 之类的工具。

我在这里https://www.yodiw.com/rust-reqwest-via-proxy-and-ssl-certificate-captured-写了关于如何设置和测试代理、自签名认证和 Burp for reqwest 的完整指南打嗝/

于 2020-05-22T08:18:41.617 回答