
Whatsapp을 통한 인터넷 트래픽 터널링

이는 Baileys를 기반으로 한 코드로, 두 개의 Whatsapp 계정을 통해 TCP 데이터를 터널링할 수 있습니다.
이것은 다양한 상황에서 사용할 수 있습니다. 예를 들어, 무제한 Whatsapp 데이터를 제공하는 네트워크 통신사나 무제한 소셜 네트워크 데이터를 제공하는 비행기 등에서 사용할 수 있습니다.
WS 기반 멀티 디바이스 Whatsapp 라이브러리인 Baileys를 사용하므로, 예를 들어 Termux를 사용하여 향후 안드로이드에서도 사용할 수 있습니다.
아이디어는 서버에서 프록시 설정과 함께 사용하는 것입니다: [클라이언트(제한된 접근) -> Whatsapp -> 서버 -> 프록시 -> 인터넷]
Javascript가 제 주요 코딩 언어가 아니라는 점을 미리 사과드립니다 :/
교육 목적으로만 사용하세요.
문자 수에 따라 TCP 네트워크 패키지를 WhatsApp 텍스트 및 파일 메시지를 통해 전송하며, 이를 여러 개의 텍스트 메시지나 파일로 분할합니다.
WhatsApp에 의해 타임아웃되지 않도록 기본적으로 메시지당 20k자로 제한되어 있으며, 현재 wasocket.js에 하드코딩되어 있습니다.
여러 테스트를 수행했으며, 그 이하로 보내면 메시지를 너무 많이 보내서 차단될 수 있고, 80k 이상으로 보내면 타임아웃될 수 있습니다.
네트워크 패키지가 제한(기본 20k자)을 초과하면 활성화된 경우 파일로 전송됩니다. 또한 여러 네트워크 패키지가 캐시된 경우에도 동일한 기준을 사용합니다.
파일 메시지는 바이너리 파일로 전송되며, TCP 응답은 구분자로 연결되고 데이터 사용량을 줄이기 위해 brotli로 압축됩니다.
TCP 소켓 응답을 캐시하여 그룹화하고 메시지에서 최대 데이터 양을 전송함으로써 메시지 수를 줄이고 속도를 개선하며 차단될 확률을 낮춥니다.
이전: (파일 없음 및 응답 캐싱 없음)
curl -x localhost:12345 https://www.youtube.com
- 50-80 messages
- 30-40 seconds
이후: (파일 및 응답 캐싱 사용)
curl -x localhost:12345 https://www.youtube.com
- 6-8 messages
- 7-15 seconds
파일 전송이 허용되지 않는 경우 서버와 클라이언트를 시작할 때 --disable-files 플래그를 사용하여 이 기능을 비활성화하세요.
남미를 여행하는 동안 통신사의 네트워크 데이터는 일반적으로 몇 GB로 제한되지만 WhatsApp은 보통 무제한이라는 아이디어를 얻었습니다. 당시 사용 가능한 라이브러리를 찾지 못해 이 라이브러리를 만들기로 했습니다.
서버용과 클라이언트용으로 두 개의 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
안드로이드에서 사용하려면 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 계정이 차단될 수 있으므로 임시 번호를 사용하거나 자신의 책임 하에 사용하세요.