Para um proxy direto Squid que precisa transformar uma resposta HTML, use o caminho de adaptação. O Squid trata o pedido de proxy do navegador; um serviço de respostas ICAP executa a transformação do corpo e devolve a mensagem HTTP adaptada.

Isto dá à transformação um lugar definido no ciclo de vida do pedido. Uma regra de cabeçalho de resposta não pode substituir um analisador HTML, e um filtro de servidor web separado não processa automaticamente o tráfego que passa pelo Squid.

Ligar um serviço de respostas

Para uma compilação do Squid 7 com suporte ICAP e um serviço compatível existente, a forma da configuração é:

acl adaptation_clients src 192.0.2.0/24

icap_enable on
icap_service html_editor respmod_precache bypass=0 icap://127.0.0.1:1344/modify

adaptation_access html_editor allow adaptation_clients
adaptation_access html_editor deny all

O intervalo de clientes e o URI do serviço são exemplos. O URI deve nomear um serviço ICAP real que implemente a transformação da resposta; declarar /modify não cria nenhum. O fragmento complementa o ouvinte existente do proxy e os respetivos controlos de acesso.

respmod_precache seleciona a adaptação de respostas no ponto antes da cache. adaptation_access seleciona as transações desse serviço. A definição bypass=0 significa que o Squid não pode ignorar silenciosamente este serviço quando uma transação aplicável encontra uma falha do serviço. Escolha esse comportamento de falha conforme a transformação seja ou não obrigatória.

As diretivas de adaptação dependem da versão. Em particular, estas referências de configuração listam as interfaces de serviço ICAP e de acesso à adaptação para o Squid 7 e linhas suportadas anteriores, e marcam-nas como indisponíveis no Squid 8. Trate o fragmento como um exemplo para o Squid 7 em vez de o copiar para uma versão arbitrária.

Dar ao serviço um contrato de transformação preciso

Especifique que respostas são elegíveis e que alterações são necessárias. Uma transformação apenas de HTML deve deixar intactas as imagens, os arquivos e os media não relacionados. O serviço também tem de tratar a representação que recebe efetivamente: corpos comprimidos, codificações de caracteres e os metadados que descrevem o corpo alterado. Inserir texto em bytes de resposta arbitrários não é uma transformação HTML geral.

Considere a cache quando a substituição é específica do utilizador. Uma transformação antes da cache e uma cache partilhada são uma má combinação se a representação resultante só for válida para um leitor. Mantenha alinhadas a capacidade de cache e a política de transformação, e respeite as diretivas no-transform aplicáveis.

Por fim, um túnel HTTPS CONNECT comum transporta bytes cifrados. Não expõe HTML a um adaptador de respostas. Uma disposição de inspeção TLS gerida deliberadamente precisa da sua própria configuração compatível e da confiança do cliente antes de respostas decifradas poderem entrar neste caminho. A regra ICAP por si só não acrescenta essa visibilidade.

Artigos relacionados