ScraperFlyAPI de dados web pronta para IA

request control

Resposta HTML vazia em fluxos de trabalho da Web Scraping API

Uma resposta HTML em branco ou fina nem sempre é uma raspagem falhada. Pode ser um shell JavaScript, redirecionamento, bloqueio suave, intervalo de tempo, fallback regional ou incompatibilidade de formato. ScraperFly ajuda as equipes a inspecionar as evidências de resposta antes de adicionar controles de solicitação mais pesados.

Triagem de resposta vazia

Trate HTML vazio como evidência antes de tornar a solicitação mais pesada

Uma resposta HTML vazia é um sinal, não um diagnóstico final. O corpo da fonte pode ser uma fina shell de JavaScript, um redirecionamento pode ter aterrissado em um espaço reservado, uma página de consentimento ou regional pode ter substituído o conteúdo, ou o alvo pode ter retornado um bloqueio suave que parece uma solicitação bem-sucedida na superfície.

ScraperFly oferece às equipes um caminho prático de depuração: inspecione a resposta bruta, compare-a com a saída renderizada, verifique o status e o tamanho da resposta, e adicione renderização, esperas, sessões, cabeçalhos, roteamento de país ou entrega premium apenas quando as evidências apontarem para isso.

HTML bruto HTML renderizado URL final tamanho da resposta
Desenvolvedores diagnosticando uma resposta vazia da API de scraping HTML com HTML bruto, saída renderizada e evidências de resposta

O que uma resposta HTML vazia geralmente significa?

Um fluxo de trabalho de scraping pode receber muito pouco HTML por várias razões diferentes. Algumas são normais: páginas modernas frequentemente enviam uma shell de aplicativo primeiro e constroem conteúdo visível após a execução do JavaScript. Algumas são problemas de formato de solicitação: a URL final mudou, a página requer um cookie ou idioma aceito, ou o parser está lendo o formato de resposta errado. Algumas são sinais de entrega: o alvo retornou uma página de desafio, bloqueio de fallback, resposta de limite de taxa, ou incompatibilidade regional.

O primeiro erro é tratar cada corpo vazio como a mesma falha. Um bom fluxo de trabalho separa a captura da fonte da captura renderizada, a entrega da rede do comportamento do alvo, e a lógica do parser da evidência da solicitação. Isso mantém a depuração rápida e evita que as equipes adicionem controles caros antes de saberem qual controle importa.

Conclusão prática: um resultado que parece em branco deve iniciar um passo de diagnóstico, não um loop de nova tentativa automática.

O que as equipes devem inspecionar antes de tentar novamente?

A depuração de resposta vazia funciona melhor quando a equipe analisa a evidência da solicitação em uma ordem estável. Comece com os fatos que são baratos de coletar, depois decida se uma segunda solicitação deve renderizar JavaScript, esperar mais, manter estado, mudar roteamento, ou retornar uma prova visual.

Evidência O que pode revelar Próxima ação
URL final A solicitação pode ter redirecionado para longe da página esperada. Compare a URL final com a URL alvo antes de analisar.
Código de status Um 200 ainda pode ser um fallback, enquanto respostas 3xx, 4xx e 5xx precisam de tratamento separado. Roteie a lógica de nova tentativa por família de status em vez de tentar tudo novamente.
Tamanho da resposta Um corpo pequeno geralmente significa marcação de shell, saída de redirecionamento, ou um bloqueio suave. Armazene limites de tamanho e compare amostras do mesmo alvo.
HTML bruto A fonte pode já conter conteúdo útil, metadados ocultos, ou apenas um ponto de montagem. Use HTML bruto quando os dados estiverem presentes; renderize apenas quando estiverem ausentes.
Saída renderizada A execução do navegador pode revelar conteúdo que o HTML da fonte não continha. Ative a renderização para alvos que provem uma dependência de JavaScript.
Captura de tela ou PDF A prova visual pode mostrar se a página carregou, bloqueou, redirecionou, ou exibiu um estado vazio. Use saída visual para depuração, QA, monitoramento e evidência de escalonamento.

Quando a renderização JavaScript corrige HTML vazio?

