# Webhook nedir, ne işe yarar? URL, güvenlik ve örnek

Adres: https://fincodelabs.com/blog/webhook-nedir · Yayıncı: Fincode (Fincode Yazılım ve Teknoloji A.Ş.), İstanbul, Türkiye · Kategori: Algoritmik işlem · Yayın: 2026-11-05 · Güncelleme: 2026-11-05

Webhook nedir, ne işe yarar? API çağrısından farkı, webhook URL, gövde, imza, tekrar deneme, test siteleri ve test edilmiş kısa bir Python alıcı örneği.

**Kısa cevap:** **Webhook**, bir olay gerçekleştiğinde bir sistemin başka bir sisteme kendiliğinden HTTP isteği göndermesi demektir; alıcı, sürekli sormak yerine olay olunca haberdar olur. İstek çoğunlukla `POST` yöntemiyle, alıcının verdiği webhook URL adresine JSON gövdeyle gelir. Güvenli kullanım için alıcı imzayı ham gövdeyle doğrular, hızlı yanıt verir, aynı olayı iki kez işlemez ve gövdeye anahtar yazılmaz.

Webhook; ödeme onayı, kod deposu olayı, form kaydı veya grafik alarmı gibi çok farklı yerlerde aynı mantıkla çalışır. Kavram basittir, sorunlar ise ayrıntıda çıkar: sahte istek, yinelenen olay ve zaman aşımı.

