🔄 DevHttpProxy
A lightweight, powerful HTTP/HTTPS proxy server for Flutter and Dart applications with optional authentication and comprehensive logging capabilities.
✨ Features
- 🔒 Optional Basic Authentication - Secure your proxy with username/password
- 🔄 HTTP & HTTPS Support - Full tunneling for both protocols
- 📝 Detailed Request/Response Logging - Debug network traffic with ease
- 🚀 Simple API - Start a proxy server with just a few lines of code
- 📦 Zero External Dependencies - Uses only Dart standard libraries
- 📱 Flutter Compatible - Works with Flutter and pure Dart projects
📋 Table of Contents
📥 Installation
Add this to your package's pubspec.yaml file:
dependencies:
dev_http_proxy: ^0.0.1
Then run:
flutter pub get
🚀 Quick Start
import 'package:dev_http_proxy/dev_http_proxy.dart';
void main() async {
final proxy = DevHttpProxy(
port: 8080,
username: 'admin', // Optional
password: '1234', // Optional
logRequests: true, // Optional
);
await proxy.start();
print('Proxy running at http://localhost:8080');
// To stop the proxy server
// await proxy.stop();
}
📚 API Reference
DevHttpProxy Class
| Parameter | Type | Default | Description |
|---|---|---|---|
port |
int |
8080 |
Port number for the proxy server |
username |
String? |
null |
Optional username for Basic Auth |
password |
String? |
null |
Optional password for Basic Auth |
logRequests |
bool |
true |
Enable/disable request logging |
Methods
| Method | Return Type | Description |
|---|---|---|
start() |
Future<void> |
Starts the proxy server |
stop() |
Future<void> |
Stops the proxy server |
🏗️ Architecture
The package has a simple and efficient architecture:
lib/
├── dev_http_proxy.dart # Main implementation
└── example/
└── main.dart # Usage example
Core Components
- DevHttpProxy Class: The main class that handles all proxy functionality
- HTTP Request Handler: Processes and forwards HTTP requests
- HTTPS Connect Handler: Establishes TCP tunnels for HTTPS connections
- Authentication Module: Implements Basic Authentication
- Logging System: Detailed request/response logging
🔄 Data Flow
graph LR
A[Client] -->|HTTP/HTTPS Request| B[DevHttpProxy]
B -->|Authentication Check| C{Auth OK?}
C -->|No| D[401 Response]
C -->|Yes| E{Request Type}
E -->|HTTP| F[Forward HTTP Request]
E -->|HTTPS CONNECT| G[Establish TCP Tunnel]
F -->|Request| H[Target Server]
G -->|Bidirectional Data| H
H -->|Response| I[Client Response]
F -->|Log| J[Console Output]
G -->|Log| J
📝 Examples
Basic Proxy Server
final proxy = DevHttpProxy(port: 8080);
await proxy.start();
Authenticated Proxy Server
final proxy = DevHttpProxy(
port: 8080,
username: 'admin',
password: 'secure_password',
);
await proxy.start();
Silent Proxy (No Logging)
final proxy = DevHttpProxy(
port: 8080,
logRequests: false,
);
await proxy.start();
🔍 How It Works
HTTP Request Handling
When an HTTP request is received:
- The proxy authenticates the request (if credentials are set)
- Headers and body are forwarded to the target server
- The response is piped back to the client
- All traffic is logged (if enabled)
HTTPS Tunneling
For HTTPS connections:
- Client sends a CONNECT request to establish a tunnel
- Proxy creates a socket connection to the target server
- A bidirectional data pipe is established between client and server
- Raw TCP data flows through the tunnel without inspection
📄 License
This package is licensed under the MIT License - see the LICENSE file for details.
Developed with ❤️ by DevTestify Labs