

これは Baileys をベースにしたコードで、2つのWhatsappアカウントを介してTCPデータをトンネリングできます。
これは様々な状況で使用できます。例えば、WhatsAppデータが無制限のネットワークキャリアや、ソーシャルネットワークデータが無制限の飛行機内などです。
Baileysを使用しているのは、WSベースのマルチデバイスWhatsAppライブラリであり、将来的にはTermuxなどを使用してAndroidでも使用できる可能性があるからです。
このアイデアは、サーバー上でプロキシを設定して次のように使用することです:[Client (制限されたアクセス) -> Whatsapp -> Server -> Proxy -> Internet]
先にお詫び申し上げます。JavaScriptは私の主要なプログラミング言語の一つではありません。:/
教育目的のみに使用してください。
TCPネットワークパケットをWhatsAppのテキストメッセージとファイルメッセージを介して送信します。文字数に応じて、異なるテキストメッセージまたはファイルに分割します。
WhatsAppによるタイムアウトを防ぐため、デフォルトでは1メッセージあたり20,000文字に制限されています。現時点ではwasocket.jsにハードコードされています。
複数のテストを行いましたが、それ以下だとメッセージを送りすぎてBANされる可能性があり、80kを超えるとタイムアウトする可能性があります。
ネットワークパッケージが上限(デフォルトでは20k文字)を超える場合、有効になっていればファイルとして送信されます。また、複数のネットワークパッケージがキャッシュされている場合も同じ基準が適用されます。
ファイルメッセージはバイナリファイルとして送信され、TCP応答はデリミタで連結され、brotliを使用して圧縮され、データ使用量を削減します。
TCPソケット応答をキャッシュしてグループ化し、1つのメッセージで最大量のデータを送信することで、メッセージ数を減らし、速度を向上させ、BANされる確率を低減します。
Before: (ファイルなし、応答キャッシュなし)
curl -x localhost:12345 https://www.youtube.com
- 50-80 messages
- 30-40 seconds
After: (ファイルあり、応答キャッシュあり)
curl -x localhost:12345 https://www.youtube.com
- 6-8 messages
- 7-15 seconds
ファイルの送信が許可されていない場合は、サーバーとクライアントを起動する際に --disable-files フラグを使用してこの機能を無効にしてください。
南米を旅行中に思いつきました。キャリアのネットワークデータは通常数GBに制限されていますが、WhatsAppはたいてい無制限です。当時、使えるライブラリが見つからなかったので、このライブラリを作成しようと思いました。
2つのWhatsAppアカウント(サーバー用とクライアント用)にアクセスできる必要があります。ローカルポートを転送するか、外部プロキシを使用できます。
サーバー上でリポジトリをクローンし、Nodeの依存関係をインストールします。
cd path/to/wa-tunnelnpm install次のコマンドでサーバーを起動します。port は転送するプロキシポート、host は転送するプロキシホストです。number は国コードを含め、+記号なしのクライアントWhatsApp番号です。
npm run server host port number
以下のようにローカルプロキシサーバーを使用できます:
npm run server localhost 3128 12345678901
または、以下のように通常のプロキシサーバーを使用できます:
npm run server 192.168.0.1 3128 12345678901
サーバー上でリポジトリをクローンし、Nodeの依存関係をインストールします。
cd path/to/wa-tunnelnpm install次のコマンドでサーバーを起動します。ここで、port は接続するローカルポート、number はサーバーのWhatsApp番号(国コードを含め、+なし)です。
npm run client port number
例えば
npm run client 8080 1234567890
スクリプトを初めて開くと、BaileysがWhatsAppアプリでQRコードをスキャンするよう要求します。その後、セッションが保存され、後で使用できます。
クラッシュする可能性がありますが、それは正常です。その後、スクリプトを再起動すれば、クライアント/サーバーの準備は完了です!
クライアントとサーバーの両方の準備ができたら、curlを使用してテストし、魔法が起こるのを見てください。
curl -v -x proxyHost:proxyPort https://httpbin.org/ip
例のコマンドでは次のようになります:
curl -v -x localhost:8080 https://httpbin.org/ip
Firefoxのような通常のブラウザでもテストされています。遅いですが使用可能です。
次のようにサーバーを設定することで、SSHなどの他のプロトコルのポートを転送することもできます:
npm run server localhost 22 12345678901
そして、クライアントで次のようにサーバーに接続します:
ssh root@localhost -p 8080
Androidで使用するには、Termux を使用して次のコマンドを実行します:
pkg update && pkg upgrade
pkg install git nodejs -y
git clone https://github.com/aleixrodriala/wa-tunnel.git
cd wa-tunnel
npm install
このライブラリを使用するとWhatsAppアカウントがBANされる可能性があります。一時的な番号を使用するか、自己責任で使用してください。