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:
@@ -214,3 +214,30 @@ export async function updateYtdlpCookies(formData: FormData) {
|
||||
|
||||
revalidatePath("/settings");
|
||||
}
|
||||
|
||||
export async function addCookieProfile(formData: FormData) {
|
||||
const label = String(formData.get("label") ?? "").trim();
|
||||
const value = String(formData.get("value") ?? "").trim();
|
||||
|
||||
if (!label || !value) {
|
||||
throw new Error("Hesap adı ve cookie içeriği zorunlu.");
|
||||
}
|
||||
|
||||
await prisma.cookieProfile.create({ data: { label, value } });
|
||||
revalidatePath("/settings");
|
||||
}
|
||||
|
||||
export async function updateCookieProfile(profileId: string, formData: FormData) {
|
||||
const value = String(formData.get("value") ?? "").trim();
|
||||
if (!value) {
|
||||
throw new Error("Cookie içeriği boş olamaz.");
|
||||
}
|
||||
|
||||
await prisma.cookieProfile.update({ where: { id: profileId }, data: { value } });
|
||||
revalidatePath("/settings");
|
||||
}
|
||||
|
||||
export async function deleteCookieProfile(profileId: string) {
|
||||
await prisma.cookieProfile.delete({ where: { id: profileId } });
|
||||
revalidatePath("/settings");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user