Xcrap Logo

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, utf8 tanto para a entrada quanto para a chave/IV.

On this page