A renderização JavaScript é útil quando a resposta inicial contém uma shell, dados de hidratação, contêiner de rota, ou corpo vazio que se torna significativo apenas após a execução do navegador. Nesse caso, uma solicitação de HTML renderizado pode retornar o DOM após a execução dos scripts da página, e texto, Markdown, capturas de tela, ou PDFs podem capturar o estado pós-renderização em um formato que é mais fácil de revisar.

A renderização ainda deve ser uma decisão direcionada. Se o HTML da fonte já contém os campos necessários, uma sessão de navegador adiciona latência e peso à solicitação sem melhorar o resultado. Se o conteúdo aparece tarde, uma espera de renderização pode ser mais importante do que simplesmente ativar a renderização. Se a página depende de continuidade, sessões ou cabeçalhos podem ser a peça que falta em vez do próprio navegador.

Para páginas onde as evidências apontam para renderização do lado do cliente, teste a solicitação no API Builder, compare o HTML da fonte com o HTML renderizado, e então escolha o formato de resposta que seu fluxo de trabalho pode consumir. A página JavaScript rendering API aprofunda quando a execução do navegador vale a pena usar.

Quando HTML vazio é um sinal de roteamento, acesso ou alvo?

Algumas respostas vazias não são problemas de renderização. Um alvo pode retornar um fallback regional, intersticial de consentimento, parede de login, página de desafio, corpo de limite de taxa, ou um espaço reservado educado com um status HTTP bem-sucedido. Esses casos requerem evidências cuidadosas antes da escalonamento, porque adicionar todos os controles de uma vez torna o fluxo de trabalho mais difícil de raciocinar.

Cabeçalhos podem ajudar quando o alvo espera um idioma específico, referenciador, ou tipo de conteúdo. Sessões podem ajudar quando uma solicitação estabelece um estado que a próxima solicitação precisa manter. O roteamento de país pode ajudar quando a página pública muda por região. O roteamento premium pode ajudar quando a rota padrão consistentemente retorna falhas de acesso ou bloqueios. Cada controle deve responder a um sintoma visível.

Sintoma Direção provável Fluxo de trabalho ScraperFly
Shell de aplicativo fina Renderização do navegador ou espera de renderização Compare a saída bruta e renderizada antes de mudar o parser.
URL final inesperada Tratamento de redirecionamento ou validação do alvo Registre a URL final e o tipo de conteúdo como parte do registro de resposta.
Bloqueio suave com status 200 Revisão de cabeçalhos, sessão, país ou roteamento Use prova de captura de tela e tamanho da resposta para evitar sucesso falso.
429 repetidos ou 5xx temporários Controle de recuo e concorrência Tente novamente falhas temporárias com limites em vez de aumentar a pressão.
Parser não vê campos Revisão de formato ou seletor Verifique a resposta capturada antes de tratar a extração como quebrada.

Como as novas tentativas e a lógica do parser devem lidar com respostas vazias?

As novas tentativas devem ser limitadas e seletivas. Erros temporários de rede, respostas 5xx upstream, e limites de taxa podem justificar recuo. URLs inválidas, escolhas de saída não suportadas, chaves de API ausentes, e suposições do parser precisam de correção, não repetição. HTML vazio está entre essas categorias, então o fluxo de trabalho deve preservar evidências suficientes para classificá-lo.

O código do parser não deve silenciosamente transformar uma captura vazia em dados ruins. Armazene o status da resposta, URL final, tamanho da resposta, tipo de conteúdo, formato de saída, e se a renderização foi ativada. Esse registro ajuda os sistemas de monitoramento a distinguir uma mudança de alvo de um problema de infraestrutura e dá aos desenvolvedores uma próxima solicitação clara para testar.

Conclusão prática: tente novamente apenas quando a falha for provavelmente temporária; mude o perfil da solicitação quando as evidências mostrarem um controle ausente.

Como o ScraperFly mantém a depuração de resposta vazia acessível?

ScraperFly é construído em torno de um caminho de solicitação em etapas. Comece com uma captura leve, inspecione a resposta, e então adicione apenas os controles que melhoram aquele alvo: renderização para conteúdo construído em JavaScript, tempo de espera para seções tardias, sessões para continuidade, cabeçalhos para contexto legítimo, roteamento de país para páginas regionais, roteamento premium para entrega mais difícil, e saídas visuais quando a prova importa.

