Thank you for your interest in contributing to this transparent proxy project! This guide will help you get started.
Transproxy is a macOS transparent TCP proxy that handles both proxy-aware and proxy-unaware iOS apps by:
- Intercepting pfctl-redirected traffic
- Extracting destinations from HTTP Host headers and TLS SNI
- Forwarding through Privoxy for content filtering
- Supporting dual-proxy architecture for mixed app behaviors
- macOS (required for pfctl support)
- Python 3.7+
- Privoxy or similar HTTP proxy
- Admin access for pfctl rules
-
Clone the repository:
git clone https://github.com/jerry7991/transproxy.git cd transproxy -
Install Privoxy:
brew install privoxy brew services start privoxy
-
Test the proxy:
python3 src/transparent_tcp_proxy.py --help
- Use the GitHub issue tracker
- Include detailed logs with
--verboseflag - Provide network configuration details
- Mention iOS version and affected apps
- Check existing issues first
- Describe the use case clearly
- Consider security and performance implications
- Provide implementation ideas if possible
-
Protocol Support
- FTP transparent proxying
- SMTP/IMAP support
- Custom protocol handlers
-
Platform Compatibility
- Linux iptables integration
- FreeBSD pf support
- Windows netsh/WinDivert
-
Performance Optimization
- Async I/O with asyncio
- Connection pooling
- Memory usage optimization
-
Security Enhancements
- Certificate validation
- Rate limiting
- Access control lists
-
Monitoring & Debugging
- Metrics collection
- Web dashboard
- Real-time traffic analysis
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Test your changes thoroughly
- Document new features
- Submit a pull request
- Follow PEP 8 for Python code
- Use meaningful variable names
- Add docstrings for functions
- Include inline comments for complex logic
- Keep functions focused and small
# Test basic functionality
python3 src/transparent_tcp_proxy.py --improved-tls
# Test with different protocols
curl -v http://httpbin.org/ip
curl -v https://httpbin.org/ip
# Test pfctl rules
sudo pfctl -s nat
sudo pfctl -s state | grep 192.168.2transproxy/
├── src/
│ ├── transparent_tcp_proxy.py # Main proxy implementation
│ └── a.py # Legacy/development code
├── config/
│ ├── pf/ # pfctl configuration examples
│ ├── pac/ # PAC file examples
│ └── mobileconfig/ # iOS configuration profiles
├── docs/
│ ├── TRANSPARENT_PROXY_GUIDE.md # Comprehensive technical guide
│ └── README.md # Quick start guide
└── pf-no-loops.conf # Production pfctl rules
- PAC File Loops: Check pfctl exemption rules
- TLS Without SNI: Chrome proxy-aware behavior
- Connection Refused: Privoxy not running
- No Internet: pfctl rules too broad
# Check pfctl status
sudo pfctl -s info
sudo pfctl -s nat
sudo pfctl -s state
# Monitor connections
sudo lsof -i :8001
sudo lsof -i :48080
# Network analysis
sudo tcpdump -i bridge100 host 192.168.2.4- Update
TRANSPARENT_PROXY_GUIDE.mdfor technical details - Add configuration examples
- Include troubleshooting steps
- Update README.md if needed
- Use clear, concise language
- Include code examples
- Add network diagrams where helpful
- Explain the "why" not just the "how"
- HTTP transparent proxying
- HTTPS with SNI extraction
- Proxy-aware app exemption
- PAC file handling
- Error handling and logging
- Large TLS handshakes
- Missing SNI extensions
- Malformed HTTP requests
- Connection timeouts
- High concurrent load
- iOS Safari browsing
- Netflix streaming
- App Store downloads
- Background app updates
- System service connections
- Never log sensitive data (passwords, tokens)
- Validate all input data
- Handle TLS properly (no MITM unless explicit)
- Respect user privacy
- Follow secure coding practices
This project is open source. By contributing, you agree that your contributions will be licensed under the same license as the project.
- Be respectful and inclusive
- Help others learn and contribute
- Share knowledge and experiences
- Focus on constructive feedback
- Open an issue for technical questions
- Check the Technical Guide first
- Review existing issues and discussions
Thank you for contributing! 🎉