qr-code - samsung - escanear codigo qr whatsapp




Mecanismo detrás del escaneo de código QR de la app de WhatsApp. (2)

Funciona así :

1- Abre la siguiente URL en su navegador: web-app

2- El navegador carga la página con todo tipo de cosas JS y CSS, pero también abre un WebSocket (wss: //w4.web.whatsapp.com/ws) - Verifique esta imagen:

2.1- Cada 20000 milisegundos usted ve tráfico en el WebSocket para una actualización en el código QR que tiene en su pantalla. Esto es enviado por el servidor al navegador, a través del WebSocket (WS lo llamamos de ahora en adelante)

2.2- En cada actualización de Código QR recibida en el WS, su navegador realiza una solicitud GET para el nuevo Código QR en la codificación BASE64.

2.3 - ¡¡Tenga en cuenta que este WS específico que el servidor tiene abierto entre el servidor y el navegador está asociado con el código QR único! Entonces, sabiendo el código QR, el servidor sabe qué WS está asociado con él.

---- En esta etapa, su navegador está listo para hacer el trabajo de la aplicación WhatsApp, pero no sabe cuál es su ID (identificador de Whatsapp que es su número de teléfono móvil), porque realmente no puede obtener su número de teléfono de la nada.

Tampoco requiere que lo escriba, porque el servidor no estaría seguro de que el número realmente le pertenece.

Entonces, para que los Servidores sepan que la sesión WS pertenece a un teléfono específico, debe usar el teléfono para la lectura de QR

3- Usted toma su teléfono, que está autenticado (de lo contrario no tendría acceso a la sección para escanear códigos QR), y hace la lectura de códigos QR

4- Cuando su móvil lee el código QR, contacta a los servidores de WhatsApp y les dice: Mi número es XXXX, Mis credenciales de autenticación son YYYYY, y el WS asociado con este código QR ahora puede recibir mis DATOS

5- El servidor ahora sabe que puede dirigir el tráfico al socket WS específico que pertenece a ese código QR, ¡y lo hace!

6- En el Browser WS puede ver el Servidor enviando datos sobre el usuario, sobre las conversaciones que está teniendo y qué miniaturas de fotos ir y tomar.

7- El navegador obtiene estos datos de WebSocket y realiza las solicitudes GET correspondientes para obtener los pulgares y otros recursos que necesita, como un MP3 para notificaciones

7.1 - La escucha de WS en el navegador también realiza llamadas de Javascript, en los archivos javascript que se recibieron en el paso 1, para volver a dibujar la página DOM con la nueva interfaz.

8- La interfaz ahora se vuelve a dibujar para que se parezca a la aplicación WhatsApp, y usted continúa recibiendo datos en el WS, y los envía cuando es necesario, y se realizan actualizaciones a la interfaz a medida que los datos llegan al WS.

Eso es.

Usando Chrome y las herramientas de desarrollador, puedes ver todo esto sucediendo en vivo. También puede ver la comunicación de WS (la mayoría de ellos, los marcos binarios que necesitaría de otra herramienta) y ver qué sucede en todos los pasos del camino.

También:

  • No pude encontrar ninguna respuesta relacionada con el mecanismo de trabajo del escaneo de códigos qr utilizado en web-app .
  • ¿Cómo se realiza la autenticación cuando el teléfono (cualquier teléfono inteligente que ejecuta Whatsapp) escanea el código qr en el navegador?
  • No quiero nada sobre la pila de tecnología detrás de ellos. Como Whatsapp usa una versión modificada de xmpp , usa erlang , usa tecnologías web como socket.io y ajax para la versión web para implementar dicha funcionalidad.
  • La pregunta podría ser amplia. Pero estoy ansioso por saber acerca de la implementación detrás de esto.

Utiliza algo como abajo.

  1. La aplicación web de Whatsapp es abierta por el usuario a través del navegador web.
  2. El servidor crea un token (número) ÚNICO e inserta ese número en el código QR
  3. La aplicación de teléfono Whatsapp lee el código QR y decodifica el token.
  4. La aplicación de teléfono de Whatsapp envía información sobre su usuario actual y este token recién leído al servidor de Whatsapp.
  5. El servidor de Whatsapp compara el token (+ información del usuario de la aplicación del teléfono) con el navegador web.
  6. Autentica automáticamente al usuario y abre una nueva página web con su información en él.