DEV Community

Cover image for Maigret Nedir: Çalışan OSINT Tarayıcı
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Maigret Nedir: Çalışan OSINT Tarayıcı

Çoğu OSINT aracı hızla eskir: siteler URL kalıplarını değiştirir, uç noktalar taşınır, captcha davranışı güncellenir ve araç birkaç yıl içinde kırılır. Maigret bu açıdan iyi bir mühendislik örneğidir: 3.000’den fazla siteyi destekler, Python paketi, Telegram botu ve web arayüzü sunar; asıl değeri ise siteler değiştikçe tamamen dağılmayan imza tabanlı mimarisidir.

Apidog'u bugün deneyin

Bu rehber, sıradan aramalar için değil, mühendisler içindir. Maigret’in ne yaptığını, hangi meşru güvenlik ve araştırma bağlamlarında kullanılabileceğini, binlerce siteye nasıl ölçeklendiğini ve aynı test modellerini — imza veritabanları, sapma tespiti, özyinelemeli doğrulama — Apidog ile API testlerine nasıl uygulayabileceğinizi ele alır.

Henüz okumadıysanız, 2026'da Postman Olmadan API Testi yazısında benzer kalıp eşleştirme ve sapma tespiti fikirlerini daha API odaklı bir bağlamda incelemiştik.

TL;DR

  • Maigret, yalnızca kullanıcı adına göre 3.000’den fazla sitede herkese açık hesap izlerini kontrol eder.
  • Giriş bilgisi, API anahtarı veya özel erişim kullanmaz; anonim ziyaretçiye açık olan verileri okur.
  • Temel mimarisi imza veritabanı, çok sinyalli tespit, özyinelemeli arama ve sapma kontrolü üzerine kuruludur.
  • Meşru kullanım alanları: kendi hesaplarınızı bulma, marka suiistimali izleme, yetkili kırmızı ekip çalışmaları, gazetecilik ve kayıp kişi araştırmaları.
  • Aynı mimari modeller API testlerinde de işe yarar: uç nokta imzaları, beklenen yanıt şekilleri, regresyon fikstürleri ve planlı yeniden oynatma.

Maigret nedir, ne değildir?

Maigret, soxoj tarafından sürdürülen MIT lisanslı bir Python aracıdır. README’deki özet tanımı şudur: “3.000’den fazla siteden kullanıcı adına göre bir kişi hakkında dosya toplar.”

Kurulum ve temel kullanım:

pip install maigret
maigret example_username
Enter fullscreen mode Exit fullscreen mode

Komut çalıştığında Maigret:

  1. Site veritabanındaki imzaları yükler.
  2. Her site için kullanıcı adı URL’sini oluşturur.
  3. Sayfayı ister.
  4. “Bulundu”, “bulunamadı” veya “bilinmiyor” kararını verir.
  5. Herkese açık profil alanlarını çıkarır.
  6. Rapor üretir.

Net ayrım önemli:

  • Yalnızca herkese açık verileri kullanır. Giriş yapmaz, kimlik bilgisi denemez, özel API kullanmaz.
  • Meşru araştırma bağlamlarında kullanılır. Gazeteciler, dolandırıcılık araştırmacıları, marka koruma ekipleri ve yetkili kırmızı ekipler tarafından kullanılabilir.
  • Yanlış kullanılabilir. Rızası olmayan bireyler üzerinde çalıştırmak etik ve birçok yargı alanında yasal sınırları aşabilir.

Bu yazı, insan hedefli iş akışına değil, Maigret’in mühendislik modeline ve API testlerine aktarılabilecek kalıplara odaklanır.

Site imza veritabanı

Maigret’in en önemli mühendislik kararı, site davranışlarını kod yerine veri olarak tanımlamasıdır.

Her site imzası şu sorulara cevap verir:

  • Kullanıcı adı bu sitede nasıl aranır?
  • Profil URL’si hangi kalıptadır?
  • “Kullanıcı bulundu” sayfasında hangi metinler görünür?
  • “Kullanıcı bulunamadı” sayfasında hangi metinler görünür?
  • Sayfadan hangi alanlar çıkarılabilir?
  • Site captcha, hız limiti veya özel başlık gerektiriyor mu?

Veritabanı JSON formatındadır, GitHub deposunda sürümlenir ve araç çalıştığında otomatik olarak güncellenebilir. Böylece bir site değiştiğinde tüm kullanıcıların aracı yeniden kurması gerekmez; imza güncellemesi yeterlidir.

API testleri için aynı model kullanılabilir:

