O que é um Webhook?
A API de Scraping sem Raspagem pode enviar o resultado de uma tarefa para um endpoint de webhook configurado após a conclusão de um trabalho assíncrono.
Resumo
- Um webhook é uma notificação de evento enviada como uma solicitação HTTP. Um produtor chama uma URL de receptor quando um evento assinado ocorre.
- Um receptor precisa de um contrato de entrega. O método de solicitação, carga útil, resposta de sucesso e comportamento de falha devem vir da documentação do provedor.
- Receber uma solicitação não é o mesmo que confiar nela. Autentique a fonte usando o mecanismo que o provedor realmente suporta e valide o esquema do evento.
- Eventos duplicados e fora de ordem são casos normais de design. Use um identificador estável de evento ou tarefa e separe o recebimento do processamento comercial.
Um webhook permite que um serviço informe sua aplicação que algo aconteceu sem esperar que sua aplicação pergunte novamente. Um serviço de tarefa pode relatar a conclusão, um serviço de pagamento pode relatar uma cobrança liquidada, ou uma plataforma de implantação pode relatar uma construção concluída. O produtor inicia uma solicitação HTTP para uma URL controlada pelo consumidor. Sua aplicação recebe a mensagem, decide se a aceita e então atualiza seu próprio estado.
A definição curta oculta várias escolhas de engenharia. Um evento pode chegar após a ação original do usuário ter terminado, e um reconhecimento de rede pode ser perdido mesmo quando o processamento foi bem-sucedido. Um design de webhook útil, portanto, cobre autenticação, armazenamento, deduplicação, ordenação e recuperação. Este guia segue uma notificação desde o registro até o recebimento e explica onde um receptor deve confiar em evidências em vez de suposições.
O Produtor, Evento e Contrato de Receptor
Três papéis tornam uma troca de webhook compreensível. O produtor possui o evento, o registro do evento descreve o que ocorreu, e o receptor expõe um endpoint acessível. O produtor precisa de uma URL de endpoint e muitas vezes de uma assinatura que especifique quais eventos enviar. O receptor precisa saber o método de solicitação esperado, cabeçalhos, formato da carga útil e resposta de reconhecimento. A especificação de semântica HTTP define a estrutura de solicitação e resposta; o contrato do provedor fornece o significado do evento.
Imagine um trabalho de raspagem identificado por um ID de tarefa. A submissão pode retornar antes que a coleta termine. Depois, uma mensagem de conclusão pode levar esse ID e um status. O receptor usa o ID para juntar o evento com o registro de trabalho armazenado. Não deve assumir que toda carga útil incorpora o conjunto final completo de dados; alguns serviços enviam um ponteiro, enquanto outros incluem o resultado. Persista o ID da tarefa original na submissão para que essa associação posterior não dependa de uma URL ou rótulo de exibição adivinhados.
O atual ciclo de vida da tarefa AI Scraper documenta uma URL de webhook opcional e o ID da tarefa empurrada, status, entrada e resultado de tarefa opcional. Esse é um contrato concreto, não um esquema universal de webhook. Um receptor construído para outro produto deve verificar a documentação daquele produto. Mesmo dentro de uma plataforma, duas famílias de eventos podem usar nomes de campo e estados de conclusão diferentes.
Entrega de Webhook versus Polling
Polling pergunta a um serviço sobre o estado em uma programação. Um webhook altera a direção do primeiro movimento: a fonte contata seu endpoint quando tem um evento relevante. Isso pode reduzir verificações vazias e encurtar o atraso antes que seu fluxo de trabalho perceba uma mudança. Também adiciona um receptor público, incerteza de entrega em rede e novo trabalho de segurança. Nenhum padrão torna o evento comercial subjacente transacional entre dois sistemas operados de forma independente.
Uma arquitetura prática muitas vezes combina um webhook para reação rápida com uma verificação de status periódica para reconciliação. A verificação agendada compara trabalhos locais com o estado de tarefa autoritativo do provedor e encontra notificações ausentes ou erros de processamento local. Mantenha essa verificação restrita: consulte apenas trabalhos cujo estado local não tenha alcançado um estado terminal confiável. O receptor e o reconciliador devem ambos chamar a mesma função de transição de estado idempotente, em vez de criar dois caminhos conflitantes.
A escolha depende da sensibilidade ao tempo e das características do provedor. Se um resultado deve ser processado logo após a conclusão e o provedor documenta callbacks, um webhook é útil. Se o consumidor não tem um endpoint HTTPS acessível ou o provedor não tem mecanismo de entrega, o polling pode ser mais simples. Para mensagens interativas de ida e volta, uma conexão persistente pode se encaixar melhor. O nome webhook não promete nenhuma latência ou durabilidade específica.
Como Aceitar uma Notificação com Segurança
Trate uma solicitação HTTP recebida como entrada não confiável. Primeiro, limite seu tamanho e método, exija a rota pretendida e analise apenas o tipo de mídia documentado. Em seguida, aplique o método de autenticação do provedor. Se o provedor assina cargas úteis, a verificação deve usar os bytes brutos exatos e os cabeçalhos de assinatura documentados antes que um analisador JSON mude a representação. A especificação de Webhooks Padrão descreve um modelo comum de evento assinado, mas um produtor deve realmente implementá-lo antes que o receptor possa confiar nesse modelo.
Uma verificação de assinatura responde se um detentor do segredo de assinatura produziu aqueles bytes. Não prova que o evento é novo, que a carga útil corresponde à sua assinatura, ou que a tarefa pertence à sua conta. Verifique timestamp ou metadados de reprodução quando o provedor os oferecer; mapeie o ID da tarefa para um trabalho local; valide campos requeridos e transições de estado permitidas. Mantenha segredos em um armazenamento de segredos gerenciado e use comparação em tempo constante quando seu esquema de verificação escolhido exigir a comparação de valores de autenticação de mensagem.
Seja preciso sobre o comportamento sem resíduo. O ciclo de vida do Scraper de IA documentado estabelece o payload de callback e a exigência de URL HTTPS, mas por si só não estabelece que esse callback carrega um cabeçalho de assinatura específico. Construa o receptor a partir do contrato de entrega atual do produto selecionado. Se os detalhes de autenticação não estiverem documentados para essa família de eventos, pergunte ao suporte ou use um segredo controlado pela aplicação apenas na URL do receptor, se o provedor suportar explicitamente esse design e sua revisão de segurança aceitar os riscos de exposição.
Recepção, Enfileiramento e Processamento Idempotente
O manipulador HTTP deve fazer trabalho suficiente para tornar a recepção durável e, em seguida, reconhecer usando a resposta de sucesso documentada do provedor. Uma sequência comum é validar a solicitação, registrar um ID de evento ou ID de tarefa com o payload bruto e o horário de recepção, enfileirar um trabalho de processamento e, em seguida, responder. Longas transformações de dados dentro do caminho da solicitação aumentam a chance de que o produtor veja um tempo limite, mesmo que sua atualização de banco de dados eventualmente tenha sido bem-sucedida. Essa ambiguidade é o porquê do processamento de negócios precisar de um guardião de duplicatas.
Escolha uma chave de deduplicação do contrato do provedor. Um ID de evento estável é ideal quando existe. Se o produtor apenas expuser um ID de tarefa mais um status terminal, construa uma chave de aplicativo a partir desses campos documentados e do escopo da assinatura ou conta. Adicione uma restrição de unicidade no banco de dados em torno dessa chave. O consumidor pode então aceitar a mesma notificação mais de uma vez enquanto aplica o efeito comercial apenas uma vez. Não confie em um conjunto na memória que desaparece quando o processo é reiniciado.
Uma tarefa também pode mudar de estado antes que as mensagens cheguem. Por exemplo, um aviso de conclusão pode ser processado após uma verificação de status separada já ter marcado o trabalho como completo. A função de transição deve comparar os estados atuais e os estados recebidos e rejeitar qualquer mudança que moveria um trabalho completo para trás. Armazene o payload original e a decisão para que um operador possa explicar por que uma mensagem foi aceita, ignorada como duplicada ou rejeitada como inválida.
Registro, Falhas e Observabilidade
Registre apenas uma URL de receptor que você controla. Mantenha o caminho específico para o propósito e evite expor endereços internos como destinos de callback. Uma aplicação que permite a usuários arbitrários registrar pontos finais de webhook pode se tornar um canal de falsificação de solicitação do lado do servidor se buscar alvos de rede privada. Valide o esquema e a política de destino no registro e reavalie endereços resolvidos quando a entrega ocorrer, se seu sistema for o próprio produtor. A orientação do OWASP SSRF explica o limite de rede por trás desse risco.
Registre evidências de entrega no consumidor: hora de recebimento, identificador de tarefa ou evento do provedor, versão do esquema quando fornecida, decisão de autenticação, status de reconhecimento, ID da fila e estado final de processamento. Exclua segredos e dados pessoais que não sejam necessários para as operações. Um painel que diz apenas 'webhook bem-sucedido' não pode distinguir a entrega HTTP do armazenamento downstream bem-sucedido. Separe essas medições e alerte sobre eventos aceitos bloqueados.
Teste o fluxo de trabalho com um evento inócuo antes de depender dele. Confirme que o receptor é acessível via HTTPS, que um payload válido realiza a transição de estado esperada, que payloads malformados são rejeitados e que a entrega repetida não muda mais nenhum estado comercial adicional. Simule uma mensagem fora de ordem se o provedor puder enviar vários eventos para um objeto. Essas verificações exercitam o contrato do receptor sem presumir que o produtor garante a ordem ou a entrega exatamente uma vez.
Quando um Webhook É a Ferramenta Errada
Um webhook é uma boa opção para mudanças discretas que são importantes para outro sistema. É uma opção ruim para ler um recurso atual sob demanda. Se um usuário abre um painel e pede o saldo da conta mais recente, uma consulta de API comum é mais clara do que esperar por uma notificação passada. Um webhook pode sinalizar que o saldo mudou, enquanto a API continua sendo o lugar para reconciliar o valor autoritativo.
Fluxos de eventos de alto volume também podem precisar de recursos de corretor que um receptor HTTP isolado não fornece, como ordenação particionada e reprodução por offset. Um produtor de webhook pode oferecer seus próprios logs de entrega, mas isso é um recurso específico do provedor, não parte do conceito básico. Use o menor mecanismo que satisfaça o volume de eventos, tolerância ao atraso e requerimento de recuperação.
Para trabalhos sem resíduo, mantenha o callback vinculado a uma tarefa assíncrona documentada. API de Extração é uma superfície de produto para dados da web estruturados, enquanto o relacionado guia de fluxo de ator explica por que um identificador de tarefa e o tratamento de resultados são importantes. Defina exatamente qual ação local uma tarefa concluída desencadeia e mantenha um caminho de busca de status para auditar essa ação mais tarde.
Conclusão
Um webhook é uma chamada HTTP acionada por evento de um produtor para um receptor. A unidade confiável é o contrato completo: registro, recepção autenticada, reconhecimento durável, controle de duplicatas, transição de estado e reconciliação. Comece com um evento documentado e um resultado local mensurável antes de estender o receptor para famílias de eventos adicionais.
Construa um Fluxo de Coleta Orientado a Eventos
Crie uma tarefa suportada, mantenha seu identificador e conecte sua conclusão a um receptor que você pode validar e observar.
Inscreva-se hoje e receba $5 em crédito grátis — sem necessidade de cartão de crédito.
Reivindique seu crédito de $5 →FAQ
Um webhook é o mesmo que uma API?
Um webhook é uma maneira de usar uma fronteira de API HTTP para notificações de eventos. O produtor inicia a chamada após um evento, enquanto um cliente API comum geralmente inicia uma consulta ou comando quando precisa de um resultado. Um sistema pode usar ambos os padrões para a mesma tarefa: o callback sinaliza a conclusão e um endpoint de status confirma o estado autoritativo.
Um webhook pode chegar duas vezes?
Sim. Um reconhecimento de entrega pode ser perdido, ou um produtor pode enviar mais de uma notificação para o mesmo objeto. O receptor deve registrar um identificador estável e tornar a transição de negócios idempotente. Uma mensagem repetida ainda pode ser reconhecida após o consumidor reconhecê-la como um duplicado.
O receptor deve verificar uma assinatura?
Verifique uma assinatura quando o provedor documentar uma para aquela família de eventos. Use o corpo da solicitação bruta e o exato procedimento de verificação que o provedor especifica. Não invente um nome de cabeçalho ou assuma que todo webhook tem uma assinatura. Também valide a atualidade, a propriedade da tarefa e a forma da carga útil onde o contrato suporta essas verificações.
Que resposta um receptor deve enviar?
Envie o status de sucesso ou falha definido pelo contrato do webhook do produtor após aceitação ou rejeição durável. Mantenha trabalhos downstream caros fora do caminho da solicitação quando o contrato permitir. O reconhecimento apenas relata o recebimento; seu próprio registro de trabalho deve mostrar separadamente se o processamento comercial foi concluído.
Um webhook pode substituir o polling completamente?
Um webhook pode eliminar verificações vazias frequentes, mas uma consulta de reconciliação periódica continua sendo útil para estados importantes. Pode detectar notificações perdidas, falhas de aplicativo ou erros de processamento local. O intervalo correto depende da tolerância da tarefa a estados desatualizados e da interface de status documentada do provedor.