메인 콘텐츠로 건너뛰기
웹훅은 실시간으로 데이터를 서버에 전달할 수 있게 해 줍니다. 업데이트를 주기적으로 폴링하는 대신, 이벤트가 발생하는 즉시 데이터를 받아볼 수 있습니다.

개요

실시간 전송

이벤트를 즉시 수신합니다

푸시 기반

데이터가 서버로 직접 전송됩니다

효율적

폴링이 필요하지 않습니다

신뢰성

재시도 및 복구를 지원합니다

Webhook 유형

유형설명
Filtered Stream Webhooks웹훅을 통해 필터링된 스트림 포스트를 수신합니다
Account Activity API계정 활동 이벤트를 수신합니다

웹훅의 동작 방식

┌──────────┐      ┌──────────┐      ┌──────────┐
│ X Event  │  →   │ X Server │  →   │ Your     │
│ Occurs   │      │          │      │ Webhook  │
└──────────┘      └──────────┘      └──────────┘
  1. 이벤트 발생 — 사용자가 게시물을 작성하거나 DM(다이렉트 메시지)을 보내는 등의 작업을 합니다.
  2. X가 요청 전송 — 웹훅 URL로 POST 요청을 전송합니다.
  3. 서버에서 처리 — 서버가 해당 이벤트를 처리합니다.
  4. 200 응답 — 수신을 확인하기 위해 200 OK를 반환합니다.

웹훅 요구 사항

요구 사항설명
HTTPS웹훅 URL은 HTTPS를 사용해야 합니다
공개URL은 공개적으로 접근 가능해야 합니다
빠른 응답10초 이내에 응답해야 합니다
200 OK수신을 확인하기 위해 200 상태 코드를 반환해야 합니다

보안

Challenge-Response Check (CRC)

X는 CRC 요청을 보내 webhook을 검증합니다. HMAC-SHA256 해시로 응답하세요:
import hmac
import hashlib
import base64

def handle_crc(crc_token, consumer_secret):
    sha256_hash = hmac.new(
        consumer_secret.encode(),
        crc_token.encode(),
        hashlib.sha256
    ).digest()
    
    return {
        "response_token": "sha256=" + base64.b64encode(sha256_hash).decode()
    }

서명 검증

x-twitter-webhooks-signature 헤더를 사용해 웹훅의 진위를 검증하세요.

시작하기

사전 준비 사항

Filtered Stream Webhooks

웹훅을 통해 필터링된 포스트를 받아옵니다

Account Activity API

웹훅을 통해 계정 이벤트를 받아옵니다