{
  "endpoint": "GET /users/{id}",
  "expectedStatus": 200,
  "requiredFields": ["id", "email", "createdAt"],
  "forbiddenFields": ["password", "token"],
  "headers": {
    "content-type": "application/json"
  }
}
Enter fullscreen mode Exit fullscreen mode

Buradaki fikir şudur: uç noktanın davranışını test kodunun içine gömmek yerine, imza gibi sürümlenebilir bir veri yapısıyla tanımlayın.

Bu yaklaşımı sözleşme öncelikli API geliştirme ve MCP sunucu testi için de kullanabilirsiniz.

Maigret “bulundu” ve “bulunamadı” kararını nasıl verir?

Basit bir tarayıcı şu yaklaşımı kullanır:

GET https://example.com/user/<username>
Enter fullscreen mode Exit fullscreen mode

Ardından sadece HTTP durum koduna bakar:

  • 200 ise kullanıcı var
  • 404 ise kullanıcı yok

Gerçek web’de bu yaklaşım genellikle yetersizdir. Birçok site:

  • Kullanıcı yokken de 200 döndürür.
  • Genel bir hata sayfası gösterir.
  • Captcha sayfası döndürür.
  • Mobil veya önbelleğe alınmış bir sayfa gösterir.

Maigret bu yüzden çok sinyalli tespit kullanır. Bir site imzası genellikle şu alanları içerir:

  • urlMain
  • url
  • presenseStrs
  • absenceStrs
  • kullanıcı adı çıkarma regex’i
  • özel header’lar
  • kategori ve ülke etiketleri

Basitleştirilmiş karar mantığı:

def detect_profile(response_text, presence_strs, absence_strs):
    has_presence = all(s in response_text for s in presence_strs)
    has_absence = any(s in response_text for s in absence_strs)

    if has_presence and not has_absence:
        return "found"

    if has_absence:
        return "not_found"

    return "unknown"
Enter fullscreen mode Exit fullscreen mode

API testlerinde de aynı ilke geçerlidir. Sadece 200 OK yeterli değildir. Gövde, header ve hata zarfları da doğrulanmalıdır.

Örneğin Apidog’da bir istek için şu iddiaları birlikte kullanabilirsiniz:

pm.test("status 200 dönmeli", function () {
  pm.response.to.have.status(200);
});

pm.test("kullanıcı alanları beklenen formatta olmalı", function () {
  const json = pm.response.json();

  pm.expect(json).to.have.property("id");
  pm.expect(json).to.have.property("email");
  pm.expect(json).to.not.have.property("password");
});
Enter fullscreen mode Exit fullscreen mode

Maigret’in presenseStrs + absenceStrs yaklaşımı, API testlerinde “beklenen alanlar” + “asla dönmemesi gereken alanlar” modeline karşılık gelir.

Özyinelemeli arama ve bilgi çıkarma

Maigret bir hesap bulduktan sonra yalnızca “var” demekle kalmaz. Herkese açık profil sayfasından ek tanımlayıcıları çıkarmaya çalışır:

  • Diğer kullanıcı adları
  • Bağlantılı e-posta adresleri
  • Telefon numaraları
  • Gerçek adlar
  • Sosyal bağlantılar

Ardından bu yeni tanımlayıcılar tekrar arama döngüsüne alınabilir. Bu, özyinelemeli genişleme modelidir.

API testlerinde benzer yaklaşım şudur:

  1. Bir uç noktadan yanıt alırsınız.
  2. Yanıtta ilişkili bir id, next, profileUrl veya resourceId alanı bulursunuz.
  3. Bu değeri sonraki isteğe parametre olarak geçirirsiniz.
  4. İlişkili uç noktanın da sözleşmeye uyup uymadığını test edersiniz.

Örnek akış:

GET /users/123
→ response.organizationId = "org_456"

GET /organizations/org_456
→ organization schema doğrulanır
Enter fullscreen mode Exit fullscreen mode

Bu model özellikle mikro servislerde, public API’lerde ve üçüncü taraf entegrasyonlarında faydalıdır.

Captcha ve hız sınırı yönetimi

Maigret, captcha ve hız limitiyle karşılaştığında bunları yanıt şekline göre algılamaya çalışır. Kullandığı savunmacı stratejiler şunlardır:

  • User-Agent değiştirme
  • Site başına tekrar deneme davranışına uyma
  • Mobil veya basitleştirilmiş alan adına dönme
  • Site izin verdiğinde Tor veya I2P yönlendirmesi

README, bunun sınırlı olduğunu açıkça belirtir. Site agresif otomasyon karşıtı önlemler kullanıyorsa Maigret bunu not eder ve sonucu manuel incelemeye bırakır.

API istemcileri için çıkarım:

  • 429 Too Many Requests yanıtını özel olarak ele alın.
  • Retry-After header’ına uyun.
  • Testleri kaba kuvvet gibi çalıştırmayın.
  • CI testlerini oran limitlerini dikkate alacak şekilde planlayın.

Örnek geri çekilme mantığı:

if (response.status === 429) {
  const retryAfter = response.headers.get("Retry-After");
  console.log(`Rate limit. Retry after: ${retryAfter} seconds`);
}
Enter fullscreen mode Exit fullscreen mode

Amaç, sistemi zorlamak değil; güvenilir ve izin verilen sınırlar içinde test etmektir.

İmza kayması sorunu

3.000’den fazla siteyi destekleyen bir aracın asıl problemi ilk taramayı yapmak değil, güncel kalmaktır.

Siteler şunları değiştirebilir:

  • Profil URL kalıpları
  • HTML yapısı
  • Hata mesajları
  • Captcha davranışı
  • Marka veya alan adı
  • Sayfa yönlendirmeleri

Eski imza iki risk üretir:

  • Yanlış negatif: Var olan hesap bulunamaz.
  • Yanlış pozitif: Var olmayan hesap bulundu sanılır.

Maigret bunu birkaç katmanla yönetir:

  • Merkezi GitHub deposundan otomatik güncelleme
  • Topluluk pull request’leri
  • --update bayrağı
  • Bilinen kullanıcı adlarıyla imza doğrulama

Özellikle son madde API testleri için çok önemlidir. Her site için bilinen, çalışan bir örnek kullanıcı adı tutulur. Test mekanizması bu kullanıcıyı sorgular ve imzanın hâlâ geçerli olup olmadığını kontrol eder.

API tarafındaki karşılığı:

  1. Her kritik uç nokta için bilinen iyi bir fixture kaydedin.
  2. Bu fixture’ı düzenli olarak canlı endpoint’e karşı yeniden oynatın.
  3. Yanıtı önceki sözleşmeyle karşılaştırın.
  4. Alan değişikliği, eksik header veya hata zarfı sapması varsa uyarı üretin.

Apidog’da bu modeli uç nokta testleri, koleksiyon çalıştırmaları ve raporlar üzerinden kurabilirsiniz. Daha somut bir örnek için DeepSeek V4 API rehberi benzer bir manuel doğrulama akışını gösterir.

İsteğe bağlı yapay zeka özet modu

Maigret’in --ai bayrağı, ham bulguları OpenAI uyumlu bir LLM uç noktasıyla kısa bir rapora dönüştürür. API anahtarını kullanıcı sağlar; Maigret istemi ve çağrıyı yapılandırır.

Önemli mimari karar şudur:

LLM karar verici değildir; son işlemcidir.

Yani model:

  • Kullanıcı adı eşleşti mi, buna karar vermez.
  • Site var mı, bunu tahmin etmez.
  • Deterministik kuralların ürettiği sonucu özetler.

API izleme için de aynı yaklaşım daha güvenlidir:

  1. Geçti/kaldı kararını deterministik testler verir.
  2. JSON schema, durum kodu, header ve gövde kontrolleri çalışır.
  3. LLM yalnızca raporu insanlar için okunabilir hale getirir.

Örnek çıktı:

Son çalıştırmada 3 endpoint başarısız oldu:
- GET /users/{id}: email alanı eksik
- POST /orders: 500 döndü
- GET /billing/profile: response time eşiği aşıldı
Enter fullscreen mode Exit fullscreen mode

Bu yaklaşım, bilgisayar kullanımı ve yapılandırılmış API’ler yazısında anlattığımız “önce yapılandırılmış katman” ilkesine uyar.

Meşru kullanım durumları

Maigret’in uygun şekilde kullanılabileceği bağlamlar şunlardır.

Kendi hesaplarınızı bulma

Eski kullanıcı adlarınızla hangi sitelerde hesap açtığınızı bulabilirsiniz. Bu, gizlilik denetimi veya dijital ayak izi temizliği için faydalıdır.

maigret eski_kullanici_adim
Enter fullscreen mode Exit fullscreen mode

Marka suiistimali izleme

Şirketler marka, ürün adı veya alan adı varyasyonlarını kontrol ederek taklit hesapları tespit edebilir.

maigret yourbrandname --tags social
Enter fullscreen mode Exit fullscreen mode

Kayıp kişi gönüllülük çalışması

Aile rızası ve ilgili kurumlarla koordinasyon varsa dijital izleri takip etmek için kullanılabilir. Bu tür çalışmalarda bağımsız hareket etmek soruşturmalara zarar verebilir.

Yetkili kırmızı ekip görevleri

Yazılı kapsam dahilinde, bir kuruluşun herkese açık saldırı yüzeyini haritalamak için kullanılabilir. Burada yetkiyi araç değil, sözleşme belirler.

Araştırmacı gazetecilik

Dolandırıcılık, organize suç veya kamu yararı taşıyan konular üzerinde çalışan gazeteciler, editoryal ve hukuki inceleme altında OSINT araçları kullanabilir.

Uygun olmayan kullanım örnekleri:

  • Merak nedeniyle yabancı bir kişiyi aramak
  • Eski partneri izlemek
  • Rızasız kişiler hakkında veri seti oluşturmak
  • Taciz veya takip amacıyla kullanmak

Maigret’ten API testine aktarılabilecek modeller

Aşağıdaki beş fikir doğrudan API test mimarisine uygulanabilir.

1. El yazısı kontroller yerine imza veritabanları

Her endpoint için beklenen davranışı veri olarak tanımlayın.

{
  "name": "Get user profile",
  "method": "GET",
  "path": "/users/{id}",
  "expected": {
    "status": 200,
    "requiredJsonPaths": ["$.id", "$.email", "$.createdAt"],
    "forbiddenJsonPaths": ["$.password"]
  }
}
Enter fullscreen mode Exit fullscreen mode

Böylece yeni endpoint eklemek için test runner’ı değiştirmezsiniz; yeni imza eklersiniz.

2. Çok sinyalli iddialar kullanın

Sadece durum kodu değil, gövde, header ve hata formatı da doğrulanmalı.

pm.test("başarılı yanıt sözleşmeye uymalı", function () {
  const json = pm.response.json();

  pm.response.to.have.status(200);
  pm.expect(pm.response.headers.get("content-type")).to.include("application/json");

  pm.expect(json.id).to.be.a("string");
  pm.expect(json.email).to.include("@");
  pm.expect(json).to.not.have.property("password");
});
Enter fullscreen mode Exit fullscreen mode

3. İmzaları merkezi olarak güncelleyin

Test tanımlarını tek bir yerde sürümleyin. Ekipler aynı güncel sözleşmeyi kullansın.

Apidog projelerinde bulut senkronizasyonu bu iş akışını destekler. Daha ayrıntılı akış için Postman Olmadan API Testi yazısına bakabilirsiniz.

4. Sapma tespiti planlayın

Bilinen iyi yanıtları saklayın ve düzenli olarak yeniden oynatın.

Kontrol edilecek tipik sapmalar:

  • Alan adı değişti
  • Alan tipi değişti
  • Header eksildi
  • Hata formatı değişti
  • Yanıt süresi eşiği aşıldı
  • Yetkilendirme davranışı değişti

5. LLM’yi yargıç değil, raporlayıcı yapın

LLM’ye “bu test geçti mi?” diye sormayın. Test sonucunu deterministik kurallar versin. LLM yalnızca rapor metnini özetlesin.

Maigret çalıştırırken sık yapılan hatalar

-a olmadan tam kapsam varsaymak

Varsayılan çalışma tüm 3.000+ siteyi taramayabilir. Uzun kuyruk gerekiyorsa:

maigret username -a
Enter fullscreen mode Exit fullscreen mode

Daha uzun süreceğini ve daha fazla rate limit ile karşılaşabileceğinizi unutmayın.

Etiketleri kullanmamak

Kategori veya ülkeye göre filtreleme yapabilirsiniz:

maigret username --tags social
maigret username --tags jp
Enter fullscreen mode Exit fullscreen mode

Belirli bölgelere veya platform türlerine odaklanmak yanlış negatifleri azaltabilir.

Eski imza veritabanıyla çalışmak

Ciddi bir araştırmadan önce güncelleme çalıştırın:

maigret --update
Enter fullscreen mode Exit fullscreen mode

Eski imzalar hem yanlış pozitif hem yanlış negatif üretebilir.

Tor engelini kullanıcı sinyali sanmak

Bazı siteler Tor çıkış düğümlerini engeller. Bu, kullanıcı hakkında değil, sitenin trafik politikası hakkında sinyaldir.

Çıkarılan alanları doğrulamadan kanıt saymak

Maigret sayfada görünen veriyi çıkarır. Profil sayfaları sahte veya manipüle edilmiş olabilir. Bulgular ipucudur; tek başına kanıt değildir.

Gerçek dünya kullanım örnekleri

Bir güvenlik danışmanlığı, kırmızı ekip kapsam belirleme sürecinin başında Maigret kullanır. Amaç, müşteriyle birlikte göreve başlamadan önce herkese açık saldırı yüzeyini görmektir.

Bir dolandırıcılık araştırmacısı, teknik olmayan müşteriler için Maigret’in --ai moduyla ham bulguları kısa bir özet haline getirir. Arama deterministiktir; LLM sadece okunabilirlik katmanıdır.

Bir mühendislik ekibi, 200 mikro servislik dahili API test paketinde aynı kalıpları uygular: imza veritabanı, sapma tespiti ve planlı yeniden oynatma. Bu modeli Apidog üzerinde kurarak endpoint sözleşmelerini güncel tutar.

Sonuç

Maigret’in değeri yalnızca OSINT aracı olmasında değil, değişken dış sistemlere karşı dayanıklı bir tespit mimarisi göstermesindedir.

API testleri için çıkarımlar:

  • Uç nokta davranışlarını imza gibi tanımlayın.
  • Sadece status code değil, çoklu sinyal doğrulayın.
  • Bilinen iyi fixture’ları düzenli olarak yeniden oynatın.
  • Sapmaları erken yakalayın.
  • LLM’yi karar mekanizması değil, raporlama katmanı olarak kullanın.

Bir sonraki pratik adım:

  1. Maigret’in site veritabanı formatını inceleyin.
  2. Apidog’da bir endpoint seçin.
  3. O endpoint için durum kodu, gövde, header ve yasak alan iddiaları ekleyin.
  4. Bilinen iyi bir yanıtı fixture olarak saklayın.
  5. Düzenli çalıştırma ve sapma uyarısı kurun.

Bir sağlayıcı sabaha karşı bir alan adını değiştirdiğinde ve test paketiniz bunu kullanıcılarınızdan önce yakaladığında, bu disiplin karşılığını verir.

SSS

Maigret’i kullanmak yasal mı?

Yargı alanına ve hedefe bağlıdır. Kendi hesaplarınız, sahip olduğunuz varlıklar, yazılı yetkiyle test ettiğiniz şirketler veya yetkili gazetecilik bağlamları genellikle daha net sınırlar içindedir. Rızası olmayan bireyler üzerinde kullanmak taciz veya takip yasalarını ihlal edebilir. Üçüncü tarafları hedeflemeden önce yerel kuralları kontrol edin.

Maigret Python olmadan çalışır mı?

Resmi paket Python 3.10+ gerektirir. Ayrıca sıradan aramalar için Telegram botu ve yerel kurulum istemeyen kullanıcılar için Bulut Kabuğu seçeneği bulunur.

3.000 site iddiası ne kadar doğru?

Depodaki site veritabanı 3.000’den fazla giriş içerir. Ancak tüm siteler her an aktif veya çalışır durumda olmayabilir. Otomatik güncelleme ve etiket filtreleme, daha doğru kapsam elde etmenize yardımcı olur.

Yapay zeka modu ne ekler?

--ai bayrağı, deterministik bulguları OpenAI uyumlu bir LLM ile okunabilir rapora dönüştürür. Arama kararlarını değiştirmez; yalnızca son işlem yapar. Kendi API anahtarınızı sağlamanız gerekir.

Maigret’i CI’da kullanabilir miyim?

OSINT araştırmaları için genellikle uygun değildir; bu çalışmalar bağlam ve insan incelemesi gerektirir. Ancak Maigret’in mimari modelleri — imza veritabanı, sapma tespiti, planlı yeniden oynatma — API testleri için CI pipeline’larında uygulanabilir. Apidog bu tür akışları destekler.

Sherlock’tan farkı nedir?

Sherlock daha eski ve daha basit bir atadır. Maigret; bilgi çıkarma, özyinelemeli arama, captcha işleme, yapay zeka özet modu ve daha zengin site veritabanı ile bu modeli genişletir. İkisi de MIT lisanslıdır.

Eski bir imzayı nereye bildirmeliyim?

Maigret README’si GitHub issue ve pull request akışını işaret eder. Eski veya kırılmış site imzaları için depoya issue açabilir ya da düzeltme içeren pull request gönderebilirsiniz.

Top comments (0)