WaWeb canonical pipeline

Do socket à mensagem

Como o WhatsApp Web sai do nada e chega a mandar e receber uma mensagem: abre um canal seguro, pede autorização ao celular principal, autentica a sessão, baixa o estado da conta e troca mensagens.

Autenticação e bootstrap

Detalhes da reconexão autenticada, success, sync inicial, chaves, perfil e erros estruturais observados.

Detalhes nesta página

Cada link abaixo abre um bloco analítico com leitura didática, contrato observado e mini pipeline.

Troca de canal

observadocausa inferidastanzas 13-14

Leitura

O fato observado é o fechamento do stream antigo com stream:error e xmlstreamend. A interpretação de que isso prepara a reconexão autenticada vem da vizinhança do fluxo.

Fatorecv stream:error com attr code; recv xmlstreamend sem attrs.
Depoisws-3/ws-4 surgem nas seq 44-45; ws-1 fecha na seq 48.

Mini pipeline

Stanza/SeqEventoContrato
13 / 41stanzarecv stream:error, sem publicar o valor do código.
14 / 42stanzarecv xmlstreamend.
44-45transportwebsocket_created ws-3/ws-4, antes do fechamento do ws-1.
48transportwebsocket_closed ws-1.

Novo socket

observadopipeline seq 44-53

Leitura

A reconexão também abre dois sockets quase em paralelo. O ws-4 carrega a sessão autenticada; o ws-3 aparece no handshake e fecha.

Socket útilws-4, handshake 101, frames binários e stanzas seguintes.
Socket auxiliarws-3, handshake 101, fechado na seq 53.

Mini pipeline

SeqEventoContrato
44-45createdws-3 e ws-4.
46-49,51handshakeRequests e responses 101.
50,52wireFrames 43B e 350B no ws-4.
53closews-3 fechado.

Nesta reconexão, a captura mostra dois frames pré-stanza no ws-4; não há evento client_finish separado como no primeiro socket.

add da sessão

observadostanza 15 · seq 54

Leitura

O cliente apresenta ao servidor o material de sessão recém-criado pelo pareamento. Esse é o primeiro envio estruturado no novo socket útil.

Stanzasent iq / add, attrs [id,to,type,xmlns].
Conteúdoadd com attr t e bytes redigidos.

Mini pipeline

SeqEventoContrato
54stanzasent iq / add.
55-56wireFrames enviados no ws-4; payloads 165B e 1545B.

success

observadostanza 16 · seq 57

Leitura

O servidor aceita a sessão. A partir daqui a captura entra no bootstrap operacional: mídia, props, privacidade, sync, identidade e mensagens pendentes.

Na captura de observação, esse ponto também marca o começo dos eventos de fundo pós-pareamento: a sessão continua viva e sincronizando mesmo sem envio manual.

Attrsabprops, companion_enc_static, creation, lid, location, props, t.
PublicaçãoSomente nomes dos atributos; valores são material sensível.

Mini pipeline

StanzaSeqContrato
1657recv success, conteúdo vazio, attrs de identidade e propriedades.
17-1959-61Primeiras consultas de bootstrap: media_conn, props, iq vazio.

Capacidades, mídia e rotas

observadostanzas 17-28

Leitura

O cliente busca conectividade de mídia, propriedades de protocolo, rotas e estado sujo. O estado offline aparece depois, na stanza 54, já no bloco de mensagens e dispositivos.

Obrigatórios observadosmedia_conn, props, edge_routing, dirty.
ComplementaresConsultas de foto, privacidade e respostas vazias.

Mini pipeline

StanzaSeqContrato
17-1959-61sent iq: media_conn, props, vazio.
20-2165-67recv ib: edge_routing, dirty.
22-2868-81picture/privacy e resposta media_conn.

Registro Signal e chaves

observadostanzas 29-33

Leitura

É um dos maiores pontos estruturais do bootstrap. O cliente envia registro, identidade, uma lista grande de prekeys e skey. A captura também recebe erros nessa vizinhança.

Stanza 29registration, type, identity, list com 812 key, skey.
Risco de diffNão comparar bytes de chaves; comparar presença, contagem e formato.

Mini pipeline

StanzaSeqContrato
2983sent iq / registration+type+identity+list+skey.
3085recv iq / props+erid, com 1354 prop.
31,3387,91recv iq / error; observado, não tratado como falha automática.
3288sent iq / clean.

Privacidade, termos e avisos

observadostanzas 34-45, 71-84

Leitura

Essa parte não é apenas configuração visual. Ela sincroniza regras de privacidade, termos e avisos legais que precisam aparecer no contrato do cliente.

Contagens globaissent iq / privacy aparece 6 vezes na captura; uma delas é a stanza 24, antes deste painel.
AvisosStanza 84 contém 28 filhos notice.

Mini pipeline

StanzaSeqContrato
34-4593-115Ciclo inicial de privacy/list/respostas vazias.
71-74167-170Privacy, request e disclosures.
75-82175-189Sync, mensagem de fundo, disclosure, ack/receipt e novo privacy intercalados.
83-84191-193tos e lista de notice.

Mensagens pendentes, dispositivos e sync

observadostanzas 46-70, 75-123

Leitura

Esta parte mistura ações do cliente com eventos de fundo que chegaram enquanto a sessão carregava: presença ativa, consultas usync, mensagens cifradas pendentes, receipts, devices e snapshots de app-state.

Agora ela também serve como ponte para a seção de histórico pendente, porque a janela passiva confirmou que offline, notificações e mensagens cifradas podem chegar sem ação do usuário.

Mensagens de fundorecv message / meta+verified_name+enc: stanzas 62, 67, 76, 87, 95 e 104 neste bloco.
Multi-devicedevices, add, remove, identity e usync.
Eventos raroswa_ad_account_nonce, parameters, collection e devices aparecem aqui e ajudam o diff.

Mini pipeline

StanzaSeqContrato
46-53116-131active, usync, identity.
54-70133-165offline, devices, mensagens recebidas, sync, receipts.
75-123175-271Snapshots, notificações, disclosures, usync e patches; stanzas 71-74 ficam detalhadas em privacidade.

Essas mensagens não são a mensagem auxiliar final. São eventos recebidos durante o bootstrap e precisam ser tolerados no diff.

Perfil, presença e chaves finais do bootstrap

observadostanzas 124-164

Leitura

O fim do bootstrap consulta presença, participação, fotos, perfil de negócio, grupos, tokens e chaves. Ele termina imediatamente antes do primeiro envio de mensagem.

Eventos únicosunified_session, recv iq / groups, recv notification / remove.
Perfilpicture, business_profile, tokens, key, list; inclui a stanza 138 como mensagem de fundo tardia.

Mini pipeline

StanzaSeqContrato
124-132273-289presence, participating, query, picture, unified_session.
133-155290-335business_profile, fotos, groups, tokens, key.
156-164337-353Notificações, acks, sync e lista final pré-envio.

Erros observados que apareceram no caminho

observadopainel transversal

Leitura

A captura tem erros estruturais esperados ou tolerados. Eles não devem sumir do relatório, porque são pontos importantes para diff entre o cliente oficial e o cliente C#.

Streamstream:error seguido de xmlstreamend na troca de canal.
IQQuatro recv iq com child error durante bootstrap.

Mini pipeline

StanzaSeqContrato
1341recv stream:error, valor do code não publicado.
3187recv iq com child error; attrs do child [code,text].
3391recv iq com child error; attrs do child [code,text].
142-143309-311recv iq com child error; attrs do child [code,text].

Na validação de convergência, a presença e a posição desses erros importam mais do que os valores.