Descodificador de Protobuf (sem .proto)
Uma carga protobuf não revela nada por si só. No fio não viajam nomes de campos, apenas números e tipos de wire, por isso um corpo opaco de uma chamada gRPC ou de uma captura de API é ilegível a não ser que tenha o .proto que o gerou — e quando está a depurar o serviço de outra pessoa, normalmente não tem. Este descodificador lê o formato de wire diretamente. Cada campo volta com o seu número, o seu tipo de wire e o seu valor, as mensagens aninhadas são expandidas no lugar e, onde a codificação é ambígua, ele diz isso em vez de escolher por si. Essa ambiguidade é real: um varint pode ser um inteiro sem sinal, um com sinal em ziguezague ou um booleano, e um campo com comprimento pode ser uma cadeia, uma mensagem aninhada, números repetidos packed ou bytes em bruto. A ferramenta mostra a leitura mais provável e lista as outras ao lado. A deteção de mensagens aninhadas não é um palpite sobre o significado: uma sequência de bytes só é proposta como mensagem se for analisada de forma limpa como tal, com cada chave um número de campo válido e cada comprimento a terminar exatamente no fim. Tudo acontece no seu navegador; a carga não é enviada.
Cole uma carga protobuf em base64 ou hex para a descodificar.
Como usar
- Cole a carga em base64 ou hex — o formato é detetado e pode forçá-lo.
- Leia a árvore: cada linha é o número do campo, o tipo de wire e o valor.
- Repare no texto cinzento com as outras leituras possíveis de um valor.
- As mensagens aninhadas aparecem indentadas sob o campo que as contém.
- Largue um ficheiro binário para descodificar um corpo capturado diretamente.
Perguntas frequentes
- Porque não há nomes de campos?
- Porque não são transmitidos. O protobuf coloca no fio apenas um número de campo e um tipo de wire; os nomes vivem no ficheiro .proto de ambos os lados. É isso que torna a codificação compacta, e é a razão pela qual um descodificador sem esquema consegue mostrar a forma de uma mensagem mas não como se chamam os seus campos.
- Como sabe que um campo contém uma mensagem aninhada?
- Tenta analisar os bytes como tal e aceita o resultado apenas se for totalmente consistente: cada chave um número de campo e um tipo de wire válidos, e cada comprimento a acabar exatamente onde acaba o buffer. Cadeias curtas por vezes passam esse teste por acaso, por isso quando os bytes também são texto válido a ferramenta indica que a leitura é ambígua.
- Quais são as leituras alternativas de um número?
- Um varint pode ser um int32/int64/uint, um sint em ziguezague ou um bool. Um fixed64 pode ser um double, um fixed64 ou um sfixed64. Nada na carga os distingue, por isso mostra-se primeiro a leitura mais comum e as outras ao lado.
- Consegue descodificar corpos gRPC?
- Uma trama gRPC acrescenta um byte de compressão e quatro de comprimento antes de cada mensagem. Retire esses cinco bytes e o resto descodifica aqui. Tramas comprimidas têm de ser descomprimidas primeiro.
- E os grupos?
- Os grupos são os tipos de wire 3 e 4, obsoletos desde o proto2, e quase nunca se veem. O descodificador assinala a marca onde a encontra em vez de adivinhar o aninhamento.
- A minha carga é enviada?
- Não. Os bytes são descodificados no seu navegador e nada é enviado para um servidor.
Ferramentas relacionadas
Conversor de JSON para esquema Protobuf (proto3)
Converta um objeto JSON em um esquema .proto do proto3 com campos tipados e mensagens aninhadas, no seu navegador.
Decodificador JWT
Decodifique um JSON Web Token para inspecionar cabeçalho, claims e expiração.
Descodificador de MessagePack
Cole bytes MessagePack em base64 ou hex e leia os valores — tipos, mapas aninhados, binários e datas — no seu navegador.
Codificador / Decodificador Base64
Codifique texto em Base64 ou decodifique Base64 de volta em texto.
Analisador e decodificador de Data URI
Decodifique um data: URI para ver seu tipo MIME, codificação, tamanho e conteúdo decodificado, no seu navegador.
Conversor de Base64 para hexadecimal (e volta)
Converta uma string Base64 em bytes hexadecimais e hex de volta para Base64, com suporte URL-safe, no seu navegador.