feat: birden fazla YouTube hesabı arasında cookie'yi dağıt (Faz 6)

Proxy IP'lerini havuza dağıttığımız aynı sorun cookie/hesap seviyesinde de
vardı: tek bir Google hesabı 7-8 kanalı taramaya çalışınca YouTube hesabın
kendisini şüpheli bulup çoğu/tüm kanalda "Sign in to confirm you're not a
bot" veriyordu — proxy IP'den bağımsız bir sinyal, IP dağıtımı bunu
çözemez.

Yeni CookieProfile tablosu: her kanal, DB id'sinden aynı deterministik hash
ile (proxyUrlForChannel'daki gibi) havuzdaki hesaplardan birine sabitlenir.
Her profil kendi ayrı geçici dosyasına yazılıyor (/tmp/yt-cookies-<id>.txt)
— tek paylaşılan dosya, farklı profil kullanan kanallar eşzamanlı
çalışınca birbirinin cookie'sini ezerdi. Hiç profil eklenmemişse eski tekli
ytdlp_cookies ayarına geri düşüyor (geriye dönük uyumlu, hemen kırılmaz).

Ayarlar sayfasında yeni "Cookie Hesapları" kartı: hesap ekle/sil/yenile,
her biri için ayrı bayatlık rozeti. Eski tekli cookie kartı "tekli/eski"
etiketiyle fallback olarak duruyor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 01:20:36 +03:00
co-authored by Claude Sonnet 5
parent eb2a9d28ed
commit ccd922ba37
5 changed files with 215 additions and 26 deletions
+15
View File
@@ -101,6 +101,21 @@ model ShortVideo {
@@map("short_videos")
}
// Birden fazla YouTube hesabının cookie'si — her kanal (channel.id'den
// deterministik bir hash ile) bu havuzdaki bir profile sabitlenir, tek bir
// hesabın çok fazla kanalı taramasından kaynaklanan hesap-seviyesi
// bot-tespitini havuza yayarak azaltır (bkz. proxyUrlForChannel ile aynı
// mantık, ytdlpCookies.ts).
model CookieProfile {
id String @id @default(cuid())
label String
value String
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("cookie_profiles")
}
model AppSetting {
key String @id
value String