Isso mantém o caminho de compra prático. As equipes podem validar o alvo com créditos gratuitos, usar créditos pay-as-you-go para projetos irregulares, e mover trabalhos recorrentes para créditos mensais uma vez que o fluxo de trabalho seja previsível. O guia de formatos de resposta ajuda a escolher a forma de saída, enquanto preços explica como perfis de solicitação mais pesados afetam o custo.

Diagnóstico de resposta.

Verifique se a página está realmente vazia ou apenas vazia antes da renderização.

Uma resposta fina ainda pode se tornar um conteúdo renderizado útil. Compare HTML bruto, HTML renderizado, URL final, status, tipo de conteúdo, tamanho da resposta, prova de captura de tela e comportamento de redirecionamento antes de mudar a lógica do parser ou o peso da solicitação.

Resposta HTML bruta mapeada para dados visíveis da página
01

Disponibilidade de HTML bruto

Verifique se os campos que você precisa já estão presentes na primeira resposta HTML.

Melhor primeiro teste para páginas simples, artigos, documentos, listagens e detalhes de produtos.

Comparação antes e depois da renderização do JavaScript
02

Dependência de JavaScript

Compare HTML bruto com o DOM renderizado ou captura de tela antes de ativar a renderização do navegador.

Use renderização quando o HTML bruto é apenas uma casca e scripts criam o conteúdo útil.

Cookies, consentimento, sessão e contexto de acesso para scraping
03

Estado e contexto de acesso

Identifique se cookies, consentimento, limites de login, paginação ou o mesmo estado do visitante afetam a resposta.

Use sessões e cabeçalhos quando a continuidade muda os dados que você recebe.

Variações de conteúdo regional entre países e rotas
04

Variação geo/conteúdo

Teste se país, idioma, moeda, inventário, SERP, anúncios ou reputação da rota mudam o resultado.

Use roteamento geo ou premium apenas quando o alvo provar que a resposta varia por rota.

Verificações antes de tentar novamente respostas HTML vazias.

Onde está o campo alvo?

Verifique se o campo existe no HTML bruto, DOM renderizado, uma chamada de API, dados estruturados, um arquivo ou um estado de interação posterior.

O que muda na resposta?

Amostre algumas URLs e compare status, URL final, comprimento do conteúdo, redirecionamentos, estados vazios e diferenças nos resultados visíveis.

Qual contexto é necessário?

Marque qualquer dependência de consentimento, localidade, cookies, cabeçalhos, limite de autenticação, paginação, filtros ou solicitações anteriores.

Como é a falha?

Defina os sinais para respostas bloqueadas, parciais, obsoletas, redirecionadas, vazias, com tempo esgotado ou com região incompatível antes de escalar.

Como respostas vazias mudam a configuração de scraping.

Modo de busca

A disponibilidade de HTML bruto decide se a primeira solicitação pode permanecer simples ou precisa de renderização, esperas, capturas de tela ou extração.

Contexto da solicitação

Os requisitos de estado decidem se é necessário adicionar cabeçalhos, cookies, sessões, manuseio de consentimento ou um perfil de visitante estável.

Escolha de roteamento

Descobertas geográficas e de reputação decidem se o roteamento padrão é suficiente ou se uma rota de país/premium é justificada.

Regras de validação

Estados de falha conhecidos se tornam verificações para novas tentativas, escalonamento, revisão de QA e decisão de quando um perfil mais leve ainda está completo.

Sinais de acesso.

Escalone apenas quando a resposta vazia aponta para pressão de acesso ou roteamento.

Algumas respostas vazias ou pequenas são sinais de alvo: um bloqueio suave, fallback regional, página de desafio, parede de consentimento, ou corpo de limite de taxa. ScraperFly permite que as equipes preservem evidências primeiro, e então escolham cabeçalhos, sessões, roteamento de país, ou entrega mais forte quando a resposta prova que esses controles importam.

Uma solicitação HTTP simples retornando uma resposta HTML limpa
01

Solicitação HTML simples

Use isso primeiro para páginas públicas que já incluem os dados necessários no HTML inicial.

Uma página mudando de uma estrutura HTML vazia para um DOM renderizado após a execução do JavaScript
02

Renderização JavaScript

Ative a renderização quando o servidor retornar uma estrutura, mas o conteúdo útil da página aparecer somente após a execução do JavaScript.

Cabeçalhos, cookies e estado da sessão preservados entre duas requisições.
03

Cabeçalhos, cookies e sessões

