# Redirector ๐ฏ

**A flexible request logger and redirector with campaign tracking, analytics, and tunnel support**
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://hub.docker.com/)
## โก Quick Start (30 seconds)
### Install & Run
```bash
# Install
pip install redirector-osint
# Run (redirects to your target URL)
redirector run --redirect https://your-target.com
# View dashboard at http://localhost:3000
```
### Docker (One-liner)
```bash
docker run -p 8080:8080 -p 3000:3000 redirector:latest
```
> **Note**: The Docker image is now configured to automatically accept the security notice for non-interactive use.
## โจ What it does
- **Redirects** all traffic to your target URL
- **Logs** every request (IP, User-Agent, headers, etc.)
- **Dashboard** to view all logged requests
- **Export** data as CSV/JSON
Perfect for tracking marketing campaigns, testing, or analyzing traffic patterns.
<!-- GIF Placeholder: Overview demo showing complete workflow -->

*Demo GIF should show: Installing via pip, running redirector command, accessing dashboard, viewing logged requests, and exporting data - complete 30-second workflow*
## ๐ง Installation
### Method 1: pip (easiest)
```bash
pip install redirector-osint
```
### Method 2: Docker
```bash
docker run -p 8080:8080 -p 3000:3000 redirector:latest
```
The Docker image automatically accepts the security notice for non-interactive use.
### Method 3: From source
```bash
git clone https://github.com/beladevo/redirector.git
cd redirector
pip install .
```
---
## ๐ป Usage
### Basic Usage
<!-- GIF Placeholder: Basic usage demonstration -->

*Basic Usage GIF should show: Running simple redirect command, testing redirect in browser, viewing logged request in dashboard*
```bash
# Simple redirect
redirector run --redirect https://example.com
# With campaign name
redirector run --redirect https://target.com --campaign operation-red
# With authentication
redirector run \
--redirect https://target.com \
--campaign secure-op \
--dashboard-auth admin:password123
# With Cloudflare tunnel
redirector run \
--redirect https://target.com \
--campaign public-test \
--tunnel
```
### Configuration File
Generate a configuration template:
```bash
redirector config --output my-config.yaml
```
Edit the configuration:
```yaml
# Redirector Configuration
redirect_url: https://your-target.com
redirect_port: 8080
dashboard_port: 3000
campaign: my-campaign
dashboard_raw: false
dashboard_auth: admin:secure123
store_body: false
tunnel: false
host: 0.0.0.0
log_level: info
```
Use the configuration:
```bash
redirector run --config my-config.yaml
```
### Advanced Usage
```bash
# Raw dashboard mode (no CSS/JS)
redirector run --redirect https://target.com --dashboard-raw
# Store request bodies (LAB USE ONLY)
redirector run --redirect https://target.com --store-body
# Custom ports
redirector run \
--redirect https://target.com \
--redirect-port 9080 \
--dashboard-port 4000
# Custom database path
redirector run \
--redirect https://target.com \
--database /path/to/logs.db
```
---
## ๐ Dashboard Features
<!-- GIF Placeholder: Dashboard features demonstration -->

