A transparent web proxy that brings any website to your domain using simple token subdomains.
- ๐ Truly Transparent: No content modification, shows websites exactly as they appear originally
- ๐งฉ Framework Agnostic: Works with Next.js, Nuxt.js, React, and all modern web technologies
- ๐ก๏ธ Security Bypass: Circumvents CORS, X-Frame-Options, and Content Security Policy restrictions
- ๐ฆ Simple Integration: Embed any website in your application with a single iframe
- ๐ Short Token System: Uses short, memorable tokens instead of complex encodings
- ๐ Smart Redirection: Direct URL redirection using the
?url=
parameter - ๐ Production-Ready: Optimized for performance and scalability with minimal memory footprint
- โฑ๏ธ Robust Error Handling: Smart timeouts and comprehensive error management
- ๐ Diagnostic Tools: Built-in tools to troubleshoot connectivity issues
ProxyWarp uses a smart token system to create clean, usable proxy URLs:
- When you request a website, ProxyWarp generates a short token (e.g.,
abc123
) for the domain - This token becomes a subdomain (e.g.,
abc123.proxywarp.com
) - All requests to this subdomain are transparently proxied to the original site
- Security headers that would prevent embedding are carefully removed
- All resources (JS, CSS, images) are seamlessly proxied through the same system
# Pull and run the Docker image
docker run -p 3000:3000 -e BASE_DOMAIN=your-domain.com synapsr/proxywarp
# Clone the repository
git clone https://github.com/Synapsr/ProxyWarp.git
cd ProxyWarp
# Install dependencies
npm install
# Start the server
npm start
ProxyWarp is easily configured using environment variables:
Variable | Description | Default |
---|---|---|
PORT |
Server port | 3000 |
BASE_DOMAIN |
Your base domain for the proxy | proxywarp.com |
DEBUG |
Enable detailed logging | false |
DB_FILE |
Path to token database file | ./data/tokens.json |
TOKEN_LENGTH |
Length of generated tokens | 6 |
CLEANUP_INTERVAL_MS |
Interval for cleaning expired tokens | 86400000 (24h) |
TOKEN_EXPIRATION_MS |
Time until tokens expire | 2592000000 (30d) |
DEFAULT_PROTOCOL |
Default protocol for target sites | https |
USER_AGENT |
User agent for proxy requests | Chrome UA string |
ProxyWarp now includes advanced configuration for timeouts and error handling:
Configuration Object | Description |
---|---|
TIMEOUTS |
Controls various timeout values for different operations |
CACHE |
Settings for the internal caching mechanism |
ERROR_HANDLING |
Configuration for robust error handling |
These advanced settings can be customized in the config.js
file.
For production use, set up your DNS with:
-
An A record for your main domain:
proxywarp.com โ [YOUR_SERVER_IP]
-
A wildcard record for all subdomains:
*.proxywarp.com โ [YOUR_SERVER_IP]
Simply add your target URL as a query parameter to the homepage:
https://proxywarp.com/?url=https://example.com/path
This will automatically redirect you to the appropriate token-based URL, creating a new token if needed.
Use a token subdomain directly:
https://abc123.proxywarp.com/path
Where abc123
is the token that maps to your desired website.
Convert URLs programmatically:
// Client-side example
fetch('https://proxywarp.com/convert?url=https://example.com')
.then(response => response.json())
.then(data => {
console.log(data.token); // The generated token
console.log
A630
(data.proxy); // The full proxy URL
});
<iframe
src="https://abc123.proxywarp.com"
width="100%"
height="600px"
style="border: none;"
></iframe>
GET /
- Home page with converter tool and documentationGET /?url=[URL]
- Direct URL redirection (NEW!)GET /convert?url=[URL]
- API to convert standard URLs to proxied versionsGET /test-token/[TOKEN]
- Test endpoint to verify token mappings (useful for debugging)
Response format for /convert
:
{
"original": "https://example.com",
"domain": "example.com",
"token": "abc123",
"proxy": "https://abc123.proxywarp.com"
}
GET /admin/diagnostic
- Retrieves diagnostic information about the serverGET /admin/test-connection?domain=[DOMAIN]
- Tests direct connectivity to a domainGET /admin/reload-tokens
- Forces a reload of the token databaseGET /admin/add-test-token?domain=[DOMAIN]
- Adds a test token for the specified domain
ProxyWarp uses a modular architecture for better maintainability:
proxywarp/
โโโ config.js # Configuration settings
โโโ server.js # Main entry point
โโโ diagnostic.js # Diagnostic tool
โโโ lib/ # Core functionality
โ โโโ proxyHandler.js # Proxy middleware
โ โโโ linkRewriter.js # HTML link rewriting
โ โโโ clientScript.js # Client-side script for dynamic links
โ โโโ tokenStore.js # Token management
โ โโโ utils.js # Utility functions
โโโ routes/ # Route handlers
โ โโโ index.js # Route definitions
โ โโโ templates/ # HTML templates
โ โโโ home.js # Homepage template
โโโ data/ # Data storage
โโโ tokens.json # Token database
- Some websites with sophisticated anti-proxy detection might not work perfectly
- WebSockets support requires additional configuration
- Very complex single-page applications might experience navigation issues
- Some features like PDF viewing may require special handling
- Sites with very restrictive security policies might detect and block the proxy
- ProxyWarp intentionally bypasses certain security controls to enable embedding
- Use responsibly and respect website terms of service
- Consider the privacy implications when proxying third-party content
- Not recommended for proxying sensitive data without additional security measures
If you're experiencing issues:
-
Enable debug mode:
DEBUG=true npm start
-
Test a specific token:
GET https://proxywarp.com/test-token/abc123
-
Run the diagnostic tool to identify connectivity issues:
node diagnostic.js
-
Check for timeout issues:
GET https://proxywarp.com/admin/test-connection?domain=example.com
-
In debug mode, view diagnostic information:
GET https://proxywarp.com/admin/diagnostic
- Timeouts: If you experience timeouts, check the target domain's response time with the diagnostic tool
- Connection Errors: Ensure proper DNS configuration for your base domain and wildcard subdomains
- Proxy Not Working: Verify the token exists and is correctly mapped to the domain
- High Memory Usage: Adjust cache settings in config.js to reduce memory footprint
This project is licensed under the MIT License - see the LICENSE file for details.
- http-proxy-middleware - Core proxy functionality
- express - Web framework
- vhost - Virtual host middleware
๐ ProxyWarp - Transparent proxy made simple