A Dart package containing a collection of proxy API wrappers.

This package connects to different proxy services' APIs to create an IOClient that uses the proxy.

Supported proxy services

There aren't many at the moment - pull requests are welcome! See the "Extending" section of this README if you'd like to contribute.


To use a proxy provider (read on to create one):

import 'dart:io';
import 'package:proxies/proxies.dart';

// Get a "Proxy" object from the provider (async because some providers fetch data from a server).
final proxy = await proxyProvider.getProxy();

// Create an IOClient from the Proxy
final client = proxy.createIOClient();

// Use the IOClient
final myHttpRequest = client.get('');

To create a regular proxy provider with authentication:

final proxyProvider = SimpleProxyProvider('', 8080, 'myUsername', 'myPassword');

To create a NordVPN proxy provider:

final proxyProvider = NordVPNProxyProvider(
  username: r'myUsername',
  password: r'myPassword',
  countryCode: 'US',

Other providers are created in similar ways.


Adding a proxy provider is fairly straightforward. The base class to extend requires these functions to be implemented:

/// This class defines functions all proxy providers must implement.
abstract class ProxyProvider {
  /// Returns a [Proxy] object future, to be used for necessary network operations.
  Future<Proxy> getProxy();

  /// If the proxy provider caches lists of available proxies, invalidate those caches.
  Future<void> invalidateCaches();

There's also an AuthenticatedProxyProvider that contains a few more authentication-related things, which should be extended for any authentication-based services.

Take a look in src/providers/nordvpn/ for an example of the implementation and directory structure.

Features and bugs

Please file feature requests and bugs at the issue tracker.


A collection of proxy API wrappers.