Use controles de estado do visitante quando o alvo espera continuidade entre requisições ou retorna conteúdo diferente após consentimento, local ou estado de navegação ser definido.

Uma requisição roteada através de um país selecionado e um caminho de proxy de maior reputação
04

Proxy premium e geográfico

Escalone o roteamento quando a resposta depende da origem da requisição, reputação do IP ou geografia do alvo.

Um fluxo de automação de navegador com etapas de busca, filtros, rolagem e captura de dados.
05

Fluxo de navegador

Use um fluxo de navegador completo quando os dados estão atrás de interação em vez de uma única solicitação: caixas de busca, filtros, rolagem, abas ou navegação em múltiplas etapas.

Escalate when:

01

Solicitação HTML simples

a resposta bruta contém os campos que você precisa, os códigos de status são estáveis e o tamanho/conteúdo da página não colapsam após verificações repetidas.

  • Detalhes do produto, texto do artigo, documentação ou listagens são visíveis na resposta HTML.
  • A URL final, status e comprimento do conteúdo permanecem consistentes em uma pequena amostra.
  • Nenhuma parede de consentimento, estado do visitante ou chamada de API do lado do cliente é necessária para os campos alvo.
02

Renderização JavaScript

o HTML bruto é principalmente espaços reservados, o DOM renderizado contém os campos alvo, ou dados chave chegam através de solicitações do lado do cliente.

  • HTML bruto tem contêineres de aplicativo, esqueletos de carregamento ou grades de produtos vazias.
  • A inspeção do navegador mostra os campos após os scripts terminarem.
  • Capturas de tela parecem corretas enquanto a resposta HTML sozinha está incompleta.
03

Cabeçalhos, cookies e sessões

paginação, avaliações, filtros ou fluxos de consentimento dependem do mesmo contexto do visitante em várias requisições.

  • A primeira requisição define cookies que mudam as respostas posteriores.
  • Local, consentimento, moeda, carrinho ou estado de filtro devem ser preservados.
  • A página redireciona ou fica vazia quando as requisições parecem sem estado.
04

Proxy premium e geográfico

a mesma URL se comporta de maneira diferente por região, retorna 403/429 de uma rota, ou mostra preços, disponibilidade, SERP, anúncios ou dados de catálogo específicos de localização.

  • Tráfego semelhante ao de datacenter recebe bloqueios enquanto uma rota de maior reputação funciona.
  • País, idioma, moeda, inventário ou resultados de busca mudam por geo.
  • Solicitações repetidas acionam limites de taxa ou páginas de desafio em rotas específicas.
05

Fluxo de navegador

os dados-alvo aparecem apenas após etapas de navegação semelhantes a um usuário, ou áreas protegidas como avaliações, perfis, refinamentos de resultados de busca ou painéis de dados especiais se comportam de maneira diferente de páginas de detalhes simples.

  • Uma ação de clique, rolagem, busca ou filtro é necessária antes que os campos apareçam.
  • Avaliações, perfis ou páginas de resultados dinâmicos carregam em etapas separadas.
  • Tentativas de busca/renderização mais simples retornam conteúdo parcial, páginas de desafio ou estados instáveis.

Stay lower & Credit impact:

01

Solicitação HTML simples

Stay lower: a página já retorna dados completos. Adicionar renderização ou roteamento premium aqui apenas adiciona latência e uso de crédito sem melhorar o resultado.

Credit impact: perfil de solicitação mais baixo porque evita trabalho de navegador e roteamento especial.

02

Renderização JavaScript

Stay lower: os campos já estão presentes no HTML bruto. Um site com aparência moderna não significa automaticamente que a renderização JavaScript é necessária.

Credit impact: mais alto que HTML simples porque envolve trabalho de navegador, tempo de espera e recursos da página.

03

Cabeçalhos, cookies e sessões

Stay lower: conteúdo público é estável sem estado. Não invente sessões para páginas que podem ser buscadas de forma limpa como HTML anônimo.

Credit impact: geralmente moderado; o maior custo é a complexidade operacional e a disciplina de tentativas.

04

Proxy premium e geográfico

Stay lower: o alvo é globalmente consistente e aceita roteamento normal. Roteamento premium e geográfico deve estar vinculado a evidências, não usado como uma configuração padrão.

