目录
1. 背景
2. 简介
node的http请求库的代理工具,支持http、https;
一个即用型 http 和 https 代理,用于使用代理,使连接保持活动状态!
具有以下特性:
- http
- https
- TypeScript 编写
- 现代化构建工程
详情请看:
如果您在使用的过程中遇到了问题,或者有好的建议和想法,您都可以通过以下方式联系我,期待与您的交流:
3. 安装方式
目前,安装方式有以下几种:
通过 npm (或 yarn、pnpm 等包管理器)安装
npm install agent-proxy
4. 教程
参考下单,根据你的代理服务器 和 后端服务来决定是使用 HttpProxyAgent
或 HttpsProxyAgent
。
HttpProxyAgent | HTTP | HTTP |
HttpProxyAgent | HTTPS | HTTP |
HttpsProxyAgent | HTTP | HTTPS |
HttpsProxyAgent | HTTPS | HTTPS |
import { HttpProxyAgent,HttpsProxyAgent } from 'agent-proxy'
选择适合您的使用案例的代理后,您可以对其进行实例化。它与 Node.js 自带的的 http(s) agent 的参数相同,和一个附加选项,即代理的 url
import http from 'node:http'
import { HttpProxyAgent } from 'agent-proxy'
const agent = new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
proxy: 'http://localhost:8080'
})
http.get('http://localhost:9200', { agent })
.on('response', console.log)
.end()
如果您的代理需要基本身份验证,您可以在 proxy url 中对其进行配置:
import http from 'node:http'
import { HttpProxyAgent } from 'agent-proxy'
const agent = new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
proxy: 'http://user:pwd@localhost:8080'
})
http.get('http://localhost:9200', { agent })
.on('response', console.log)
.end()
你也可以通过 'proxyConnectOptions' 选项传递仅用于代理 CONNECT 请求的自定义选项。
例如 headers
或 tls.connect()
选项:
import fs from 'node:fs'
import http from 'node:http'
import { HttpProxyAgent } from 'agent-proxy'
const agent = new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
proxy: 'https://localhost:8080',
proxyConnectOptions: {
headers: {
'Proxy-Authorization': 'Basic YWxhZGRpbjpvcGVuc2VzYW1l',
},
ca: [ fs.readFileSync('custom-proxy-cert.pem') ]
}
})
http.get('http://localhost:9200', { agent })
.on('response', console.log)
.end()
如果你需要创建 HttpProxyAgent 和 HttpsProxyAgent 的实例,并且需要同步管理它们,那你可以使用createProxyAgents()
方法来创建代理
import fs from 'node:fs'
import http from 'node:http'
import { createProxyAgents } from 'agent-proxy'
const {agent,setProxy} = createProxyAgents();
setProxy(proxyUrl);
常用的http请求库集成示例
got('http://localhost:9200', {
agent: {
http: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: 'http://localhost:8080'
})
}
})
needle('get', 'http://localhost:9200', {
agent: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: 'http://localhost:8080'
})
})
fetch('http://localhost:9200', {
agent: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: 'http://localhost:8080'
})
})
sget.concat({
url: `http://${server.address().address}:${server.address().port}`,
agent: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `https://${proxy.address().address}:${proxy.address().port}`
})
}, function (err, response, data) {
})
详情跳转至教程
5. API接口文档
详情跳转至API接口文档
有您的支持,我会在开源的道路上,越走越远
