
Internetverkehr über Whatsapp tunneln

Dies ist ein auf Baileys basierendes Stück Code, mit dem Sie TCP-Daten durch zwei WhatsApp-Konten tunneln können.
Dies kann in verschiedenen Situationen nützlich sein, zum Beispiel bei Netzbetreibern, die unbegrenzte WhatsApp-Daten anbieten, oder in Flugzeugen, wo Sie ebenfalls unbegrenzte Social-Media-Daten erhalten.
Es verwendet Baileys, da es eine WS-basierte Multi-Device-WhatsApp-Bibliothek ist und daher in Zukunft auf Android verwendet werden könnte, zum Beispiel mit Termux.
Die Idee ist, es mit einem Proxy-Setup auf dem Server zu verwenden, wie folgt: [Client (eingeschränkter Zugriff) -> WhatsApp -> Server -> Proxy -> Internet]
Entschuldigung im Voraus, da Javascript nicht eine meiner primären Programmiersprachen ist :/
Nur für Bildungszwecke verwenden.
Es sendet TCP-Netzwerkpakete über WhatsApp-Text- und Datei-Nachrichten, abhängig von der Anzahl der Zeichen teilt es sie in verschiedene Textnachrichten oder Dateien auf.
Um nicht standardmäßig von WhatsApp ausgeloggt zu werden, ist es auf 20k Zeichen pro Nachricht begrenzt, momentan ist das in wasocket.js hartcodiert.
Ich habe mehrere Tests durchgeführt und alles darunter kann zu einer Sperre führen, weil zu viele Nachrichten gesendet werden, und alles über 80k kann zu einem Timeout führen.
Wenn ein Netzwerkpaket über dem Limit liegt (standardmäßig 20k Zeichen), wird es als Datei gesendet, falls aktiviert. Auch wenn mehrere Netzwerkpakete zwischengespeichert sind, wird das gleiche Kriterium verwendet.
Dateinachrichten werden als Binärdateien gesendet, TCP-Antworten werden mit einem Trennzeichen verkettet und mit brotli komprimiert, um die Datennutzung zu reduzieren.
Es cacht TCP-Socket-Antworten, um sie zu gruppieren und die maximale Datenmenge in einer Nachricht zu senden, wodurch die Anzahl der Nachrichten reduziert, die Geschwindigkeit verbessert und die Wahrscheinlichkeit einer Sperre verringert wird.
Vorher: (ohne Dateien und ohne Antwort-Caching)
curl -x localhost:12345 https://www.youtube.com
- 50-80 Nachrichten
- 30-40 Sekunden
Nachher: (mit Dateien und Antwort-Caching)
curl -x localhost:12345 https://www.youtube.com
- 6-8 Nachrichten
- 7-15 Sekunden
Falls Sie keine Dateien senden dürfen, verwenden Sie das --disable-files-Flag beim Starten des Servers und Clients, um diese Funktionalität zu deaktivieren.
Ich hatte die Idee auf einer Reise durch Südamerika, wo die Netzwerkdaten bei Betreibern normalerweise auf wenige GB begrenzt sind, aber WhatsApp ist normalerweise unbegrenzt. Ich habe versucht, diese Bibliothek zu erstellen, da ich zum damaligen Zeitpunkt keine nutzbare gefunden habe.
Sie müssen Zugriff auf zwei WhatsApp-Konten haben, eines für den Server und eines für den Client. Sie können einen lokalen Port weiterleiten oder einen externen Proxy verwenden.
Klonen Sie das Repository auf Ihrem Server und installieren Sie die Node-Abhängigkeiten.
cd path/to/wa-tunnelnpm installDann können Sie den Server mit folgendem Befehl starten, wobei port der Proxy-Port und host der Proxy-Host ist, den Sie weiterleiten möchten. Und number ist die WhatsApp-Nummer des Clients mit der Ländervorwahl ohne +.
npm run server host port number
Sie können einen lokalen Proxy-Server wie folgt verwenden:
npm run server localhost 3128 12345678901
Oder Sie können einen normalen Proxy-Server wie folgt verwenden:
npm run server 192.168.0.1 3128 12345678901
Klonen Sie das Repository auf Ihrem Server und installieren Sie die Node-Abhängigkeiten.
cd path/to/wa-tunnelnpm installDann können Sie den Server mit folgendem Befehl starten, wobei port der lokale Port ist, zu dem Sie verbinden werden, und number die WhatsApp-Nummer des Servers mit der Ländervorwahl ohne +.
npm run client port number
Zum Beispiel
npm run client 8080 1234567890
Beim ersten Öffnen des Skripts wird Baileys Sie bitten, den QR-Code mit der WhatsApp-App zu scannen, danach wird die Sitzung für die spätere Verwendung gespeichert.
Es kann abstürzen, das ist normal. Starten Sie danach einfach das Skript neu und Ihr Client/Server ist bereit!
Sobald Sie sowohl Client als auch Server bereit haben, können Sie mit curl testen und die Magie geschehen sehen.
curl -v -x proxyHost:proxyPort https://httpbin.org/ip
Mit den Beispielbefehlen wäre das:
curl -v -x localhost:8080 https://httpbin.org/ip
Es wurde auch mit einem normalen Browser wie Firefox getestet, es ist langsam, aber nutzbar.
Sie können auch andere Protokollports wie SSH weiterleiten, indem Sie den Server wie folgt einrichten:
npm run server localhost 22 12345678901
Und dann zum Server verbinden, indem Sie im Client verwenden:
ssh root@localhost -p 8080
Um es auf Android zu verwenden, können Sie es mit Termux und den folgenden Befehlen nutzen:
pkg update && pkg upgrade
pkg install git nodejs -y
git clone https://github.com/aleixrodriala/wa-tunnel.git
cd wa-tunnel
npm install
Die Verwendung dieser Bibliothek kann zur Sperrung Ihres WhatsApp-Kontos führen. Verwenden Sie sie mit einer temporären Nummer oder auf eigenes Risiko.