Bu yazı genel kavramı anlatır. TradingView yalnızca bir örnek olarak geçer; kurulum adımları [TradingView webhook](https://fincodelabs.com/blog/tradingview-webhook-nedir) yazısındadır. Yazı platform, strateji veya ayar önermez. Teknik bilgiler 4 ve 5 Kasım 2026'da kontrol edilmiştir.

## Webhook nedir, ne işe yarar?

Webhook, gönderen sistemin bir olay anında alıcının adresine otomatik istek atmasını sağlayan bir bildirim yöntemidir ve iki sistemi sürekli sorgu yapmadan birbirine bağlamaya yarar. Bir olay, sistemde kayda değer bir değişiklik demektir: ödeme tamamlanması, yeni kayıt açılması veya alarm tetiklenmesi gibi.

1. Alıcı, istekleri dinleyecek bir adres açar.
2. Gönderen sisteme bu adres ve istenen olay türleri tanımlanır.
3. Olay olunca gönderen sistem adrese HTTP isteği atar.
4. Alıcı isteği doğrular, kaydeder ve kısa bir başarı yanıtı döner.
5. Asıl iş, yanıttan sonra arka planda yapılır.

Webhook bir veri akışı kanalı değildir; yalnızca olay anında gelen tek tek isteklerden oluşur. Sürekli fiyat veya emir defteri akışı için kullanılan kalıcı bağlantı [REST ve WebSocket](https://fincodelabs.com/blog/rest-websocket-api-farki) yazısında anlatılıyor.

TradingView'ın [Kullanım Şartları](https://www.tradingview.com/policies/) (5 Kasım 2026'da okundu), alarm ve webhook özelliklerini görüntüleme amaçlı lisanslar; bunların otomatik işlem için kullanılmasını, üçüncü taraf ürün veya hizmetler üzerinden olanlar dahil yasaklar. Bu yol seçilmeden önce şartlar okunmalı ve hukuki görüş alınmalıdır; bu, kullanıcı ile TradingView arasındaki sözleşmedir.

## API çağrısı ile webhook farkı nedir?

API çağrısında bilgiyi isteyen taraf sorar, webhook'ta ise bilgiye sahip olan taraf haber verir. Bu yüzden webhook'a bazen ters yönlü API denir.

**API çağrısı ve webhook**

| Özellik | API çağrısı | Webhook |
| --- | --- | --- |
| İlk adımı atan | İstemci | Olayın olduğu sistem |
| Zamanlama | İstemcinin belirlediği aralık | Olay anı |
| Sunucu gereksinimi | İstemci internete açık olmak zorunda değil | Alıcının herkese açık adresi gerekir |
| Kaçırma riski | Sorulan aralıkta gecikme | Alıcı kapalıysa olay kaçabilir |
| Tipik kullanım | Geçmiş veri, emir gönderme, bakiye sorgusu | Bildirim, tetikleme |

> **Varsayımsal örnek:** Günde 20 olay üreten bir servis saniyede bir sorgulansın. Günlük istek sayısı 60 × 60 × 24 = 86.400 olur; bunların 86.380'i boş döner, yani %99,98'i gereksizdir. Aynı iş webhook ile 20 istekte yapılır. Sayılar yalnızca hesabı göstermek içindir.

İkisi çoğu zaman birlikte kullanılır: webhook olayı haber verir, ayrıntı ve mutabakat API çağrısıyla alınır. Kaçan olaylar da düzenli API sorgusuyla yakalanır.

## Webhook URL nedir, nasıl seçilir?

Webhook URL, gönderen sistemin isteği attığı ve alıcıya ait olan internet adresi demektir. Adresi gönderen sistem değil, mesajı alacak servis belirler.

- **Şifreli bağlantı:** GitHub'ın webhook rehberi sunucunun HTTPS kullanmasını ve sertifika doğrulamasının açık kalmasını ister.
- **Adreste gizli değer:** Aynı rehber kimlik bilgisini adrese yazmak yerine webhook gizli değeri kullanılmasını önerir. Adresler sunucu kayıtlarına düşebilir.
- **Erişilebilirlik:** Ev bilgisayarındaki `localhost` dışarıdan görünmez; alıcı internete açık bir sunucuda çalışır.
- **Gönderenin kuralları:** Bazı servisler port ve protokolü sınırlar. Bir servisin sınırları aşağıda örnek olarak verilir.

## Webhook gövdesi ve başlıkları neler içerir?

Webhook isteği genellikle olay kimliği, olay türü ve zaman bilgisini JSON gövdede, imzayı ise başlıkta taşır. Aşağıdaki istek varsayımsaldır; başlık adı yalnızca bu yazının örnek alıcısında kullanılır.

```http
POST /olay HTTP/1.1
Content-Type: application/json
X-Imza: <gövdenin HMAC-SHA256 değeri>

{"id": "olay-1", "tur": "ornek.olustu", "zaman": "2026-11-04T10:00:00Z"}
```

Standard Webhooks belirtimi bu alanlar için `webhook-id`, `webhook-timestamp` ve `webhook-signature` başlıklarını tanımlar; ancak her servis kendi adlarını kullanır ve bu belirtim zorunlu bir standart değildir. Kimlik, tekrar denemelerde değişmeden kalmalıdır.

Gövdeye API anahtarı, şifre veya gizli değer yazılmaz. TradingView'ın yardım sayfası webhook gövdesine parola gibi hassas bilgilerin konmamasını açıkça ister. Bir platform anahtarı, gövdeyle dolaşmak yerine alıcının güvenli deposunda kalır; ayrıntı [API anahtarı](https://fincodelabs.com/blog/api-anahtari-nedir) yazısında yer alıyor.

## Webhook imzası nasıl doğrulanır?

Webhook imzası, gövdenin paylaşılan gizli değerle HMAC yöntemine sokulup aynı değerin alıcıda yeniden hesaplanmasıyla doğrulanır. HMAC, RFC 2104'te tanımlanan, bir özet fonksiyonunu paylaşılan gizli anahtarla kullanan doğrulama yöntemi demektir. Adresi öğrenen biri imzayı üretemediği için sahte istek reddedilir.

- **Ham gövde:** İmza, JSON çözülmeden önceki baytlarla hesaplanır. Standard Webhooks belirtimi, yeniden yazılan JSON'un doğrulamayı bozabileceğini belirtir.
- **Sabit süreli karşılaştırma:** GitHub dokümanı düz eşitlik karşılaştırması yerine sabit süreli yöntem ister; Python'da bu iş `hmac.compare_digest` ile yapılır.
- **Zaman damgası:** Belirtim, eski isteğin tekrar oynatılmasına karşı zaman damgasının kabul edilebilir aralıkta kontrol edilmesini ister.
- **Gizli değer:** Rastgele ve uzun olur, koda ve depoya yazılmaz.

Her gönderen imza sunmaz. İmza yoksa IP listesi, ayrı doğrulama adımı ve mesajı olduğu gibi emre çevirmeyen kontroller devreye girer; TradingView tarafındaki seçenekler ilgili yazıda anlatılıyor.

## Tekrar deneme ve yinelenen olay nasıl ele alınır?

Gönderen sistemler başarısız sayılan isteği yeniden gönderebilir; bu yüzden alıcı aynı olayın birden çok kez gelebileceğini varsayarak yazılır. Bir işlem aynı sonucu verecek şekilde tekrar uygulanabiliyorsa idempotent denir.

**Üç kaynakta zaman ve tekrar kuralları, 4 Kasım 2026**

| Kaynak | Yanıt süresi | Tekrar |
| --- | --- | --- |
| GitHub webhook rehberi | 2XX yanıt 10 saniye içinde | Rehber elle yeniden gönderimi anlatır; aynı teslimat kimliği korunur |
| Standard Webhooks belirtimi | 15 ile 30 saniye arası zaman aşımı önerilir | Günlere yayılan, artan aralıklı tekrar önerilir |
| TradingView Yardım Merkezi | 3 saniyeden uzun süren istek iptal edilir | Tekrar anlatılmaz; webhook zaman zaman hedefe ulaşmayabilir |

- **Önce yanıt:** Olay kuyruğa yazılır, başarı yanıtı döner, iş arka planda yapılır.
- **Kimlik kaydı:** İşlenen olay kimliği kalıcı depoda tutulur; aynı kimlik ikinci kez işlenmez.
- **Sıra:** Olayların gönderildiği sırada geleceği varsayılmaz, zaman bilgisi karşılaştırılır.
- **Kaçan olay:** Hiç gelmeyen olay ancak API sorgusuyla bulunur; mutabakat bu yüzden gerekir.

Webhook bir emir tetikliyorsa bu kurallar para demektir: yinelenen alarm iki emre dönüşebilir. Tekilleştirme ve durdurma düğmesi [otomatik al sat botu](https://fincodelabs.com/blog/otomatik-al-sat-botu) yazısında yer alıyor.

## Webhook nasıl kullanılır? Test edilmiş kısa bir Python alıcı

Webhook entegrasyonu, gönderen sisteme adres tanımlamak ve o adreste isteği doğrulayıp işleyen küçük bir alıcı çalıştırmaktır. Aşağıdaki alıcı yalnızca Python standart kütüphanesini kullanır; imzayı doğrular, bozuk gövdeyi reddeder ve aynı kimliği ikinci kez işlemez.

```python
import hashlib, hmac, json, os
from http.server import BaseHTTPRequestHandler, HTTPServer

GIZLI = os.environ["WEBHOOK_GIZLI"].encode()
gorulen = set()  # gerçek sistemde kalıcı bir depoda tutulur

class Alici(BaseHTTPRequestHandler):
    timeout = 3  # yarım kalan istek tek iş parçacıklı sunucuyu kilitlemesin

    def yanit(self, kod, metin):
        self.send_response(kod)
        self.end_headers()
        self.wfile.write(metin.encode())

    def do_POST(self):
        try:
            uzunluk = int(self.headers.get("Content-Length", 0))
        except ValueError:
            uzunluk = -1
        if uzunluk < 0:
            return self.yanit(400, "uzunluk gecersiz")
        govde = self.rfile.read(uzunluk)  # imza ham gövdeyle hesaplanır
        beklenen = hmac.new(GIZLI, govde, hashlib.sha256).hexdigest().encode()
        gelen = self.headers.get("X-Imza", "").encode()
        if not hmac.compare_digest(beklenen, gelen):
            return self.yanit(401, "imza gecersiz")
        try:
            kimlik = json.loads(govde)["id"]
        except (ValueError, KeyError, TypeError, RecursionError):
            return self.yanit(400, "govde gecersiz")
        if not isinstance(kimlik, str) or not kimlik:
            return self.yanit(400, "govde gecersiz")
        if kimlik in gorulen:
            return self.yanit(200, "yineleme, atlandi")
        gorulen.add(kimlik)
        # Uzun iş burada yapılmaz: olay kuyruğa yazılır, yanıt hemen döner
        self.yanit(200, "alindi")

HTTPServer(("127.0.0.1", 8080), Alici).serve_forever()
```

Kod 5 Kasım 2026'da yerel olarak çalıştırılmış, bir istemciyle sırasıyla geçerli istek, aynı istek, yanlış imzalı istek ve doğru imzalı ama JSON olmayan gövde gönderilmiştir. Sonuç:

```
200 alindi
200 yineleme, atlandi
401 imza gecersiz
400 govde gecersiz
```

Ek denemelerde geçersiz uzunluk başlığı ile metin olmayan veya boş kimlik 400 aldı; gövdesi yarım kalan bağlantı 3 saniye sonra kapandı. Bu kod kavramı göstermek içindir, canlı kullanım için yeterli değildir: HTTPS, eşzamanlı istek desteği, kalıcı kimlik deposu, gövde boyutu sınırı, kuyruk ve kayıt eklenmesi gerekir. Gizli değer ortam değişkeninden okunur ve örnekte hiçbir API anahtarı bulunmaz.

## Webhook site nedir? Test siteleri ve bir gönderen örneği

Webhook site araması çoğunlukla, geçici bir adres verip gelen isteği ekranda gösteren test sitelerini anlatır; alıcı kod yazılmadan önce gönderenin ne yolladığını görmeye yarar. Aramayla aynı adı taşıyan Webhook.site servisinin dokümanına göre (4 Kasım 2026) ücretsiz adresler 7 gün sonra silinir ve 100 istekten sonra yeni istek almaz; ücretsiz sürümde veri, adres kimliğini bilen herkes tarafından görülebilir. Servisin anılması bir öneri değildir.

Bu yüzden test sitesine gerçek gizli değer, anahtar veya kişisel veri gönderilmez ve canlı sistemin adresi olarak kullanılmaz. Yukarıdaki yerel alıcı yalnızca aynı bilgisayardan gönderilen istekle denenir: 127.0.0.1 adresine dış bir gönderen ulaşamaz ve alıcı gövdeyi ekrana yazmaz.

**Bir gönderen örneği: TradingView Yardım Merkezi, 4 Kasım 2026**

| Kural | Yardım sayfasındaki bilgi |
| --- | --- |
| Port | Yalnızca 80 ve 443 |
| Zaman aşımı | 3 saniyeden uzun süren istek iptal edilir |
| Hesap | Webhook alarmları için iki faktörlü doğrulama gerekir |
| IPv6 | Desteklenmez |
| İçerik türü | Geçerli JSON ise `application/json`, değilse `text/plain` |

Bu değerler sitedeki TradingView webhook yazısında Ekim 2026 itibarıyla verilen bilgilerle aynıdır. Alarmı emre çeviren köprü bir webhook alıcısıdır; alarm kişinin kendi kuralından üretilmelidir. Müşterinin yazılı kurallarından köprü yazılımı geliştirme kapsamı [TradingView otomasyonu](https://fincodelabs.com/hizmetler/tradingview-otomasyonu) sayfasındadır; Fincode strateji veya sinyal sunmaz. Webhook kazanç anlamına gelmez, tetiklenen emirler zararla sonuçlanabilir.

## Sık sorulan sorular

### Webhook nedir, ne işe yarar?

Webhook, bir olay gerçekleştiğinde bir sistemin başka bir sisteme kendiliğinden HTTP isteği göndermesidir. Sürekli sorgu yapmadan bildirim almaya ve bir olayla başka bir işi tetiklemeye yarar.

### Webhook URL nedir?

Webhook URL, gönderen sistemin isteği attığı ve alıcıya ait olan internet adresidir. Şifreli bağlantı kullanır, içine gizli değer yazılmaz ve internetten erişilebilir olmalıdır.

### Webhook entegrasyonu nedir?

Webhook entegrasyonu, gönderen sisteme adres ve olay türlerini tanımlamak, alıcı tarafta da isteği doğrulayıp işleyen servisi çalıştırmaktır. İmza doğrulama, hızlı yanıt, yineleme kontrolü ve kayıt bu işin parçasıdır.

### Webhook ile API arasındaki fark nedir?

API çağrısında istemci sorar ve yanıt alır, webhook'ta ise olayın olduğu sistem alıcıya haber verir. Çoğu sistemde ikisi birlikte kullanılır: webhook haber verir, ayrıntı ve mutabakat API ile alınır.

### Webhook site nedir?

Webhook site ifadesi genellikle geçici adres verip gelen isteği ekranda gösteren test sitelerini anlatır. Gönderenin ne yolladığını görmeye yarar; gerçek anahtar, gizli değer veya kişisel veri bu sitelere gönderilmez.

### Webhook gövdesine API anahtarı yazılır mı?

Hayır. Gövde gönderen sistemde, kayıtlarda ve ara katmanlarda görülebilir. TradingView de webhook gövdesine parola gibi hassas bilgilerin konmamasını ister. Anahtar alıcının güvenli deposunda kalır.

## Kaynaklar

- [TradingView Yardım Merkezi: How to configure webhook alerts](https://www.tradingview.com/support/solutions/43000529348-how-to-configure-webhook-alerts/)
- [GitHub Docs: Best practices for using webhooks](https://docs.github.com/en/webhooks/using-webhooks/best-practices-for-using-webhooks)
- [GitHub Docs: Validating webhook deliveries](https://docs.github.com/en/webhooks/using-webhooks/validating-webhook-deliveries)
- [Standard Webhooks: açık belirtim](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md)
- [RFC 2104: HMAC (Şubat 1997)](https://www.rfc-editor.org/rfc/rfc2104.html)
- [Python dokümanı: hmac.compare_digest](https://docs.python.org/3/library/hmac.html)
- [Webhook.site dokümanı](https://docs.webhook.site/)
- [TradingView: Kullanım Şartları (5 Kasım 2026'da okundu)](https://www.tradingview.com/policies/)

> Burada yer alan yatırım bilgi, yorum ve tavsiyeleri yatırım danışmanlığı kapsamında değildir. Yatırım danışmanlığı hizmeti, yetkili kuruluşlar tarafından kişilerin risk ve getiri tercihleri dikkate alınarak kişiye özel sunulmaktadır. Burada yer alan yorum ve tavsiyeler ise genel niteliktedir. Bu tavsiyeler mali durumunuz ile risk ve getiri tercihlerinize uygun olmayabilir. Bu nedenle, sadece burada yer alan bilgilere dayanılarak yatırım kararı verilmesi beklentilerinize uygun sonuçlar doğurmayabilir.

---

Bu sayfa, İstanbul merkezli yazılım şirketi Fincode (Fincode Yazılım ve Teknoloji A.Ş.) tarafından yayımlanmıştır: https://fincodelabs.com/blog/webhook-nedir

Kaynak gösterimi: Fincode, "Webhook nedir, ne işe yarar? URL, güvenlik ve örnek", güncelleme 5 Kasım 2026, https://fincodelabs.com/blog/webhook-nedir
