You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vibe.d通过代理发送HTTP请求遇302跳转问题求助

解决Vibe.d使用代理时返回302重定向的问题

你遇到的核心问题是Vibe.d默认不会自动跟随HTTP重定向,而Python的requests库默认会处理重定向,这就是两者表现不同的主要原因。下面是具体的解决步骤和代码调整方案:

1. 启用自动重定向

修改你的HTTPClientSettings,开启followRedirects选项,让Vibe.d自动处理302这类重定向响应:

HTTPClientSettings settings = new HTTPClientSettings;
settings.proxyURL = URL.parse("http://gb.smartproxy.com:30000");
settings.followRedirects = true; // 关键:启用自动跟随重定向
auto response = requestHTTP("https://dlang.org", (scope req) {
    req.method = HTTPMethod.GET;
}, settings).bodyReader.readAllUTF8;
writeln(response);

2. (可选)设置匹配的User-Agent头

部分网站会根据请求的User-Agent头返回不同内容或触发重定向。Vibe.d的默认User-Agent和requests不同,你可以手动设置一个和requests一致的User-Agent来避免这类问题:

HTTPClientSettings settings = new HTTPClientSettings;
settings.proxyURL = URL.parse("http://gb.smartproxy.com:30000");
settings.followRedirects = true;
auto response = requestHTTP("https://dlang.org", (scope req) {
    req.method = HTTPMethod.GET;
    // 模拟requests默认的User-Agent
    req.headers["User-Agent"] = "python-requests/2.31.0";
}, settings).bodyReader.readAllUTF8;
writeln(response);

3. 额外检查:代理认证(如果需要)

如果你的代理需要用户名密码验证,记得补充以下配置:

settings.proxyUser = "your_proxy_username";
settings.proxyPassword = "your_proxy_password";

为什么会出现这个问题?

Python的requests库默认会自动跟随最多30次HTTP重定向,而Vibe.d的HTTPClientSettings中followRedirects的默认值是false,所以你直接拿到了302的响应内容,而不是重定向后的最终页面。启用重定向跟随之后,Vibe.d就会像requests一样自动请求重定向目标地址,返回你期望的内容。

内容的提问来源于stack exchange,提问作者Hampus Rosencrantz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:04:59