Ich habe meine eigene Tunneling-Plattform gebaut
Ich habe drei Tage damit verbracht, eine Web-App auf meinem Laptop zu perfektionieren. Sie sah perfekt aus. Dann habe ich versucht, sie auf meinem Handy zu testen. Alles ist zusammengebrochen.
Die lokale Entwicklung wird unübersichtlich, wenn man ein zweites Gerät benötigt. Das Teilen einer lokalen IP schlägt aufgrund von Firewalls und HTTPS-Zertifikatsproblemen fehl.
Ich habe Ngrok ausprobiert. Es funktioniert, aber die kostenlose Version bricht Verbindungen ab. Die URLs sehen auch schrecklich aus. Zufällige Zeichenfolgen wie a1b2-34-56.ngrok-free.app sind ungeeignet, um sie mit Kunden oder Teams zu teilen.
Ich wollte einen Tunnel mit sauberen, lesbaren URLs. Also habe ich meinen eigenen gebaut.
Ich habe einen benutzerdefinierten Tunnel mit einem URL-Shortener kombiniert. Ich habe KI hinzugefügt, um intelligente Slugs zu erstellen, und Sicherheitsmechanismen eingebaut.
Der Tech-Stack: • Tunnel / Proxy: Django Channels, Daphne, WebSockets, Python & Node.js CLI • Frontend: Next.js, TailwindCSS, Shadcn/UI • Backend: Django 5, Graphene GraphQL • Datenbank: PostgreSQL (Neon) • Auth: JWT, bcrypt • KI: Google Gemini • Sicherheit: MaxMind GeoLite2, Google Safe Browsing API
So funktioniert es:
- Bidirektionales WebSocket-Tunneling. Ein lokaler CLI-Agent verbindet sich mit einem Django-Server, um HTTP-Anfragen weiterzuleiten.
- Schutz vor Race Conditions. Ich verwende Django F()-Ausdrücke für atomare Updates, um die Genauigkeit der Analysen zu gewährleisten.
- Nicht-blockierende Telemetrie. Abfragen für Standort und Betriebssystem laufen in Hintergrund-Threads, um die Latenz niedrig zu halten.
- KI-Slugs. Gemini liest die Ziel-URL, um einen aussagekräftigen Slug anstelle von Zufallstext zu erstellen.
- Proaktive Sicherheit. Ich blockiere private IP-Bereiche und führe Google Safe Browsing-Prüfungen durch, bevor ein Link gespeichert wird.
Das Backend und die Tunneling-Logik sind stabil. Das Frontend ist noch in Arbeit.
Ich bereite mich derzeit auf Prüfungen am IITM vor. Ich pausiere die Entwicklung neuer Funktionen, um mich auf mein Studium zu konzentrieren. Anstatt den Code einfach liegen zu lassen, stelle ich ihn zur Überprüfung bereit.
Ich benötige euer Feedback zu ein paar Dingen:
- Latenz: Wie kann ich Redirects bei hoher Skalierung unter 10 ms halten?
- Sicherheit: Was ist der beste Weg, um die SSRF-Absicherung zu verstärken?
- Skalierbarkeit: Sollte ich WebSockets oder TCP für langlebige Tunnel verwenden?
- Observability: Welche Metriken sollte ich für die Tunnel-Gesundheit tracken?
Wenn ihr Erfahrung mit Proxy-Workern oder Systemdesign habt, teilt bitte eure Gedanken mit mir.
Vollständige Aufschlüsselung des Systemdesigns: [Link] Codebasis: [Link]
Wie testet ihr mobile Berechtigungen während der lokalen Entwicklung? Nutzt ihr Drittanbieter-Tunnel oder eigene Tools?
Quelle: https://dev.to/zallu/my-ngrok-urls-got-so-ugly-i-built-my-own-tunneling-platform-instead-59d