Credit impact: pode aumentar o uso de crédito e latência, então aplique isso aos grupos de URL que realmente precisam.

05

Fluxo de navegador

Stay lower: uma única solicitação HTML ou renderizada já retorna o alvo. Fluxos de navegador são a ferramenta mais forte nesta escada, não o ponto de partida padrão.

Credit impact: perfil de solicitação mais alto porque combina tempo de execução do navegador, esperas, navegação e frequentemente roteamento mais pesado.

Escale por evidência, não por hábito

  • Para a maioria dos sites públicos, uma solicitação HTML simples ou renderização leve de JavaScript é suficiente. Comece por aí, inspecione a resposta e só então decida se o próximo passo é justificado.
  • Sinais de anti-bot geralmente são visíveis na resposta: status 403 ou 429 inesperados, redirecionamentos súbitos, HTML pequeno ou vazio, páginas de desafio, telas de CAPTCHA, loops de login ou consentimento, e conteúdo que desaparece após solicitações repetidas.
  • Alvos grandes e de alto tráfego como Amazon, Google, LinkedIn, Instagram, TikTok e grandes marketplaces frequentemente protegem algumas superfícies de forma agressiva. Eles podem exigir renderização, sessões, roteamento cuidadoso ou um fluxo de navegador, e cada alvo precisa de seu próprio perfil de teste.
  • A proteção não é uniforme mesmo dentro de um site. Páginas de produto/detalhe podem abrir com um perfil mais leve, enquanto avaliações, perfis, páginas de busca, visualizações sensíveis a preços, painéis de disponibilidade ou dados adjacentes à conta podem exigir uma escalada mais forte.
  • Configurações de proxy geo e premium afetam tanto o que você recebe quanto quão caro o perfil de solicitação se torna. Use-os quando conteúdo específico do país, reputação de IP ou bloqueios repetidos provarem que eles importam.
  • O objetivo prático não é ativar todos os controles do ScraperFly. O objetivo é encontrar o nível suficiente que retorne dados completos e repetíveis enquanto mantém o uso de crédito, latência e modos de falha sob controle.

Construtor de solicitação de recuperação

Construa a próxima solicitação em torno de evidências em vez de tentativas cegas

Comece provando o que voltou, depois adicione renderização, esperas, cabeçalhos, direcionamento de país, sessões, roteamento premium, captura de tela, ou saída em PDF apenas quando a resposta vazia apontar para essa correção.

RAW
Fonte.

Inspecione a resposta bruta primeiro

Status, URL final, tipo de conteúdo e tamanho da resposta revelam se a página está vazia, redirecionada, bloqueada, ou simplesmente construída em JavaScript.

statustamanhoURL final
JS
Renderizar

Renderizar quando a fonte é apenas uma casca

A execução do navegador pode revelar conteúdo oculto por hidratação, carregamento preguiçoso ou estado de rota do lado do cliente.

render=trueaguardar
QA
Prova

Use capturas de tela quando a evidência em HTML for ambígua

A captura visual ajuda a confirmar se o alvo foi carregado, bloqueado, redirecionado ou exibido em um estado vazio.

captura de telaprova

Controles que ajudam a recuperar respostas HTML vazias

url

A página de destino retornando HTML vazio ou pequeno.

render

Execução do navegador quando o HTML da fonte não contém conteúdo útil.

wait

Controle de tempo para seções que carregam tarde.

format

A forma de saída usada para verificar a recuperação.

exemplo de cURL

Gere Markdown com a mesma forma de solicitação que você pode mover para produção

curl "https://scraperfly.com/api/v1?url=https%3A%2F%2Fexample.com&format=markdown" \
  -H "apikey: YOUR_API_KEY"

Custo de recuperação

Gaste em recuperação mais pesada apenas depois que a resposta mostrar o porquê

Renderização, esperas, sessões, capturas de tela, PDFs e roteamento mais robusto podem resolver diferentes casos de resposta vazia. Testar a próxima solicitação útil mais leve mantém o diagnóstico acessível e evita que uma verificação de alvo pequeno se torne o perfil mais caro por padrão.

Um pedido HTML leve retornando uma resposta simples
01

Fetch básico

Use um fetch básico quando o HTML público já contém os campos que você precisa.

Perfil de pedido mais leve; mantenha-o quando a resposta estiver completa.