*Dashboard Features GIF should show: Opening dashboard, filtering requests by campaign, viewing request details modal, exporting data as CSV, switching between beautiful and raw modes*
### Beautiful UI Mode (Default)
- **Real-time updates** - Auto-refresh every 10 seconds
- **Advanced filtering** - Campaign, time range, IP, User-Agent, method, path
- **Interactive tables** - Sortable columns with pagination
- **Detail modals** - Click any log entry for full details
- **Export buttons** - One-click CSV/JSONL export
- **Statistics cards** - Request counts, methods, top user agents
- **Mobile responsive** - Works perfectly on all devices
### Raw Mode
- **Terminal-style** - Green-on-black hacker aesthetic
- **Lightweight** - No JavaScript, minimal CSS
- **Fast loading** - Optimized for slow connections
- **Auto-refresh** - Simple page reload every 30 seconds
Access the dashboard at `http://localhost:3000` (or your configured port).
---
## ๐ API Reference
### Base URL
```
http://localhost:3000/api
```
### Endpoints
#### Health Check
```http
GET /api/health
```
#### Campaigns
```http
GET /api/campaigns
POST /api/campaigns
```
#### Logs
```http
GET /api/logs?campaign=test&page=1&per_page=50
GET /api/logs?start_time=2024-01-01T00:00:00Z&end_time=2024-01-02T00:00:00Z
GET /api/logs?ip_filter=192.168&ua_filter=Chrome&method_filter=GET
```
#### Exports
```http
GET /api/logs/export.csv?campaign=test
GET /api/logs/export.jsonl?start_time=2024-01-01T00:00:00Z
```
#### Statistics
```http
GET /api/stats?campaign=specific-campaign
```
### Example API Usage
```python
import httpx
client = httpx.Client(base_url="http://localhost:3000")
# Get recent logs
response = client.get("/api/logs?per_page=10")
logs = response.json()
# Create new campaign
campaign_data = {
"name": "api-campaign",
"description": "Created via API"
}
response = client.post("/api/campaigns", json=campaign_data)
# Export logs as CSV
with open("export.csv", "wb") as f:
with client.stream("GET", "/api/logs/export.csv") as response:
for chunk in response.iter_bytes():
f.write(chunk)
```
---
## ๐ณ Docker Deployment
<!-- GIF Placeholder: Docker deployment demonstration -->

*Docker Deployment GIF should show: Running docker command, container starting up, accessing both redirect and dashboard ports, viewing logs in docker logs*
### Basic Deployment
```yaml
# docker-compose.yml
version: '3.8'
services:
redirector:
image: redirector:latest
ports:
- \"8080:8080\"
- \"3000:3000\"
environment:
- REDIRECT_URL=https://your-target.com
- CAMPAIGN=docker-campaign
volumes:
- ./data:/app/data
```
### With Cloudflare Tunnel
```bash
# Enable tunnel profile
docker-compose --profile tunnel up
```
### Production Setup
```yaml
version: '3.8'
services:
redirector:
image: redirector:latest
restart: unless-stopped
ports:
- \"8080:8080\"
- \"3000:3000\"
environment:
- REDIRECT_URL=https://your-target.com
- CAMPAIGN=production-campaign
- DASHBOARD_AUTH=admin:secure-password-123
volumes:
- redirector-data:/app/data
- redirector-logs:/app/logs
healthcheck:
test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:3000/health\"]
interval: 30s
timeout: 10s
retries: 3
volumes:
redirector-data:
redirector-logs:
```
---
## ๐งช Development
<!-- GIF Placeholder: Development setup demonstration -->

