Pular para o conteúdo

Como ocultar cabeçalhos de autorização, cookies, tokens e chaves de API em um arquivo HAR

Cole uma captura HAR ou solte o arquivo .har: a página lê log.entries, substitui por [REDACTED] os valores que casam com as regras e regrava a captura como JSON indentado nesta mesma aba. Uma captura de teste com três entradas informou 22 valores substituídos sem tocar nos corpos de resposta e 24 ao incluí-los; uma captura compacta de 3.9 KB voltou como 6.4 KB porque a saída é formatada.

As regras funcionam por nome de campo — Authorization, X-Api-Key, Cookie, Set-Cookie, api_key, access_token, refresh_token, id_token, token, password, secret, session, jwt, csrf, signature e variações — em cabeçalhos e cookies de requisição, query strings, parâmetros de URL, campos de formulário, corpos JSON, cabeçalhos e cookies de resposta, URLs de redirecionamento e campos próprios do HAR. Os valores também são reconhecidos pela forma: credenciais Bearer e Basic e um JWT que começa com eyJ são substituídos onde apareçam.

  1. Cole a captura no painel esquerdo ou solte um arquivo .har na zona de entrada; a zona lê o arquivo como texto e o painel vira a entrada.
  2. Deixe «Ocultar também corpos de resposta» desmarcado para manter o conteúdo de resposta exatamente como capturado, ou marque quando um corpo puder carregar um token.
  3. Clique em Sanitizar HAR. As quatro métricas mostram o número de entradas, as substituições e os tamanhos de entrada e saída.
  4. Leia a linha de achados: um número significa que valores foram substituídos; zero significa que nenhuma regra casou, o que não prova que a captura esteja limpa.
  5. Copie o resultado ou clique em Baixar: o arquivo se chama <captura>-sanitized.har. Limpar esvazia o painel, as métricas e o campo de arquivo, então a mesma captura pode ser solta de novo.

Quais campos as regras cobrem, o que a cópia mantém e onde as regras param

O que cada regra reescreve

Um cabeçalho, cookie ou campo de formulário é reescrito quando o nome casa com a lista, qualquer que seja o valor. Um parâmetro de consulta é reescrito quando o nome casa, incluindo um token= solto e o code= de OAuth de um redirecionamento; o resto da URL mantém a ordem, os outros parâmetros e o #fragment, e a substituição é escrita literalmente como [REDACTED], sem codificação. Um cabeçalho Location que contém uma URL segue as mesmas regras de consulta.

Corpos JSON são percorridos chave por chave, então objetos e arrays aninhados também são cobertos: na captura de teste password, um api_key aninhado, um token solto e um secret dentro de um array voltaram como [REDACTED], enquanto valores sem relação, como um e-mail e uma nota, continuaram legíveis. Campos próprios do HAR que começam com sublinhado são percorridos com as mesmas regras, então um token guardado junto da captura também é ocultado.

Corpos de resposta, inclusive base64

O conteúdo de resposta só é tocado quando a caixa está marcada. Marcada, um corpo base64 é decodificado primeiro, ocultado e codificado de volta em base64 com o campo encoding intacto: um access_token dentro de um corpo JSON em base64 virou [REDACTED] e o corpo continuou decodificando como JSON válido. Um corpo sem correspondência volta byte a byte como capturado, incluindo as quebras de linha originais do base64.

Todo o resto viaja sem mudanças: número de entradas, títulos e tempos de página, status HTTP, tamanhos de cabeçalho e corpo, endereços IP do servidor e horários de início. Passar a saída pela ferramenta de novo informa 0 substituições, então uma captura já saneada pode ser conferida outra vez sem novas mudanças.

Onde as regras param e o que a página recusa

As regras casam nomes de campo e formas de credencial, não valores que pareçam suspeitos. Um segredo sem nome nenhum — no caminho de uma URL, num campo de comentário do HAR ou como valor de um campo comum como note — fica como capturado, e o mesmo vale para um corpo de resposta enquanto a caixa estiver desmarcada. A linha de achados diz quantos valores foram substituídos; ela nunca afirma que o arquivo é anônimo, então vale reler a saída antes de anexá-la a um chamado.

Entrada vazia, JSON malformado e JSON sem o array log.entries terminam cada um com a própria frase e sem download: um documento truncado é informado com a linha e a coluna onde a análise parou, e um JSON que não é captura HAR é nomeado como tal em vez de gerar um arquivo vazio. Todo o processo fica no navegador: a página não envia a captura em nenhuma requisição.

Ferramentas recentes: