Decryptor (Middleware)
Descriptografia automática de respostas HTTP com @xcrap/decryptor.
O pacote @xcrap/decryptor atua como um wrapper para qualquer cliente Xcrap, permitindo que você lide com sites que enviam dados criptografados (comuns em apps mobile ou APIs que tentam dificultar o scraping).
Como funciona?
Ele utiliza o padrão Decorator ou uma Factory para injetar uma camada de descriptografia entre o recebimento dos dados brutos e a criação da HttpResponse.
Injeção em Instância Existente
Você pode envolver um cliente já criado usando injectDecryptor.
import { AxiosClient } from '@xcrap/axios-client';
import { injectDecryptor } from '@xcrap/decryptor';
const baseClient = new AxiosClient();
const client = injectDecryptor(baseClient, {
algorithm: 'aes-256-cbc',
inputEncoding: 'base64',
outputEncoding: 'utf8',
key: { encoding: 'utf8', value: 'minha-chave-secreta-de-32-chars!!' },
iv: { encoding: 'utf8', value: 'meu-iv-16-chars!' }
});
// Agora, o .body virá automaticamente descriptografado
const response = await client.fetch({ url: 'https://api-protegida.com/data' });
console.log(response.body); Factory de Classe
Se você prefere trabalhar com classes, use a função DecryptorClient para criar uma nova classe de cliente.
import { AxiosClient } from '@xcrap/axios-client';
import { DecryptorClient } from '@xcrap/decryptor';
const DecryptedAxios = DecryptorClient(AxiosClient, {
algorithm: 'aes-256-cbc',
key: { encoding: 'hex', value: '...' },
iv: { encoding: 'hex', value: '...' }
});
const client = new DecryptedAxios();
const response = await client.fetch({ url: '...' });Algoritmos Suportados
O Decryptor utiliza o node:crypto internamente, suportando qualquer algoritmo disponível no Node.js corporativo:
aes-128-cbc,aes-256-cbc,aes-256-gcm, etc.- Suporta encodings como
hex,base64,utf8tanto para a entrada quanto para a chave/IV.