159 lines
4.1 KiB
Markdown
159 lines
4.1 KiB
Markdown
# 🚀 FuckHTTP3 Proxy
|
|
|
|
A powerful HTTP/3 intercepting proxy with JavaScript injection capabilities. Browse websites through HTTP/3 (QUIC) while injecting custom JavaScript into every page.
|
|
|
|
> *Intercept. Inject. Control.*
|
|
|
|
## 🔍 Overview
|
|
|
|
FuckHTTP3 is a sophisticated proxy tool that:
|
|
|
|
- Acts as a forward proxy for HTTP/3 traffic
|
|
- Provides a user-friendly web UI for browsing
|
|
- Allows custom JavaScript injection into any proxied website
|
|
- Supports both direct browser configuration and web UI-based browsing
|
|
- Helps with debugging and manipulating HTTP/3 traffic
|
|
|
|
## 📦 Installation
|
|
|
|
### Prerequisites
|
|
|
|
- Go 1.16 or higher
|
|
- TLS certificates (for HTTPS and HTTP/3)
|
|
|
|
### Building from source
|
|
|
|
```bash
|
|
git clone https://git.supernets.org/e/fuckhttp3.git
|
|
cd fuckhttp3
|
|
|
|
# Build the binary
|
|
go build -o fuckhttp3 .
|
|
```
|
|
|
|
## 🎮 Usage
|
|
|
|
### Generating certificates
|
|
|
|
For local development, generate self-signed certificates:
|
|
|
|
```bash
|
|
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
|
|
```
|
|
|
|
### Running the proxy
|
|
|
|
Basic usage:
|
|
|
|
```bash
|
|
./fuckhttp3 --addr=localhost:8443 --cert=cert.pem --key=key.pem --webui --verbose
|
|
```
|
|
|
|
### Command-line options
|
|
|
|
| Option | Description | Default |
|
|
|--------|-------------|---------|
|
|
| `--addr` | Address to listen on | `localhost:8443` |
|
|
| `--cert` | Certificate file path | `cert.pem` |
|
|
| `--key` | Private key file path | `key.pem` |
|
|
| `--target` | Target address to proxy to | (empty = forward proxy) |
|
|
| `--webui` | Enable web UI for user-specified proxy targets | `false` |
|
|
| `--verbose` | Enable verbose logging | `false` |
|
|
|
|
## ✨ Features
|
|
|
|
### 🌐 Web UI
|
|
|
|
When running with the `--webui` flag, access the web interface by navigating to the proxy address:
|
|
|
|
```
|
|
https://localhost:8443/
|
|
```
|
|
|
|
The web UI provides:
|
|
|
|
- A URL input field for browsing through the proxy
|
|
- JavaScript injection capability
|
|
- Example scripts for common tasks
|
|
|
|
### 💉 JavaScript Injection
|
|
|
|
The proxy can inject custom JavaScript into every web page it processes:
|
|
|
|
1. Write or paste your JavaScript code in the web UI
|
|
2. Save the script and enable injection
|
|
3. Browse websites with your script automatically injected
|
|
|
|
#### Example Scripts
|
|
|
|
The UI includes example scripts for:
|
|
|
|
| Script | Purpose |
|
|
|--------|---------|
|
|
| Dark Mode | Apply dark theme to any website |
|
|
| Ad Blocker | Hide common ad elements |
|
|
| Image Highlighter | Add borders to all images |
|
|
|
|
### 🔄 Proxy Modes
|
|
|
|
FuckHTTP3 operates in two modes:
|
|
|
|
| Mode | Description |
|
|
|------|-------------|
|
|
| **Forward Proxy** | Standard proxy that browsers can use directly |
|
|
| **Web UI Mode** | Web interface for browsing through the proxy |
|
|
|
|
## 🔧 Browser Configuration
|
|
|
|
To use FuckHTTP3 as a system-wide proxy:
|
|
|
|
### Firefox
|
|
|
|
1. Open Settings
|
|
2. Search for "proxy"
|
|
3. Click "Settings" in the Connection Settings section
|
|
4. Select "Manual proxy configuration"
|
|
5. Enter your proxy address and port
|
|
6. Check "Also use this proxy for HTTPS"
|
|
|
|
### Chrome/Chromium
|
|
|
|
> ⚠️ Chrome doesn't natively support HTTP/3 proxies. Use the web UI mode instead.
|
|
|
|
## 🔍 Troubleshooting
|
|
|
|
### Script Injection Issues
|
|
|
|
| Problem | Solution |
|
|
|---------|----------|
|
|
| Scripts not running | Ensure "Enable script injection" is checked |
|
|
| No confirmation | Verify script was saved successfully |
|
|
| Script blocked | Some sites use CSP which may block injected scripts |
|
|
| Testing | Try a simpler website like example.com first |
|
|
| Errors | Check browser console for any error messages |
|
|
|
|
### Certificate Warnings
|
|
|
|
| Environment | Solution |
|
|
|-------------|----------|
|
|
| Development | Add self-signed certificate to browser's trust store |
|
|
| Production | Use a properly signed certificate from a trusted CA |
|
|
|
|
## ⚠️ Limitations
|
|
|
|
- Some websites may block proxy connections
|
|
- Content Security Policy might prevent script injection
|
|
- Complex single-page applications may require more advanced injection techniques
|
|
|
|
## 📜 License
|
|
|
|
This project is licensed under the SuperNets License.
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
- Based on the quic-go library
|
|
- Inspired by other Go proxy implementations
|
|
|
|
---
|
|
|
|
**Note**: Use responsibly and respect website terms of service when injecting scripts. |