Às vezes, os dados da resposta da API estão codificados ou criptografados, e pode ser necessário convertê-los em texto legível. Você pode fazer isso usando as bibliotecas JS integradas no Apidog ou invocando linguagens de programação externas, como Python ou JavaScript, para processamento.
Por exemplo, dados codificados em Base64 podem ser decodificados usando a biblioteca embutida.
Abaixo, compartilharemos alguns exemplos comuns de decodificação e descriptografia. Se você ainda não instalou o Apidog, basta clicar no botão para começar!
Decodificando Dados da Resposta
Decodificação Base64
Quando uma API retorna dados que estão codificados em Base64, você pode usar a biblioteca CryptoJS integrada ao Apidog para decodificá-los. Veja como fazer:
Suponha que a API retorne os seguintes dados codificados em Base64:
{"data": "SGVsbG8gd29ybGQh"}
Você pode decodificar esses dados em Base64 com um script como este:
// Importar a biblioteca CryptoJS
const CryptoJS = require("crypto-js");
// String codificada em Base64 (extraída dos dados da resposta)let encodedData = {"data": "SGVsbG8gd29ybGQh"
};
// Decodificar os dados em Base64let decodedData = CryptoJS.enc.Base64.parse(encodedData.data).toString(CryptoJS.enc.Utf8);
// Mostrar o resultado decodificado
console.log(decodedData); // "Olá, mundo!"
No Apidog, você pode adicionar um script personalizado na seção "Post-request" com a lógica acima. Após enviar a solicitação, você pode visualizar os dados decodificados no "Console" do painel de resposta.

Além disso, você pode armazenar os dados decodificados em uma variável de ambiente para uso futuro, assim:
pm.environment.set("decodedData", decodedData);
Se a resposta JSON contiver dados codificados em Base64, você pode usar o CryptoJS para decodificá-los e definir os dados JSON decodificados como o corpo da resposta com o método pm.response.setBody()
. Aqui está um exemplo de uma resposta JSON codificada em Base64:

Para decodificá-lo e exibir os dados JSON decodificados no Corpo da Resposta, o script de exemplo é o seguinte:
// Importar a biblioteca CryptoJS
const CryptoJS = require("crypto-js");
// String codificada em Base64 (extraída dos dados da resposta)let encodedData = pm.response.text();
// Decodificar os dados em Base64let decodedData = CryptoJS.enc.Base64.parse(encodedData).toString(CryptoJS.enc.Utf8);
// Analisar a string JSON decodificadalet jsonData = JSON.parse(decodedData);
// Definir os dados JSON analisados como o corpo da resposta
pm.response.setBody(JSON.stringify(jsonData));

Decodificação URLEncode
Quando os dados da resposta estão codificados em URL, você pode usar o método embutido decodeURIComponent()
do JavaScript para decodificá-los.
Por exemplo, considere uma API que retorna a seguinte string JSON codificada em URL:
{"name": "%E5%BC%A0%E4%B8%89","email": "qxhswppn%40gmail.com"
}
Você pode decodificar os valores desta string JSON assim:
// Esta é a string JSON codificada em URL a partir da respostalet response = {"name": "%E5%BC%A0%E4%B8%89","email": "qxhswppn%40gmail.com"
};
// Decodificar usando decodeURIComponentlet decodedName = decodeURIComponent(response.name);
let decodedEmail = decodeURIComponent(response.email);
console.log(decodedName); // "Jason"
console.log(decodedEmail); // "qxhswppn@gmail.com"

Descriptografando Dados da Resposta
Descriptografia AES
Para descriptografar o texto cifrado criptografado em AES, você precisa fornecer a chave apropriada ou vetor de inicialização (IV). O AES utiliza criptografia simétrica, o que significa que a mesma chave é usada tanto para criptografia quanto para descriptografia. Se você não tiver a chave ou IV corretos, não poderá descriptografar o texto cifrado.
Supondo que você tenha o texto cifrado criptografado em AES no modo ECB, você pode usar a biblioteca CryptoJS para descriptografá-lo no Apidog assim:
// Importar a biblioteca CryptoJSconst CryptoJS = require('crypto-js');
// Texto cifrado AES codificado em Base64 (extraído dos dados da resposta)const ciphertext = "Gig+YJFu4fLrrexzam/vblRV3hoT25hPZn0HoNoosHQ=";
// Chave para descriptografia (certifique-se de que tenha 16/24/32 bytes; tipicamente lida de uma variável de ambiente)const key = CryptoJS.enc.Utf8.parse('1234567891234567');
// Descriptografar AESconst decryptedBytes = CryptoJS.AES.decrypt(ciphertext, key, {
mode: CryptoJS.mode.ECB, // Modo de descriptografia
padding: CryptoJS.pad.Pkcs7 // Método de preenchimento
});
// Converter o array de bytes descriptografado para string UTF-8const originalText = decryptedBytes.toString(CryptoJS.enc.Utf8);
// Mostrar o texto descriptografado
console.log(originalText); // "Olá, Apidog!"
Você pode visualizar os dados descriptografados no console da resposta.