*Development Setup GIF should show: Cloning repository, running make dev, running make run, making code changes, running make check, tests passing*
### Setup Development Environment
```bash
git clone https://github.com/beladevo/redirector.git
cd redirector
# Install with development dependencies
make dev
# Or manually
pip install -e \".[dev]\"
pre-commit install
```
### Development Commands
```bash
# Run development server
make run
# Run with demo configuration
make run-demo
# Format code
make format
# Run linting
make lint
# Run type checking
make typecheck
# Run tests
make test
# Run all quality checks
make check
# Generate config template
make config
# View statistics
make stats
```
### Running Tests
```bash
# All tests
pytest
# Unit tests only
pytest tests/unit/
# Integration tests only
pytest tests/integration/
# With coverage
pytest --cov=src/redirector --cov-report=html
```
### Project Structure
```
redirector/
โโโ src/redirector/ # Main package
โ โโโ api/ # API routes and models
โ โโโ cli/ # Command-line interface
โ โโโ core/ # Core functionality
โ โโโ dashboard/ # Dashboard server
โ โโโ servers/ # Redirect and dashboard servers
โโโ templates/ # Jinja2 templates
โโโ static/ # Static assets
โโโ tests/ # Test suite
โ โโโ unit/ # Unit tests
โ โโโ integration/ # Integration tests
โโโ docs/ # Documentation
โโโ Dockerfile # Container definition
โโโ docker-compose.yml # Container orchestration
โโโ pyproject.toml # Package configuration
โโโ Makefile # Development commands
โโโ README.md # This file
```
---
## ๐ฏ Use Cases
### Marketing & Analytics
- **Campaign Tracking** - Monitor marketing campaign performance
- **A/B Testing** - Track different redirect variants
- **User Behavior Analysis** - Understand user interaction patterns
- **Traffic Analysis** - Analyze visitor demographics and patterns
### Development & Research
- **API Testing** - Mock external service redirects and analyze responses
- **Integration Testing** - Test redirect behavior in different environments
- **Performance Monitoring** - Track response times and system performance
- **Data Collection** - Gather insights for research and optimization
### Development & Testing
- **API testing** - Mock external service redirects
- **Load testing** - Monitor performance under load
- **Integration testing** - Test redirect behavior
- **Monitoring setup** - Validate logging systems
---
## โ๏ธ Configuration Options
### Core Settings
| Setting | Default | Description |
|---------|---------|-------------|
| `redirect_url` | `https://example.com` | Target URL for redirects |
| `redirect_port` | `8080` | Port for redirect server |
| `dashboard_port` | `3000` | Port for dashboard |
| `campaign` | Auto-generated | Campaign name |
### Dashboard Settings
| Setting | Default | Description |
|---------|---------|-------------|
| `dashboard_raw` | `false` | Use raw HTML mode |
| `dashboard_auth` | `null` | Basic auth (user:pass) |
### Logging Settings
| Setting | Default | Description |
|---------|---------|-------------|
| `store_body` | `false` | Store request bodies |
| `database_path` | `logs.db` | SQLite database path |
### Security Settings
| Setting | Default | Description |
|---------|---------|-------------|
| `max_body_size` | `10485760` | Max body size (10MB) |
| `rate_limit` | `null` | Requests per minute |
---
## ๐ Monitoring & Analytics
### Built-in Statistics
- **Request counts** by campaign, method, time period
- **Top user agents** for identifying common browsers/bots
- **Geographic distribution** (via IP analysis)
- **Timing analysis** with response time tracking
- **Traffic patterns** with hourly/daily breakdowns
### Alerting Integration
```python
# Example: Slack webhook integration
import httpx
def send_alert(message):
webhook_url = "https://hooks.slack.com/..."
httpx.post(webhook_url, json={"text": message})
# Monitor for specific conditions
logs = redirector_client.get("/api/logs").json()
for log in logs["logs"]:
if "suspicious-pattern" in log.get("user_agent", ""):
send_alert(f"Suspicious request from {log['ip']}")
```
---
## ๐ Security Considerations
### Network Security
- Run behind reverse proxy (nginx, cloudflare) in production
- Use TLS termination for HTTPS
- Implement network segmentation
- Monitor for DDoS attacks
### Data Protection
- Regularly backup database
- Use encrypted storage for sensitive campaigns
- Implement data retention policies
- Sanitize logs before sharing
### Access Control
- Use strong passwords for dashboard authentication
- Limit dashboard access to authorized personnel
- Implement IP whitelisting where possible
- Use VPN access for remote operations
---
## ๐ค Contributing
We welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) for details.
### Quick Contribution Setup
```bash
git clone https://github.com/beladevo/redirector.git
cd redirector
make dev
make check # Run all quality checks
```
### Reporting Issues
Please report security issues privately.
For other issues, use GitHub Issues with the appropriate template.
---
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
---
## ๐ Acknowledgments
- Built with [FastAPI](https://fastapi.tiangolo.com/) for high-performance APIs
- [Typer](https://typer.tiangolo.com/) for beautiful CLIs
- [Pico.css](https://picocss.com/) for elegant styling
- [Alpine.js](https://alpinejs.dev/) for reactive interfaces
- [SQLAlchemy](https://sqlalchemy.org/) for database management
---
## ๐ Support
- **Documentation**: This README and inline help (`redirector --help`)
- **Issues**: [GitHub Issues](https://github.com/beladevo/redirector/issues)
- **Discussions**: [GitHub Discussions](https://github.com/beladevo/redirector/discussions)
---
**Remember: Use this tool responsibly and only with proper authorization. Stay ethical, stay legal! ๐ก๏ธ**
Raw data
{
"_id": null,
"home_page": null,
"name": "redirector-osint",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "analytics, cybersecurity, ip-grabber, osint, redirector, request-logging, security-tool, threat-intelligence, user-agent-tracking",
"author": null,
"author_email": "Redirector Contributors <security@redirector-tool.com>",
"download_url": "https://files.pythonhosted.org/packages/e4/6b/b1cd9bfda43194a65da97dc199ae126c045f3e491d184adc91049e8afbb2/redirector_osint-2.0.3.tar.gz",
"platform": null,
"description": "# Redirector \ud83c\udfaf\n\n\n\n**A flexible request logger and redirector with campaign tracking, analytics, and tunnel support**\n\n[](https://opensource.org/licenses/MIT)\n[](https://www.python.org/downloads/)\n[](https://hub.docker.com/)\n\n## \u26a1 Quick Start (30 seconds)\n\n### Install & Run\n\n```bash\n# Install\npip install redirector-osint\n\n# Run (redirects to your target URL)\nredirector run --redirect https://your-target.com\n\n# View dashboard at http://localhost:3000\n```\n\n### Docker (One-liner)\n\n```bash\ndocker run -p 8080:8080 -p 3000:3000 redirector:latest\n```\n\n> **Note**: The Docker image is now configured to automatically accept the security notice for non-interactive use.\n\n## \u2728 What it does\n\n- **Redirects** all traffic to your target URL\n- **Logs** every request (IP, User-Agent, headers, etc.) \n- **Dashboard** to view all logged requests\n- **Export** data as CSV/JSON\n\nPerfect for tracking marketing campaigns, testing, or analyzing traffic patterns.\n\n<!-- GIF Placeholder: Overview demo showing complete workflow -->\n\n*Demo GIF should show: Installing via pip, running redirector command, accessing dashboard, viewing logged requests, and exporting data - complete 30-second workflow*\n\n## \ud83d\udd27 Installation\n\n### Method 1: pip (easiest)\n\n```bash\npip install redirector-osint\n```\n\n### Method 2: Docker\n\n```bash\ndocker run -p 8080:8080 -p 3000:3000 redirector:latest\n```\n\nThe Docker image automatically accepts the security notice for non-interactive use.\n\n### Method 3: From source\n\n```bash\ngit clone https://github.com/beladevo/redirector.git\ncd redirector\npip install .\n```\n\n---\n\n## \ud83d\udcbb Usage\n\n### Basic Usage\n\n<!-- GIF Placeholder: Basic usage demonstration -->\n\n*Basic Usage GIF should show: Running simple redirect command, testing redirect in browser, viewing logged request in dashboard*\n\n```bash\n# Simple redirect\nredirector run --redirect https://example.com\n\n# With campaign name\nredirector run --redirect https://target.com --campaign operation-red\n\n# With authentication\nredirector run \\\n --redirect https://target.com \\\n --campaign secure-op \\\n --dashboard-auth admin:password123\n\n# With Cloudflare tunnel\nredirector run \\\n --redirect https://target.com \\\n --campaign public-test \\\n --tunnel\n```\n\n### Configuration File\n\nGenerate a configuration template:\n\n```bash\nredirector config --output my-config.yaml\n```\n\nEdit the configuration:\n\n```yaml\n# Redirector Configuration\nredirect_url: https://your-target.com\nredirect_port: 8080\ndashboard_port: 3000\ncampaign: my-campaign\ndashboard_raw: false\ndashboard_auth: admin:secure123\nstore_body: false\ntunnel: false\nhost: 0.0.0.0\nlog_level: info\n```\n\nUse the configuration:\n\n```bash\nredirector run --config my-config.yaml\n```\n\n### Advanced Usage\n\n```bash\n# Raw dashboard mode (no CSS/JS)\nredirector run --redirect https://target.com --dashboard-raw\n\n# Store request bodies (LAB USE ONLY)\nredirector run --redirect https://target.com --store-body\n\n# Custom ports\nredirector run \\\n --redirect https://target.com \\\n --redirect-port 9080 \\\n --dashboard-port 4000\n\n# Custom database path\nredirector run \\\n --redirect https://target.com \\\n --database /path/to/logs.db\n```\n\n---\n\n## \ud83d\udcca Dashboard Features\n\n<!-- GIF Placeholder: Dashboard features demonstration -->\n\n*Dashboard Features GIF should show: Opening dashboard, filtering requests by campaign, viewing request details modal, exporting data as CSV, switching between beautiful and raw modes*\n\n### Beautiful UI Mode (Default)\n- **Real-time updates** - Auto-refresh every 10 seconds\n- **Advanced filtering** - Campaign, time range, IP, User-Agent, method, path\n- **Interactive tables** - Sortable columns with pagination\n- **Detail modals** - Click any log entry for full details\n- **Export buttons** - One-click CSV/JSONL export\n- **Statistics cards** - Request counts, methods, top user agents\n- **Mobile responsive** - Works perfectly on all devices\n\n### Raw Mode\n- **Terminal-style** - Green-on-black hacker aesthetic\n- **Lightweight** - No JavaScript, minimal CSS\n- **Fast loading** - Optimized for slow connections\n- **Auto-refresh** - Simple page reload every 30 seconds\n\nAccess the dashboard at `http://localhost:3000` (or your configured port).\n\n---\n\n## \ud83d\udd17 API Reference\n\n### Base URL\n```\nhttp://localhost:3000/api\n```\n\n### Endpoints\n\n#### Health Check\n```http\nGET /api/health\n```\n\n#### Campaigns\n```http\nGET /api/campaigns\nPOST /api/campaigns\n```\n\n#### Logs\n```http\nGET /api/logs?campaign=test&page=1&per_page=50\nGET /api/logs?start_time=2024-01-01T00:00:00Z&end_time=2024-01-02T00:00:00Z\nGET /api/logs?ip_filter=192.168&ua_filter=Chrome&method_filter=GET\n```\n\n#### Exports\n```http\nGET /api/logs/export.csv?campaign=test\nGET /api/logs/export.jsonl?start_time=2024-01-01T00:00:00Z\n```\n\n#### Statistics\n```http\nGET /api/stats?campaign=specific-campaign\n```\n\n### Example API Usage\n\n```python\nimport httpx\n\nclient = httpx.Client(base_url=\"http://localhost:3000\")\n\n# Get recent logs\nresponse = client.get(\"/api/logs?per_page=10\")\nlogs = response.json()\n\n# Create new campaign\ncampaign_data = {\n \"name\": \"api-campaign\",\n \"description\": \"Created via API\"\n}\nresponse = client.post(\"/api/campaigns\", json=campaign_data)\n\n# Export logs as CSV\nwith open(\"export.csv\", \"wb\") as f:\n with client.stream(\"GET\", \"/api/logs/export.csv\") as response:\n for chunk in response.iter_bytes():\n f.write(chunk)\n```\n\n---\n\n## \ud83d\udc33 Docker Deployment\n\n<!-- GIF Placeholder: Docker deployment demonstration -->\n\n*Docker Deployment GIF should show: Running docker command, container starting up, accessing both redirect and dashboard ports, viewing logs in docker logs*\n\n### Basic Deployment\n\n```yaml\n# docker-compose.yml\nversion: '3.8'\n\nservices:\n redirector:\n image: redirector:latest\n ports:\n - \\\"8080:8080\\\"\n - \\\"3000:3000\\\"\n environment:\n - REDIRECT_URL=https://your-target.com\n - CAMPAIGN=docker-campaign\n volumes:\n - ./data:/app/data\n```\n\n### With Cloudflare Tunnel\n\n```bash\n# Enable tunnel profile\ndocker-compose --profile tunnel up\n```\n\n### Production Setup\n\n```yaml\nversion: '3.8'\n\nservices:\n redirector:\n image: redirector:latest\n restart: unless-stopped\n ports:\n - \\\"8080:8080\\\"\n - \\\"3000:3000\\\"\n environment:\n - REDIRECT_URL=https://your-target.com\n - CAMPAIGN=production-campaign\n - DASHBOARD_AUTH=admin:secure-password-123\n volumes:\n - redirector-data:/app/data\n - redirector-logs:/app/logs\n healthcheck:\n test: [\\\"CMD\\\", \\\"curl\\\", \\\"-f\\\", \\\"http://localhost:3000/health\\\"]\n interval: 30s\n timeout: 10s\n retries: 3\n\nvolumes:\n redirector-data:\n redirector-logs:\n```\n\n---\n\n## \ud83e\uddea Development\n\n<!-- GIF Placeholder: Development setup demonstration -->\n\n*Development Setup GIF should show: Cloning repository, running make dev, running make run, making code changes, running make check, tests passing*\n\n### Setup Development Environment\n\n```bash\ngit clone https://github.com/beladevo/redirector.git\ncd redirector\n\n# Install with development dependencies\nmake dev\n\n# Or manually\npip install -e \\\".[dev]\\\"\npre-commit install\n```\n\n### Development Commands\n\n```bash\n# Run development server\nmake run\n\n# Run with demo configuration\nmake run-demo\n\n# Format code\nmake format\n\n# Run linting\nmake lint\n\n# Run type checking\nmake typecheck\n\n# Run tests\nmake test\n\n# Run all quality checks\nmake check\n\n# Generate config template\nmake config\n\n# View statistics\nmake stats\n```\n\n### Running Tests\n\n```bash\n# All tests\npytest\n\n# Unit tests only\npytest tests/unit/\n\n# Integration tests only\npytest tests/integration/\n\n# With coverage\npytest --cov=src/redirector --cov-report=html\n```\n\n### Project Structure\n\n```\nredirector/\n\u251c\u2500\u2500 src/redirector/ # Main package\n\u2502 \u251c\u2500\u2500 api/ # API routes and models\n\u2502 \u251c\u2500\u2500 cli/ # Command-line interface\n\u2502 \u251c\u2500\u2500 core/ # Core functionality\n\u2502 \u251c\u2500\u2500 dashboard/ # Dashboard server\n\u2502 \u2514\u2500\u2500 servers/ # Redirect and dashboard servers\n\u251c\u2500\u2500 templates/ # Jinja2 templates\n\u251c\u2500\u2500 static/ # Static assets\n\u251c\u2500\u2500 tests/ # Test suite\n\u2502 \u251c\u2500\u2500 unit/ # Unit tests\n\u2502 \u2514\u2500\u2500 integration/ # Integration tests\n\u251c\u2500\u2500 docs/ # Documentation\n\u251c\u2500\u2500 Dockerfile # Container definition\n\u251c\u2500\u2500 docker-compose.yml # Container orchestration\n\u251c\u2500\u2500 pyproject.toml # Package configuration\n\u251c\u2500\u2500 Makefile # Development commands\n\u2514\u2500\u2500 README.md # This file\n```\n\n---\n\n## \ud83c\udfaf Use Cases\n\n### Marketing & Analytics\n- **Campaign Tracking** - Monitor marketing campaign performance\n- **A/B Testing** - Track different redirect variants\n- **User Behavior Analysis** - Understand user interaction patterns\n- **Traffic Analysis** - Analyze visitor demographics and patterns\n\n### Development & Research\n- **API Testing** - Mock external service redirects and analyze responses\n- **Integration Testing** - Test redirect behavior in different environments\n- **Performance Monitoring** - Track response times and system performance\n- **Data Collection** - Gather insights for research and optimization\n\n### Development & Testing\n- **API testing** - Mock external service redirects\n- **Load testing** - Monitor performance under load\n- **Integration testing** - Test redirect behavior\n- **Monitoring setup** - Validate logging systems\n\n---\n\n## \u2699\ufe0f Configuration Options\n\n### Core Settings\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `redirect_url` | `https://example.com` | Target URL for redirects |\n| `redirect_port` | `8080` | Port for redirect server |\n| `dashboard_port` | `3000` | Port for dashboard |\n| `campaign` | Auto-generated | Campaign name |\n\n### Dashboard Settings\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `dashboard_raw` | `false` | Use raw HTML mode |\n| `dashboard_auth` | `null` | Basic auth (user:pass) |\n\n### Logging Settings\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `store_body` | `false` | Store request bodies |\n| `database_path` | `logs.db` | SQLite database path |\n\n### Security Settings\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `max_body_size` | `10485760` | Max body size (10MB) |\n| `rate_limit` | `null` | Requests per minute |\n\n---\n\n## \ud83d\udcc8 Monitoring & Analytics\n\n### Built-in Statistics\n- **Request counts** by campaign, method, time period\n- **Top user agents** for identifying common browsers/bots\n- **Geographic distribution** (via IP analysis)\n- **Timing analysis** with response time tracking\n- **Traffic patterns** with hourly/daily breakdowns\n\n### Alerting Integration\n```python\n# Example: Slack webhook integration\nimport httpx\n\ndef send_alert(message):\n webhook_url = \"https://hooks.slack.com/...\"\n httpx.post(webhook_url, json={\"text\": message})\n\n# Monitor for specific conditions\nlogs = redirector_client.get(\"/api/logs\").json()\nfor log in logs[\"logs\"]:\n if \"suspicious-pattern\" in log.get(\"user_agent\", \"\"):\n send_alert(f\"Suspicious request from {log['ip']}\")\n```\n\n---\n\n## \ud83d\udd12 Security Considerations\n\n### Network Security\n- Run behind reverse proxy (nginx, cloudflare) in production\n- Use TLS termination for HTTPS\n- Implement network segmentation\n- Monitor for DDoS attacks\n\n### Data Protection\n- Regularly backup database\n- Use encrypted storage for sensitive campaigns\n- Implement data retention policies\n- Sanitize logs before sharing\n\n### Access Control\n- Use strong passwords for dashboard authentication\n- Limit dashboard access to authorized personnel\n- Implement IP whitelisting where possible\n- Use VPN access for remote operations\n\n---\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Quick Contribution Setup\n```bash\ngit clone https://github.com/beladevo/redirector.git\ncd redirector\nmake dev\nmake check # Run all quality checks\n```\n\n### Reporting Issues\nPlease report security issues privately.\nFor other issues, use GitHub Issues with the appropriate template.\n\n---\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n## \ud83c\udfc6 Acknowledgments\n\n- Built with [FastAPI](https://fastapi.tiangolo.com/) for high-performance APIs\n- [Typer](https://typer.tiangolo.com/) for beautiful CLIs\n- [Pico.css](https://picocss.com/) for elegant styling\n- [Alpine.js](https://alpinejs.dev/) for reactive interfaces\n- [SQLAlchemy](https://sqlalchemy.org/) for database management\n\n---\n\n## \ud83d\udcde Support\n\n- **Documentation**: This README and inline help (`redirector --help`)\n- **Issues**: [GitHub Issues](https://github.com/beladevo/redirector/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/beladevo/redirector/discussions)\n\n---\n\n**Remember: Use this tool responsibly and only with proper authorization. Stay ethical, stay legal! \ud83d\udee1\ufe0f**",
"bugtrack_url": null,
"license": null,
"summary": "Professional OSINT tool for URL redirection with comprehensive request logging, IP tracking, and user-agent analysis",
"version": "2.0.3",
"project_urls": {
"Homepage": "https://github.com/beladevo/redirector",
"Issues": "https://github.com/beladevo/redirector/issues",
"Repository": "https://github.com/beladevo/redirector.git"
},
"split_keywords": [
"analytics",
" cybersecurity",
" ip-grabber",
" osint",
" redirector",
" request-logging",
" security-tool",
" threat-intelligence",
" user-agent-tracking"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0398aff2fb1f21cc633f2e058c48d3b018633f212881d76ae3174b9d44be8689",
"md5": "2d6e1987bd2df1c8dbda6be3137d1a50",
"sha256": "70e26a44e24e703149170e5eeeb040a1ec5b95668c38fb61e5a7f28183f8b55d"
},
"downloads": -1,
"filename": "redirector_osint-2.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2d6e1987bd2df1c8dbda6be3137d1a50",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 34464,
"upload_time": "2025-09-05T10:39:53",
"upload_time_iso_8601": "2025-09-05T10:39:53.530584Z",
"url": "https://files.pythonhosted.org/packages/03/98/aff2fb1f21cc633f2e058c48d3b018633f212881d76ae3174b9d44be8689/redirector_osint-2.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e46bb1cd9bfda43194a65da97dc199ae126c045f3e491d184adc91049e8afbb2",
"md5": "6bbc80abb3122debaeb19a252a1b1e5c",
"sha256": "a0f9afc5897ac228b9de9810ef2fcc8b0d79e9ccb755f8ad7f5f045259e4a07f"
},
"downloads": -1,
"filename": "redirector_osint-2.0.3.tar.gz",
"has_sig": false,
"md5_digest": "6bbc80abb3122debaeb19a252a1b1e5c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 1668923,
"upload_time": "2025-09-05T10:39:55",
"upload_time_iso_8601": "2025-09-05T10:39:55.069703Z",
"url": "https://files.pythonhosted.org/packages/e4/6b/b1cd9bfda43194a65da97dc199ae126c045f3e491d184adc91049e8afbb2/redirector_osint-2.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-05 10:39:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "beladevo",
"github_project": "redirector",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "fastapi",
"specs": [
[
">=",
"0.111.0"
]
]
},
{
"name": "uvicorn",
"specs": [
[
">=",
"0.30.1"
]
]
},
{
"name": "typer",
"specs": [
[
">=",
"0.12.3"
]
]
},
{
"name": "sqlalchemy",
"specs": [
[
">=",
"2.0.32"
]
]
},
{
"name": "jinja2",
"specs": [
[
">=",
"3.1.4"
]
]
},
{
"name": "pyyaml",
"specs": [
[
">=",
"6.0.1"
]
]
},
{
"name": "rich",
"specs": [
[
">=",
"13.7.1"
]
]
},
{
"name": "httpx",
"specs": [
[
">=",
"0.27.0"
]
]
},
{
"name": "python-multipart",
"specs": [
[
">=",
"0.0.9"
]
]
},
{
"name": "aiofiles",
"specs": [
[
">=",
"23.2.1"
]
]
},
{
"name": "passlib",
"specs": [
[
">=",
"1.7.4"
]
]
},
{
"name": "python-jose",
"specs": [
[
">=",
"3.3.0"
]
]
}
],
"lcname": "redirector-osint"
}