os-proxy-config
Version:
Access the operating system proxy configuration from Node.js, for all platforms
32 lines (21 loc) • 1.89 kB
Markdown
# OS-Proxy-Config [](https://github.com/httptoolkit/os-proxy-config/actions) [](https://npmjs.com/package/os-proxy-config)
> _Part of [HTTP Toolkit](https://httptoolkit.tech): powerful tools for building, testing & debugging HTTP(S)_
Access the operating system proxy configuration from Node.js, for all platforms. Use it like so:
```javascript
import { getSystemProxy } from 'os-proxy-config';
const proxy = await getSystemProxy();
```
The promise from `getSystemProxy` resolves to something like:
```json
{
"proxyUrl": "https://proxy-server:123/",
"noProxy": ["localhost", "example.com"]
}
```
The proxyUrl is returned in a format suitable for use with [proxy-agent](https://www.npmjs.com/package/proxy-agent): it might be an HTTP or HTTPS URL (for an HTTP proxy), a `socks://` or `socks5://` URL for SOCKS proxies, or a `pac+http://` URL (or similar) with the address of a PAC file for PAC-configured proxies.
If there's no proxy configured, it will resolve to `undefined` instead. If something major goes wrong and the settings can't be detected, the promise will be rejected.
This works slightly differently on each platform:
* On Windows it uses [windows-system-proxy](https://www.npmjs.com/package/windows-system-proxy), which reads proxy configuration from the registry using [registry-js](https://www.npmjs.com/package/registry-js).
* On Mac it uses [mac-system-proxy](https://github.com/httptoolkit/mac-system-proxy), which reads proxy configuration using the `scutil` command-line tool.
* On Linux it parses the various *_PROXY environment variables.
If you only need one platform, it's probably better to just use one of these approaches directly - this package is designed for use in cross-platform tools.