3 puan yazan kingtw 4 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş

Kullanıcının gerçek tarayıcı oturumu ile veri toplarken, neyin nasıl toplanacağını sunucunun çalışma anında dinamik olarak yayımladığı self-hosted bir toplama sistemidir. Sunucunun istemciyi (tarayıcıyı) uzaktan kontrol ettiği Komut-Yürüt-Raporla (Command-Execute-Report) deseni.

Yeni bir crawler her yazıldığında yaşanan üç sorunu — hedef backend yükü/engelleme, giriş duvarı ve toplama mantığı her değiştiğinde istemcinin yeniden dağıtılması — tasarımla çözüyor.

  • Zero-Footprint: Hedef sunucuya doğrudan istek göndermek yerine zaten giriş yapmış kullanıcı tarayıcısı veri toplar → giriş duvarının iç kısmına da insanla aynı şekilde erişir, backend yükü ve engellemelerden kaçınır.
  • Sunucu tarafında dinamik kontrol: Bookmarklet bir kez kaydedildikten sonra kalıcı ve değişmez. Toplama kuralları (selector·action·extract) sunucu tarafından türlenmiş komutlar olarak yayımlanır → mantık değiştiğinde istemciyi yeniden dağıtma ihtiyacı 0. Tek bir Pydantic kaynağından TS tipleri otomatik üretilir.
  • Tıklayarak tarif oluşturma: WebUI'de öğeye tıklanınca selector otomatik oluşturulur, action dizileri (click·drag·scroll·swipe) → extract tarifi olarak kaydedilir. script eval yasaklıdır (allowlist).
  • Kayıpsız yükleme: write-ahead (senkron commit sonrası 202) + idempotency + yeniden başlatmada otomatik kurtarma.
  • MCP ajan kontrolü: Canlı pipe, MCP aracı olarak açığa çıkarılır (host allowlist·rate-limit·op TTL guard). Ancak bot kaçırma ve büyük ölçekli scraping hedeflenmiyor.
  • Varsayılan olarak güvenli: Yönetici kimlik doğrulaması varsayılan olarak AÇIK (Jupyter benzeri otomatik token), sunucu yanıtı eval(script)·harici beacon(beacon) yürütme sınırları, fingerprinting kullanılmıyor.
  • Maliyetsiz ve taşınabilir: SQLite + bellek içi kuyruk + tek FastAPI. Harici ücretli servis 0. uv ile işletim sisteminden bağımsız yeniden üretilebilir. MIT.

Herkese açık sitelerden veri toplamada, tarayıcının Private Network Access kısıtları nedeniyle herkese açık bir URL gerekir; bunu aşmak için ENABLE_TUNNEL=1 ile geçici bir cloudflared tüneli açılır (gerçek ölçüm: gerçek haber sitelerinde toplama başarılı).

Henüz yorum yok.

Henüz yorum yok.