Thanks to visit codestin.com
Credit goes to bun.sh

Skip to main content
In Bun, fetch supports sending requests through an HTTP or HTTPS proxy. This is useful on corporate networks or when you need to ensure a request is sent through a specific IP address.
https://mintcdn.com/bun-1dd33a4e/Hq64iapoQXHbYMEN/icons/typescript.svg?fit=max&auto=format&n=Hq64iapoQXHbYMEN&q=85&s=c6cceedec8f82d2cc803d7c6ec82b240proxy.ts
await fetch("https://example.com", {
  // The URL of the proxy server
  proxy: "https://username:[email protected]:8080",
});

The proxy option can be a URL string or an object with url and optional headers. The URL can include the username and password if the proxy requires authentication. It can be http:// or https://.

Custom proxy headers

To send custom headers to the proxy server (useful for proxy authentication tokens, custom routing, etc.), use the object format:
https://mintcdn.com/bun-1dd33a4e/Hq64iapoQXHbYMEN/icons/typescript.svg?fit=max&auto=format&n=Hq64iapoQXHbYMEN&q=85&s=c6cceedec8f82d2cc803d7c6ec82b240proxy-headers.ts
await fetch("https://example.com", {
  proxy: {
    url: "https://proxy.example.com:8080",
    headers: {
      "Proxy-Authorization": "Bearer my-token",
      "X-Proxy-Region": "us-east-1",
    },
  },
});
The headers property accepts a plain object or a Headers instance. These headers are sent directly to the proxy server in CONNECT requests (for HTTPS targets) or in the proxy request (for HTTP targets). If you provide a Proxy-Authorization header, it will override any credentials specified in the proxy URL.

Environment variables

You can also set the $HTTP_PROXY or $HTTPS_PROXY environment variable to the proxy URL. This is useful when you want to use the same proxy for all requests.
terminal
HTTPS_PROXY=https://username:[email protected]:8080 bun run index.ts