如何在axios中使用axios-cookiejar-support搭配SocksProxyAgent代理?
解决方案
错误原因是axios-cookiejar-support的wrapper会接管HTTP/HTTPS Agent的逻辑,如果你在包装后再覆盖defaults里的agent,就会触发它的冲突检测机制。正确的做法是在创建axios实例的配置中就传入代理Agent,让wrapper同时处理CookieJar和代理逻辑。
修改后的代码
import { Cookie, CookieJar } from "tough-cookie"; import { wrapper } from "axios-cookiejar-support"; import { SocksProxyAgent } from "socks-proxy-agent"; import type { AxiosRequestConfig } from "axios"; // 先初始化代理Agent const proxyAgent = new SocksProxyAgent(proxy); // 在axios配置中直接传入代理Agent const axiosConfig: AxiosRequestConfig<any> = { headers: {}, maxRedirects: 0, jar: this.cookieJar, withCredentials: true, httpAgent: proxyAgent, httpsAgent: proxyAgent }; // 最后用wrapper包装axios实例 this.request = wrapper(axios.create(axiosConfig));
关键说明
axios-cookiejar-support的wrapper会在你传入的原有Agent基础上,注入CookieJar的处理逻辑,而不是完全替换Agent,这样就不会触发冲突。- 如果需要为HTTP和HTTPS设置不同的代理,可以分别创建两个
SocksProxyAgent实例,分别赋值给httpAgent和httpsAgent。
内容的提问来源于stack exchange,提问作者Illia
相关产品推荐
相关产品推荐

