meo-forkcy-proxy
Version:
A proxy management library for Node.js
91 lines (60 loc) โข 2.23 kB
Markdown
# ๐ meo-forkcy-proxy
A simple and flexible proxy management library for Node.js, supporting various proxy selection strategies and compatible with `axios`, `got`, or any HTTP client that supports custom agents.
## ๐ฆ Installation
```bash
npm install meo-forkcy-proxy
```
> Note: Requires `https-proxy-agent`, `http-proxy-agent`, and `socks-proxy-agent` as peer dependencies.
## ๐ Features
- Support for HTTP, HTTPS, and SOCKS5 proxies.
- Select proxies using different strategies:
- `static`
- `round`
- `random`
- `shuffle`
- `batch`
- Easy integration with HTTP clients like `axios`.
## ๐ ๏ธ Usage
### Example
```js
const { ProxyAgent, ProxySelector } = require("meo-forkcy-proxy");
const accounts = ["acc1", "acc2"];
const PROXIES = [
"http://user:pass@proxy1.com:8080",
"socks5://user:pass@proxy2.com:1080",
];
const mode = "round";
for (let i = 0; i < accounts.length; i++) {
const selector = new ProxySelector(PROXIES, mode, i);
const proxy = selector.getProxy(i);
const agent = new ProxyAgent(proxy);
// Example with axios
const axios = require("axios");
const res = await axios.get("https://api.ipify.org?format=json", {
httpAgent: agent.agent,
httpsAgent: agent.agent,
});
console.log(`${accounts[i]} => ${res.data.ip}`);
}
```
## ๐ง Proxy Modes
| Mode | Description |
| --------- | -------------------------------------------- |
| `static` | One-to-one mapping based on index |
| `round` | Round-robin cycling through proxies |
| `random` | Randomly choose a proxy for each task |
| `shuffle` | Use a pre-shuffled version of the proxy list |
| `batch` | Shifted round-robin with a `batchOffset` |
## ๐ API
### `new ProxyAgent(proxyUrl, options?)`
Creates an agent based on the proxy type (HTTP/HTTPS/SOCKS).
- `proxyUrl`: Full proxy URL string
- `options`: (optional) Extra options for the agent
### `new ProxySelector(proxies, mode, batchOffset?)`
Returns proxy strings based on the chosen selection mode.
## ๐งช Test
```bash
node examples/test.js
```
## ๐ License
MIT