Node.js - 请求:指定可以处理 http 和 https 的自定义代理



我正在使用request.defaults(..)- 除其他外 - 为我的请求设置自定义http代理(设置maxSocketskeepAlive(。

const agent = new http.Agent({
keepAlive: true,
maxSockets: 42
})
const requestWithCustomAgent = request.defaults({
agent,
json: true,
headers: {
'User-Agent': 'amazing agent'
}        
})

使用方案访问 URL 时https此错误与Error: Protocol "https:" not supported. Expected "http:".反之亦然,对于https.Agent和方案http

有没有办法"告诉"请求以处理一个代理http请求,https另一个代理?

人们可以投入一些独角兽的血液并施展黑魔法,例如:

if(url.startsWith('https') {/* use on agent */} else { /* use the other */}

但这感觉很黑客。

是这样的:

const requestWithCustomAgent = request.defaults({
agents: {
'http': httpAgent,
'https': httpsAgent
},
json: true,
headers: {
'User-Agent': 'amazing agent'
}        
})

可能?

帮助赞赏;)

如果您使用agentOptions而不是传递http(s).Agent实例,request将为使用的每个方案创建一个代理:

const requestWithCustomAgent = request.defaults({
agentOptions : {
keepAlive  : true,
maxSockets : 42
},
json    : true,
headers : {
'User-Agent': 'amazing agent'
}        
})

最新更新