Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/delvedor/hpagent
A ready to use http and https agent for working with proxies that keeps connections alive!
https://github.com/delvedor/hpagent
agent http https keep-alive proxy
Last synced: 14 days ago
JSON representation
A ready to use http and https agent for working with proxies that keeps connections alive!
- Host: GitHub
- URL: https://github.com/delvedor/hpagent
- Owner: delvedor
- License: mit
- Created: 2020-07-16T12:08:32.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-06-13T09:53:09.000Z (over 1 year ago)
- Last Synced: 2024-05-22T00:04:07.847Z (6 months ago)
- Topics: agent, http, https, keep-alive, proxy
- Language: JavaScript
- Homepage:
- Size: 44.9 KB
- Stars: 178
- Watchers: 5
- Forks: 37
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hpagent
[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](http://standardjs.com/) ![build](https://github.com/delvedor/hpagent/workflows/build/badge.svg). ![npm](https://img.shields.io/npm/dm/hpagent)
A ready to use http and https agent for working with proxies that keeps connections alive!
## Install
```
npm install hpagent
```## Usage
Based on your infrastructure, you should use the http agent or the https agent.
The following table will help you picking the right one.| Type | Proxy | Server |
|-------------------|--------|--------|
| `HttpProxyAgent` | HTTP | HTTP |
| `HttpProxyAgent` | HTTPS | HTTP |
| `HttpsProxyAgent` | HTTP | HTTPS |
| `HttpsProxyAgent` | HTTPS | HTTPS |```js
const { HttpProxyAgent, HttpsProxyAgent } = require('hpagent')
```Once you have understood the right agent for your use case, you can instance it. It takes the same parameter of the Node.js core's http(s) agent and an additional `proxy` option, which is the url of your proxy.
```js
const http = require('http')
const { HttpProxyAgent } = require('hpagent')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()
```If your proxy requires basic authentication, you can configure it in the proxy url:
```js
const http = require('http')
const { HttpProxyAgent } = require('hpagent')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()
```You can also pass custom options intended only for the proxy CONNECT request with the `proxyConnectOptions` option,
such as headers or `tls.connect()` options:```js
const fs = require('fs')
const http = require('http')
const { HttpProxyAgent } = require('hpagent')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()
```## Integrations
Following you can find the list of userland http libraries that are tested with this agent.
### [got](https://github.com/sindresorhus/got)
```js
got('http://localhost:9200', {
agent: {
http: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: 'http://localhost:8080'
})
}
})
```### [needle](https://github.com/tomas/needle)
```js
needle('get', 'http://localhost:9200', {
agent: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: 'http://localhost:8080'
})
})
```### [node-fetch](https://github.com/node-fetch/node-fetch)
```js
fetch('http://localhost:9200', {
agent: new HttpProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: 'http://localhost:8080'
})
})
```### [simple-get](https://github.com/feross/simple-get)
```js
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) {
// handle the response
})
```## License
This software is licensed under the [MIT](./LICENSE).