Descriptografia RSA
Para descriptografar o texto cifrado criptografado em RSA, você precisa fornecer a chave privada RSA correspondente, já que o RSA é um algoritmo de criptografia assimétrica. O par de chaves consiste em uma chave pública e uma chave privada, e a chave privada é essencial para a descriptografia.
O Apidog inclui a biblioteca jsrsasign
(Atualizar para a versão mais recente), que você pode usar para descriptografar o texto cifrado em RSA. Aqui está um exemplo:
// Importar a biblioteca jsrsasign
const jsrsasign = require('jsrsasign');
// Definir a chave privada (tipicamente lida de variáveis de ambiente)
const privateKeyPEM = `
-----BEGIN PRIVATE KEY-----
Chave privada...
-----END PRIVATE KEY-----
`;
// Definir o texto cifrado (tipicamente extraído dos dados da resposta)
const ciphertext = '';
// Descriptografar
const prvKeyObj = jsrsasign.KEYUTIL.getKey(privateKeyPEM);
const decrypted = jsrsasign.KJUR.crypto.Cipher.decrypt(ciphertext, prvKeyObj);
console.log(decrypted);

Uma referência de exemplo completa para criptografia e descriptografia simples em RSA (note que a versão jsrsasign é 10.3.0 e a sintaxe de outras versões pode ser incompatível), que você pode executar em um ambiente Node.js e realizar operações de criptografia ou descriptografia no Apidog conforme necessário:
const rsa = require('jsrsasign');
// Gerar par de chaves RSA
const keypair = rsa.KEYUTIL.generateKeypair("RSA", 2048);
const publicKey = rsa.KEYUTIL.getPEM(keypair.pubKeyObj);
const privateKey = rsa.KEYUTIL.getPEM(keypair.prvKeyObj, "PKCS8PRV");
console.log("Chave Pública:", publicKey);
console.log("Chave Privada:", privateKey);
// Criptografar com a chave pública
const plaintext = "Olá, Apidog!";
const pubKeyObj = rsa.KEYUTIL.getKey(publicKey);
const encryptedHex = rsa.KJUR.crypto.Cipher.encrypt(plaintext, pubKeyObj);
console.log("Chave Criptografada:", encryptedHex);
// Descriptografar com a chave privada
const prvKeyObj = rsa.KEYUTIL.getKey(privateKey);
const decrypted = rsa.KJUR.crypto.Cipher.decrypt(encryptedHex, prvKeyObj);
console.log("Texto Simples Descriptografado:", decrypted);

Usando Programas Externos para Descriptografia
Além de usar as bibliotecas JS integradas do Apidog para descriptografia, você também pode invocar um "programa externo" para realizar a descriptografia. Para mais informações sobre como usar programas externos, você pode consultar o centro de ajuda do Apidog para instruções detalhadas.
.jar
para programas Java, ou .py
, .php
, .js
para scripts em outras linguagens. Você pode acessar esse diretório através de "Configurações -> Programas Externos" no canto superior direito da interface do Apidog.
Exemplo: Descriptografia RSA com Node.js
Se você quiser realizar a descriptografia RSA usando a biblioteca node-forge
em Node.js, pode criar um arquivo .js
no Diretório de Programas Externos para implementar a lógica de descriptografia. Veja como fazer:
- Criar o Script de Descriptografia Primeiro, crie um arquivo
.js
e implemente a lógica de descriptografia. Como você usará a bibliotecanode-forge
, instale-a nesse diretório usando npm ou yarn. Aqui está como seu script pode ficar:
// Importar a biblioteca node-forge
const forge = require('node-forge');
// Obter argumentos da linha de comando
const args = process.argv.slice(2);
// Sua chave privada (formato PEM)
const privateKeyPem = `
-----BEGIN RSA PRIVATE KEY-----
chave privada……
-----END RSA PRIVATE KEY-----`;
// Texto cifrado da linha de comando
const encrypted = args[0];
// Converter a chave privada no formato PEM para um objeto de chave privada do forge
const privateKey = forge.pki.privateKeyFromPem(privateKeyPem);
// Converter os dados cifrados codificados em Base64 para um array de bytes
const encryptedBytes = forge.util.decode64(encrypted);
// Descriptografar os dados
const decrypted = privateKey.decrypt(encryptedBytes, 'RSA-OAEP');
// console.log() a saída será capturada pelo Apidog
console.log(decrypted);
- Invocar o Programa Externo no Apidog Após escrever o script de descriptografia, você pode usar o método
pm.executeAsync()
na seção "Post-request" do Apidog para chamar este programa externo. Certifique-se de que seu script de descriptografia esteja colocado no diretório correto de programas externos e que o caminho que você referenciar seja relativo a esse diretório. Veja como invocá-lo:
// Texto cifrado (tipicamente obtido a partir dos dados da resposta)
const encrypted = 'iDqUyR3BpaTqpzq…………';
// Caminho do programa externo, passando parâmetros
const result = await pm.executeAsync('./nodejs-rsa/rsa.js', [`${encrypted}`]);
console.log('Resultado:', result);
Quando você enviar a solicitação no Apidog, ele passará automaticamente o texto cifrado para o programa externo que você definiu, realizará a descriptografia e capturará a saída do resultado através de console.log()
, retornando por fim o texto simples descriptografado.
Esse tipo de descriptografia não se limita ao Node.js, outras linguagens de programação como Java, PHP, Python, Go, etc. podem realizar operações e chamadas semelhantes.
Conclusão
Usando os métodos descritos neste artigo, você pode efetivamente decodificar e descriptografar dados de resposta no Apidog, transformando-os em texto legível. Experimente o Apidog agora!