Renderização JavaScript produzindo um DOM completo
02

Renderização

Use renderização quando o HTML bruto é uma casca e o JavaScript completa a página.

Perfil mais pesado; use-o apenas quando a saída do navegador alterar o resultado.

Várias solicitações preservando cookies e estado do visitante
03

Sessão com estado

Use sessões quando cookies, consentimento, local ou paginação alterarem a resposta.

Perfil de estado mais pesado; preserve-o apenas quando a continuidade for importante.

Roteamento de solicitações através de rotas geográficas e de maior qualidade
04

Roteamento e geo premium

Use roteamento premium ou geográfico apenas quando a origem, país, reputação ou conteúdo regional alterarem o resultado.

Perfil de roteamento mais pesado; aplique-o apenas a alvos que provem que precisam.

O que torna a recuperação de resposta vazia mais pesada

Mais trabalho de infraestrutura

Renderização de navegador, escolhas de roteamento e esperas mais longas significam que a plataforma precisa fazer mais do que retornar uma simples resposta.

Mais incerteza no alvo

Redirecionamentos, estados vazios, limites de taxa e páginas de desafio frequentemente requerem opções de entrega mais robustas ou tentativas novamente.

Mais estado a preservar

Cookies, sessões, consentimento e fluxos de múltiplas páginas adicionam partes móveis que um fetch sem estado simples não possui.

Mais evidências a retornar

Capturas de tela, PDFs, saída renderizada e artefatos de resposta mais ricos são úteis, mas são mais pesados do que HTML simples.

Como manter as execuções de recuperação previsíveis

Amostre antes de escalar

Teste um pequeno conjunto de URLs primeiro e agrupe alvos pelo perfil mais leve que retorna dados completos.

Não renderize por padrão

Inspecione o HTML bruto antes de ativar a renderização. Muitas páginas públicas já contêm os dados que você precisa.

Escalone com base em evidências

Suba apenas quando a resposta mostrar conteúdo ausente, dependência de estado, variação geográfica ou problemas de roteamento.

Meça resultados úteis

Otimize em torno de registros válidos entregues, não no volume bruto de solicitações. Um perfil mais leve é melhor apenas quando permanece completo.

PERGUNTAS FREQUENTES SOBRE RESPOSTA VAZIA

Perguntas comuns sobre respostas de scraping HTML vazias

Respostas práticas para equipes decidindo se uma página vazia precisa de renderização, contexto de solicitação, mudanças de roteamento, prova visual ou correções de parser.

Respostas rápidas
DIAGNOSIS

O que significa HTML vazio

Por que o corpo da resposta parecia vazio?

O alvo pode ter retornado um shell JavaScript, redirecionamento, página de consentimento, fallback de desafio, variante regional ou uma resposta que precisa de um formato de saída diferente.

Um status 200 é suficiente para confiar no resultado?

Não. Uma resposta 200 ainda pode ser um shell em branco, bloqueio suave, página de fallback ou destino de redirecionamento. Verifique a URL final, o tamanho da resposta e a saída visível.

RENDERING

Raw versus rendered

Quando devo ativar a renderização?

Ative a renderização quando o HTML fonte não contém conteúdo útil que aparece após a execução do JavaScript do lado do navegador.

Quando devo evitar a renderização?

Evite a renderização quando a resposta fonte já contém os dados que seu parser precisa. Manter páginas simples reduz a latência e o peso da solicitação.

RECOVERY

Controles da próxima solicitação

Devo tentar novamente uma resposta vazia?

Tente novamente falhas temporárias com retrocesso limitado, mas corrija entradas ruins, formatos não suportados, suposições do parser ou contexto de solicitação ausente em vez de repeti-los.

Quando cabeçalhos, sessões ou roteamento ajudam?

Use-os quando as evidências mostram que o alvo depende de contexto aceito, continuidade, região ou reputação de rede.

OUTPUT

Escolha de prova e formato

As capturas de tela podem ajudar?

Sim. Uma captura de tela pode mostrar se a página carregou, redirecionou, foi bloqueada ou exibiu um estado vazio quando as evidências em HTML são ambíguas.

Qual formato devo comparar?

Compare o HTML bruto com o HTML renderizado primeiro, depois use texto, Markdown, metadados JSON, captura de tela ou PDF quando essa saída ajuda o fluxo de trabalho a jusante.