Mécanisme derrière la numérisation de code QR de whatsapp webapp

  • Je n'ai pu trouver aucune réponse relative au mécanisme de travail du QR code scanning utilisé sur whatsapp Web-app.
  • comment l'authentification se produit-elle lorsque le téléphone (n'importe quel smartphone qui utilise whatsapp) scanne le code qr sur le navigateur.
  • je ne veux pas sur la pile de technologie derrière eux.Comme whatsapp utilise la version modifiée de xmpp,erlang, utilise des technologies web comme socket.io et ajax pour la version web à mettre en œuvre une telle fonctionnalité.
  • la question pourrait être large.Mais je suis impatient de connaître la mise en œuvre qui se cache derrière cela.
25
demandé sur SysHex 2016-05-20 18:24:56

2 réponses

Il fonctionne comme ceci :

1-vous ouvrez L'URL suivante sur votre navigateur:https://web.whatsapp.com/

2 - le navigateur charge la page avec toutes sortes de JS et de CSS , mais ouvre aussi un WebSocket ( wss://w4.web.whatsapp.com/ws) - Check this image:

enter image description here

2.1-toutes les 20000 millisecondes, vous voyez du trafic sur le WebSocket pour un rafraîchissement sur le code QR que vous avez sur votre écran. Ce est envoyé par le serveur au navigateur, à travers le WebSocket (WS nous l'appelons à partir de Maintenant)

enter image description here

2.2-sur chaque rafraîchissement de code QR reçu sur le WS, votre navigateur fait une demande GET pour le nouveau code QR dans L'encodage BASE64 .

2.3 - notez que ce WS spécifique que le serveur a ouvert entre le serveur et le navigateur est associé au code unique QR !!! Donc, connaissant le code QR, le serveur sait que WS est associées!

- - - - à ce stade , votre navigateur est prêt à faire le travail de L'application WhatsApp , mais il ne sait pas ce qui est votre ID (WHATSAPP identifier qui est votre numéro de mobile), parce qu'il ne peut pas vraiment vous obtenir le numéro de téléphone à partir de rien .

il ne nécessite pas non plus que vous le tapiez, car le serveur ne serait pas sûr que le numéro vous appartient vraiment .

donc, pour faire savoir aux serveurs que la session WS appartient à un téléphone spécifique, vous devez utilisez le téléphone pour lire QR

3 - vous prenez votre téléphone, qui est authentifié (sinon vous n'auriez pas accès à la section pour numériser les codes QR) , et faire la lecture de code QR

4-Quand votre mobile lit le code QR, il contacte les serveurs WhatsApp et leur dit : Mon numéro est XXXX , mes auteurs sont AAAA , et les WS associés à ce code QR peuvent maintenant recevoir mes données

5 - Le serveur sait maintenant qu'il peut diriger la Circulation vers le spécifique WS socket qui appartient à ce QR Code, et le fait !

6 - sur le navigateur WS vous pouvez voir le serveur envoyant des données concernant l'utilisateur, concernant les conversations que vous avez et quelles photos miniatures aller et prendre.

enter image description here

7 - le navigateur obtient ces données à partir du WebSocket , et fait les requêtes GET correspondantes pour obtenir les pouces, et d'autres ressources dont il a besoin, comme un MP3 pour les notifications

7.1-L'auditeur WS sur le navigateur effectue également des appels Javascript, sur les fichiers javascript reçus à l'étape 1 , pour redessiner la page DOM avec la nouvelle interface .

8 - l'interface est maintenant redessinée pour ressembler à L'application WhatsApp , et vous continuez à recevoir des données sur le WS, et l'envoi quand nécessaire, et des mises à jour sont faites à l'interface que les données arrivent sur le WS .

Qui est-il.

en utilisant Chrome, et le développeur outils , vous pouvez voir tout ce qui se passe en direct. Vous pouvez également voir la communication WS (la plupart de celui-ci, les cadres binaires que vous auriez besoin d'un autre outil ) et voir ce qui se passe toutes les étapes du chemin.

Aussi:

33
répondu SysHex 2016-09-20 09:50:51

Il utilise quelque chose comme ci-dessous.

  1. L'application Web Whatsapp est ouverte par l'utilisateur via un navigateur web.
  2. le serveur crée un token (nombre) UNIQUE et intègre ce nombre dans le code QR
  3. L'application de téléphone Whatsapp lit le code QR et décode le jeton.
  4. L'application de téléphone Whatsapp envoie des informations sur son utilisateur actuel et ce token nouvellement lu au serveur whatsapp.
  5. le serveur Whatsapp correspond au token (+ information de l'utilisateur de l'application téléphonique)) avec un navigateur web.
  6. automatiquement authentifie l'utilisateur et ouvrir une nouvelle page web avec ses informations.
2
répondu Atilla Ozgur 2016-08-29 22:05:34