FuckHTTP3/README.md

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.