• 19-03-2026, 21:17:29
    #1
    Yapay zekaya bir domain arama motoru yaptırdım. İşine yarayan olursa kullansın tepe tepe. Şu da olsa güzel olur diyenlerin de fikirlerine açığım. Güzel birşey çıkaralım, kendi arama motorumuzu kullanalım.

    Revizyon 1: Varyasyon sayısını arttırdım türetme kısmı için. Ayrıca dolu olanlar için kaç gün sonra düşeceği bilgisini ekledim.





    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>DomGen Elite | Geri Sayım & Gelişmiş Türetme</title>
        <script src="https://cdn.tailwindcss.com"></script>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
        <style>
            @import url('https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600;700&display=swap');
            body { font-family: 'Sora', sans-serif; background: #0b0f1a; color: #f1f5f9; }
            .glass { background: rgba(22, 30, 46, 0.8); backdrop-filter: blur(12px); border: 1px solid rgba(255,255,255,0.05); }
            .spinner { border: 2px solid rgba(255,255,255,0.1); border-top: 2px solid #3b82f6; border-radius: 50%; width: 14px; height: 14px; animation: spin 0.8s linear infinite; }
            @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
            .star-active { color: #fbbf24 !important; }
            .expiring-badge { background: rgba(239, 68, 68, 0.1); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.2); }
        </style>
    </head>
    <body class="min-h-screen pb-20">
    
        <div class="max-w-7xl mx-auto px-4 pt-10">
            <header class="flex flex-col md:flex-row justify-between items-center mb-10 gap-4">
                <div>
                    <h1 class="text-4xl font-black text-white tracking-tighter">DOMGEN <span class="text-blue-500 text-2xl">ULTRA</span></h1>
                    <p id="statusInfo" class="text-[10px] font-bold text-slate-500 uppercase tracking-widest">Gelişmiş Takip Sistemi Aktif</p>
                </div>
                <button onclick="toggleFavPanel()" class="px-5 py-2.5 bg-slate-800 hover:bg-slate-700 rounded-xl text-sm font-bold flex items-center gap-2 transition shadow-xl">
                    <i class="fas fa-star text-amber-400"></i> Favoriler (<span id="favCount">0</span>)
                </button>
            </header>
    
            <div class="grid grid-cols-1 lg:grid-cols-12 gap-8">
                <div class="lg:col-span-4 space-y-6">
                    <div class="glass p-6 rounded-[2rem] shadow-2xl">
                        <label class="block text-[11px] font-black text-slate-500 mb-3 uppercase tracking-widest">Domain Listesi</label>
                        <textarea id="bulkInput" rows="6" placeholder="Her satıra bir kelime..."
                            class="w-full bg-slate-900 border border-slate-700/50 rounded-2xl p-4 text-sm focus:border-blue-500 outline-none transition-all resize-none mb-6"></textarea>
                        
                        <div class="flex items-center justify-between mb-6 p-4 bg-white/5 rounded-2xl">
                            <div class="flex flex-col">
                                <span class="text-xs font-bold">Turbo Türetme</span>
                                <span class="text-[9px] text-slate-500">50+ Farklı Kombinasyon</span>
                            </div>
                            <input type="checkbox" id="generateSwitch" checked class="w-5 h-5 accent-blue-600">
                        </div>
    
                        <button onclick="startAdvancedScan()" id="scanBtn" class="w-full py-4 bg-blue-600 hover:bg-blue-500 text-white rounded-2xl font-black shadow-lg transition-all flex items-center justify-center gap-2">
                            <i class="fas fa-bolt"></i> ANALİZİ BAŞLAT
                        </button>
                    </div>
                </div>
    
                <div class="lg:col-span-8">
                    <div id="resultsGrid" class="grid grid-cols-1 md:grid-cols-2 gap-4"></div>
                </div>
            </div>
        </div>
    
        <div id="favPanel" class="fixed inset-0 bg-black/90 backdrop-blur-xl z-50 hidden flex justify-end">
            <div class="w-full max-w-md bg-slate-900 h-full p-8 overflow-y-auto border-l border-white/10">
                <div class="flex justify-between items-center mb-8 border-b border-white/5 pb-4">
                    <h2 class="text-2xl font-bold">Yıldızlılar</h2>
                    <button onclick="toggleFavPanel()" class="text-slate-400 hover:text-white"><i class="fas fa-times fa-lg"></i></button>
                </div>
                <div id="favList" class="space-y-4"></div>
            </div>
        </div>
    
        <script>
            const trMap = {'ç':'c','ğ':'g','ı':'i','ö':'o','ş':'s','ü':'u'};
            const delay = ms => new Promise(res => setTimeout(res, ms));
            let favorites = JSON.parse(localStorage.getItem('domgen_ultra_favs')) || [];
    
            // Gelişmiş Varyasyon Kütüphanesi
            const variations = {
                pre: ['get', 'the', 'my', 'go', 'try', 'smart', 'pure', 'net', 'app', 'hub', 'all', 'hey', 'pro', 'eco', 'fast', 'top', 'easy', 'vibe', 'neo', 'cloud'],
                suf: ['ly', 'ify', 'hub', 'lab', 'io', 'base', 'zone', 'plus', 'expert', 'world', 'box', 'tech', 'online', 'space', 'site', 'center', 'flow', 'wave', 'kit', 'spot'],
                tr_suf: ['sepeti', 'pazari', 'dukkani', 'rehberi', 'burada', 'evi', 'diyari', 'merkezi', 'ofisi', 'hatti', 'vadisi', 'meydani']
            };
    
            function slug(t) { return t.toLowerCase().trim().replace(/[çğıöşü]/g, m => trMap[m]).replace(/[^a-z0-9]/g, ''); }
    
            function calculateDaysLeft(expiryDate) {
                const now = new Date();
                const exp = new Date(expiryDate);
                const diff = exp - now;
                return Math.ceil(diff / (1000 * 60 * 60 * 24));
            }
    
            async function startAdvancedScan() {
                const grid = document.getElementById('resultsGrid');
                const input = document.getElementById('bulkInput').value;
                const isGen = document.getElementById('generateSwitch').checked;
                const status = document.getElementById('statusInfo');
                const btn = document.getElementById('scanBtn');
    
                let words = input.split(/[\n,]+/).map(w => slug(w)).filter(w => w.length > 0);
                if(words.length === 0) return alert("Kelime girin!");
    
                grid.innerHTML = '';
                btn.disabled = true;
    
                let queue = [];
                words.forEach(w => {
                    queue.push(`${w}.com`);
                    if(isGen) {
                        variations.pre.forEach(p => queue.push(`${p}${w}.com`));
                        variations.suf.forEach(s => queue.push(`${w}${s}.com`));
                        variations.tr_suf.forEach(ts => queue.push(`${w}${ts}.com`));
                    }
                });
    
                // Tekrarları temizle
                queue = [...new Set(queue)];
    
                for(let i = 0; i < queue.length; i++) {
                    status.innerText = `Kalan: ${queue.length - i} | Sorgu: ${queue[i]}`;
                    await performCheck(queue[i]);
                    await delay(1200); // Rate limit koruması
                }
    
                btn.disabled = false;
                status.innerText = "Analiz Tamamlandı";
            }
    
            async function performCheck(domain) {
                const grid = document.getElementById('resultsGrid');
                const card = document.createElement('div');
                card.className = "glass p-5 rounded-2xl flex flex-col gap-3 animate-in fade-in duration-300 border border-transparent hover:border-white/10 transition-all";
                card.innerHTML = `<div class="flex justify-between font-bold text-sm"><span>${domain}</span><div class="spinner"></div></div>`;
                grid.prepend(card);
    
                try {
                    const res = await fetch(`https://rdap.org/domain/${domain}`);
                    
                    if(res.status === 404) {
                        // BOŞTA
                        const isFav = favorites.includes(domain);
                        card.classList.add('border-l-4', 'border-l-green-500');
                        card.innerHTML = `
                            <div class="flex justify-between items-center">
                                <div class="flex items-center gap-3">
                                    <button onclick="toggleFav('${domain}', this)" class="text-white hover:text-amber-400 transition ${isFav ? 'star-active' : ''}">
                                        <i class="fas fa-star fa-lg"></i>
                                    </button>
                                    <span class="font-bold text-white text-sm">${domain}</span>
                                </div>
                                <span class="bg-green-500 text-[8px] px-2 py-1 rounded font-black text-white uppercase">Boşta</span>
                            </div>
                            <a href="https://www.google.com/search?q=buy+${domain}" target="_blank" class="text-center py-2 bg-blue-600 rounded-lg text-[10px] font-bold hover:bg-blue-500">SATIN AL</a>
                        `;
                    } else {
                        // DOLU
                        const data = await res.json();
                        const expEvent = data.events?.find(e => e.eventAction === 'expiration');
                        let countdownHTML = '';
    
                        if(expEvent) {
                            const days = calculateDaysLeft(expEvent.eventDate);
                            countdownHTML = days > 0
                                ? `<div class="mt-2 text-[10px] font-bold expiring-badge px-2 py-1 rounded flex items-center gap-1"><i class="fas fa-hourglass-half"></i> Düşmesine ${days} gün kaldı</div>`
                                : `<div class="mt-2 text-[10px] font-bold bg-slate-800 text-slate-400 px-2 py-1 rounded">Süresi dolmuş/İşleniyor</div>`;
                        }
    
                        card.style.opacity = "0.5";
                        card.innerHTML = `
                            <div class="flex justify-between items-center">
                                <span class="text-sm font-medium text-slate-400">${domain}</span>
                                <span class="text-red-500 text-[8px] font-bold uppercase">Dolu</span>
                            </div>
                            ${countdownHTML}
                        `;
                    }
                } catch {
                    card.innerHTML = `<span class="text-[10px] text-slate-500">${domain} (Limit/Hata)</span>`;
                }
            }
    
            // Favori Fonksiyonları
            function toggleFav(domain, btn) {
                if(favorites.includes(domain)) {
                    favorites = favorites.filter(d => d !== domain);
                    btn.classList.remove('star-active');
                } else {
                    favorites.push(domain);
                    btn.classList.add('star-active');
                }
                updateFavUI();
            }
    
            function updateFavUI() {
                const list = document.getElementById('favList');
                document.getElementById('favCount').innerText = favorites.length;
                list.innerHTML = '';
                favorites.forEach(d => {
                    const item = document.createElement('div');
                    item.className = "glass p-4 rounded-xl flex justify-between items-center";
                    item.innerHTML = `
                        <span class="font-bold text-xs text-blue-300">${d}</span>
                        <button onclick="toggleFav('${d}')" class="text-red-400 hover:text-red-500"><i class="fas fa-times"></i></button>
                    `;
                    list.appendChild(item);
                });
                localStorage.setItem('domgen_ultra_favs', JSON.stringify(favorites));
            }
    
            function toggleFavPanel() { document.getElementById('favPanel').classList.toggle('hidden'); }
            updateFavUI();
        </script>
    </body>
    </html>
  • 21-03-2026, 16:45:27
    #2
    Düşmesine kalan günü nereden çekiyor yani doğru mu verdiği gün sayısı