JustPaste.it

proxy generator open src @kimselertanimaz

import tkinter as tk
from tkinter import ttk, messagebox, filedialog
import random
import threading
from datetime import datetime
import csv
class ProxyGeneratorApp:
    def __init__(self, root):
        self.root = root
        self.root.title('🌐 Proxy Generator - youmean25 | Light/Dark Mode')
        self.root.geometry('1100x800')
        self.generated_proxies = []
        self.dark_mode = False
        self.colors = {'light': {'bg': '#f0f4ff', 'header_bg': '#0066ff', 'header_fg': 'white', 'text': '#000000', 'primary': '#0066ff', 'secondary': '#e6f2ff', 'accent': '#0099ff'}, 'dark': {'bg': '#1a1a2e', 'header_bg': '#16213e', 'header_fg': '#e0e0ff', 'text': '#ffffff', 'primary': '#7c3aed', 'secondary': '#2d1b4e', 'accent': '#c77dff'}}
        self.show_welcome_screen()
    def get_colors(self):
        return self.colors['dark' if self.dark_mode else 'light']
    def clear_screen(self):
        for w in list(self.root.winfo_children()):
            w.destroy()
    def show_welcome_screen(self):
        """Hoşgeldiniz Ekranı"""
        self.clear_screen()
        colors = self.get_colors()
        self.root.configure(bg=colors['bg'])
        main = tk.Frame(self.root, bg=colors['bg'])
        main.pack(fill=tk.BOTH, expand=True)
        theme_btn_frame = tk.Frame(self.root, bg=colors['bg'])
        theme_btn_frame.pack(fill=tk.X, padx=20, pady=10)
        theme_text = '🌙 Dark Mode' if not self.dark_mode else '☀️ Light Mode'
        tk.Button(theme_btn_frame, text=theme_text, command=self.toggle_theme, bg=colors['primary'], fg=colors['header_fg'], font=('Arial', 10, 'bold'), padx=20, pady=8, cursor='hand2', bd=0).pack(side=tk.RIGHT)
        tk.Frame(main, bg=colors['bg'], height=30).pack()
        tk.Label(main, text='👋', bg=colors['bg'], font=('Arial', 100)).pack()
        tk.Label(main, text='Hoşgeldiniz youmean25!', bg=colors['bg'], fg=colors['primary'], font=('Arial', 32, 'bold')).pack(pady=20)
        tk.Label(main, text='🌐 Proxy Generator v1.0\n📊 4 Proxy Türü Desteği', bg=colors['bg'], fg=colors['accent'], font=('Arial', 14)).pack()
        tk.Label(main, text='HTTP • HTTPS • SOCKS4 • SOCKS5\n\nMüthiş bir proxy generator deneyimi için hazır mısın?', bg=colors['bg'], fg=colors['text'], font=('Arial', 12), justify=tk.CENTER).pack(pady=40)
        btn = tk.Button(main, text='🚀 BAŞLAYALIM!', command=self.show_generator_screen, bg=colors['primary'], fg=colors['header_fg'], font=('Arial', 16, 'bold'), padx=50, pady=20, cursor='hand2', activebackground=colors['accent'], bd=0)
        btn.pack(pady=50)
        tk.Label(self.root, text='💙 youmean25 için özel olarak yapıldı | Light/Dark Mode', bg=colors['bg'], fg=colors['accent'], font=('Arial', 10)).pack(side=tk.BOTTOM, pady=20)
    def show_generator_screen(self):
        """Ana Ekran"""
        self.clear_screen()
        colors = self.get_colors()
        self.root.configure(bg=colors['bg'])
        header = tk.Frame(self.root, bg=colors['header_bg'])
        header.pack(fill=tk.X)
        header_inner = tk.Frame(header, bg=colors['header_bg'])
        header_inner.pack(fill=tk.X, padx=20, pady=10)
        tk.Label(header_inner, text='🌐 Proxy Generator | 👀 youmean25', bg=colors['header_bg'], fg=colors['header_fg'], font=('Arial', 14, 'bold')).pack(side=tk.LEFT)
        theme_text = '🌙 Dark' if not self.dark_mode else '☀️ Light'
        tk.Button(header_inner, text=theme_text, command=self.toggle_theme, bg=colors['primary'], fg=colors['header_fg'], font=('Arial', 10, 'bold'), padx=15, pady=5, cursor='hand2', bd=0).pack(side=tk.RIGHT)
        stats = tk.Frame(self.root, bg=colors['secondary'])
        stats.pack(fill=tk.X, padx=10, pady=10)
        tk.Label(stats, text='📊 İSTATİSTİKLER', bg=colors['secondary'], fg=colors['primary'], font=('Arial', 11, 'bold')).pack(anchor=tk.W, padx=10, pady=5)
        stat_row = tk.Frame(stats, bg=colors['secondary'])
        stat_row.pack(fill=tk.X, padx=15, pady=10)
        self.label_total = tk.Label(stat_row, text='📋 Toplam: 0', bg=colors['secondary'], fg=colors['primary'], font=('Arial', 10, 'bold'))
        self.label_total.pack(side=tk.LEFT, padx=15)
        self.label_http = tk.Label(stat_row, text='🔵 HTTP: 0', bg=colors['secondary'], fg='#0099ff', font=('Arial', 10, 'bold'))
        self.label_http.pack(side=tk.LEFT, padx=15)
        self.label_https = tk.Label(stat_row, text='🟢 HTTPS: 0', bg=colors['secondary'], fg='#00aa00', font=('Arial', 10, 'bold'))
        self.label_https.pack(side=tk.LEFT, padx=15)
        self.label_socks4 = tk.Label(stat_row, text='🟡 SOCKS4: 0', bg=colors['secondary'], fg='#ffaa00', font=('Arial', 10, 'bold'))
        self.label_socks4.pack(side=tk.LEFT, padx=15)
        self.label_socks5 = tk.Label(stat_row, text='🟣 SOCKS5: 0', bg=colors['secondary'], fg='#aa00ff', font=('Arial', 10, 'bold'))
        self.label_socks5.pack(side=tk.LEFT, padx=15)
        settings = tk.Frame(self.root, bg=colors['bg'])
        settings.pack(fill=tk.X, padx=10, pady=10)
        tk.Label(settings, text='⚙️ AYARLAR', bg=colors['bg'], fg=colors['primary'], font=('Arial', 11, 'bold')).pack(anchor=tk.W, padx=5, pady=5)
        type_box = tk.Frame(settings, bg=colors['secondary'], relief=tk.RIDGE, bd=2)
        type_box.pack(fill=tk.X, padx=10, pady=10)
        tk.Label(type_box, text='🔧 PROXY TİPİ SEÇ (Tıklayarak seç):', bg=colors['secondary'], fg=colors['primary'], font=('Arial', 11, 'bold')).pack(anchor=tk.W, padx=15, pady=10)
        cb_row = tk.Frame(type_box, bg=colors['secondary'])
        cb_row.pack(fill=tk.X, padx=30, pady=10)
        self.proxy_type_vars = {}
        cb_colors = {'HTTP': '#0099ff', 'HTTPS': '#00aa00', 'SOCKS4': '#ffaa00', 'SOCKS5': '#aa00ff'}
        for ptype, color in cb_colors.items():
            var = tk.BooleanVar(value=True)
            self.proxy_type_vars[ptype] = var
            tk.Checkbutton(cb_row, text=f'{ptype} ✓', variable=var, bg=colors['secondary'], fg=color, selectcolor=colors['bg'], activebackground=colors['secondary'], font=('Arial', 12, 'bold'), cursor='hand2').pack(side=tk.LEFT, padx=20)
        num_box = tk.Frame(settings, bg=colors['secondary'], relief=tk.RIDGE, bd=2)
        num_box.pack(fill=tk.X, padx=10, pady=10)
        tk.Label(num_box, text='📝 PROXY SAYISI VE PORT AYARLARI:', bg=colors['secondary'], fg=colors['primary'], font=('Arial', 11, 'bold')).pack(anchor=tk.W, padx=15, pady=10)
        num_row = tk.Frame(num_box, bg=colors['secondary'])
        num_row.pack(fill=tk.X, padx=30, pady=10)
        tk.Label(num_row, text='📝 Kaç Proxy?', bg=colors['secondary'], fg=colors['text'], font=('Arial', 10, 'bold')).pack(side=tk.LEFT, padx=10)
        self.count_var = tk.StringVar(value='100')
        ttk.Spinbox(num_row, from_=1, to=10000, textvariable=self.count_var, width=10, font=('Arial', 10)).pack(side=tk.LEFT, padx=5)
        tk.Label(num_row, text='📍 Port Min:', bg=colors['secondary'], fg=colors['text'], font=('Arial', 10, 'bold')).pack(side=tk.LEFT, padx=10)
        self.port_min_var = tk.StringVar(value='80')
        ttk.Spinbox(num_row, from_=1, to=65535, textvariable=self.port_min_var, width=10, font=('Arial', 10)).pack(side=tk.LEFT, padx=5)
        tk.Label(num_row, text='Max:', bg=colors['secondary'], fg=colors['text'], font=('Arial', 10, 'bold')).pack(side=tk.LEFT, padx=10)
        self.port_max_var = tk.StringVar(value='9999')
        ttk.Spinbox(num_row, from_=1, to=65535, textvariable=self.port_max_var, width=10, font=('Arial', 10)).pack(side=tk.LEFT, padx=5)
        btn_frame = tk.Frame(self.root, bg=colors['bg'])
        btn_frame.pack(fill=tk.X, padx=10, pady=10)
        btn_colors = {'🎲 OLUŞTUR': (colors['primary'], colors['header_fg']), '🗑️ TEMİZLE': ('#ff6600', 'white'), '💾 KAYDET': ('#00aa00', 'white'), '📋 KOPYALA': ('#aa00ff', 'white'), '👋 GERİ': ('#666666', 'white')}
        commands = [self.generate_proxies, self.clear_proxies, self.export_proxies, self.copy_clipboard, self.show_welcome_screen]
        for i, (text, (bg, fg)) in enumerate(btn_colors.items()):
            tk.Button(btn_frame, text=text, command=commands[i], bg=bg, fg=fg, font=('Arial', 11, 'bold'), padx=20, pady=12, cursor='hand2', bd=0).pack(side=tk.LEFT, padx=5)
        list_frame = tk.Frame(self.root, bg=colors['bg'])
        list_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        tk.Label(list_frame, text='📋 PROXY LİSTESİ', bg=colors['bg'], fg=colors['primary'], font=('Arial', 11, 'bold')).pack(anchor=tk.W)
        scroll = ttk.Scrollbar(list_frame)
        scroll.pack(side=tk.RIGHT, fill=tk.Y)
        self.tree = ttk.Treeview(list_frame, columns=('No', 'IP:Port', 'Tip'), height=15, yscrollcommand=scroll.set)
        scroll.config(command=self.tree.yview)
        self.tree.column('No', width=40)
        self.tree.column('IP:Port', width=250)
        self.tree.column('Tip', width=150)
        self.tree.heading('No', text='#')
        self.tree.heading('IP:Port', text='🌐 IP:Port')
        self.tree.heading('Tip', text='📊 Tip')
        self.tree.pack(fill=tk.BOTH, expand=True)
        style = ttk.Style()
        style.theme_use('clam')
        if self.dark_mode:
            style.configure('Treeview', background='#2d1b4e', foreground='#ffffff', fieldbackground='#2d1b4e', font=('Arial', 9))
            style.configure('Treeview.Heading', background='#3d2b5e', foreground='#c77dff', font=('Arial', 9, 'bold'))
            style.map('Treeview', background=[('selected', '#5b3d8f')])
        else:
            style.configure('Treeview', background='#ffffff', foreground='#000000', fieldbackground='#ffffff', font=('Arial', 9))
            style.configure('Treeview.Heading', background='#0066ff', foreground='white', font=('Arial', 9, 'bold'))
            style.map('Treeview', background=[('selected', '#cce5ff')])
        self.tree.tag_configure('http', foreground='#0099ff')
        self.tree.tag_configure('https', foreground='#00aa00')
        self.tree.tag_configure('socks4', foreground='#ffaa00')
        self.tree.tag_configure('socks5', foreground='#aa00ff')
    def toggle_theme(self):
        """Tema değiştir"""
        self.dark_mode = not self.dark_mode
        if self.root.winfo_children():
            if len(self.root.winfo_children()) > 1:
                self.show_generator_screen()
            else:
                self.show_welcome_screen()
    def generate_proxies(self):
        try:
            count = int(self.count_var.get())
            port_min = int(self.port_min_var.get())
            port_max = int(self.port_max_var.get())
        except:
            messagebox.showerror('❌ Hata', 'Lütfen geçerli sayılar girin!')
            return None
        if count <= 0 or count > 10000:
            messagebox.showwarning('⚠️ Uyarı', '1-10000 arasında bir sayı girin!')
            return
        else:
            if port_min > port_max:
                messagebox.showerror('❌ Hata', 'Min port Max port\'tan küçük olmalı!')
                return
            else:
                selected = [t for t, v in self.proxy_type_vars.items() if v.get()]
                if not selected:
                    messagebox.showwarning('⚠️ Uyarı', 'En az bir proxy tipi seçin!')
                    return
                else:
                    self.generated_proxies = []
                    for item in self.tree.get_children():
                        self.tree.delete(item)
                    t = threading.Thread(target=self._worker, args=(count, port_min, port_max, selected))
                    t.daemon = True
                    t.start()
    def _worker(self, count, port_min, port_max, selected):
        # ***<module>.ProxyGeneratorApp._worker: Failure: Compilation Error
        for i in range(count):
            ip = f'{random.randint(1, 223)}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}'
            port = random.randint(port_min, port_max)
            ptype = random.choice(selected)
            proxy = f'{ip}:{port}'
            self.generated_proxies.append((proxy, ptype))
            self.root.after(0, lambda p, t=proxy, n=ptype, i=i + 1: self.tree.insert('', tk.END, values=(n, p, t), tags=(t.lower(),)))
        self.root.after(0, self._update_stats)
        self.root.after(0, lambda /: messagebox.showinfo('✅ Başarılı', f'🎉 {count} proxy oluşturuldu!'))
    def _update_stats(self):
        c = {'HTTP': 0, 'HTTPS': 0, 'SOCKS4': 0, 'SOCKS5': 0}
        for _, t in self.generated_proxies:
            c[t] += 1
        self.label_total.config(text=f'📋 Toplam: {len(self.generated_proxies)}')
        self.label_http.config(text=f"🔵 HTTP: {c['HTTP']}")
        self.label_https.config(text=f"🟢 HTTPS: {c['HTTPS']}")
        self.label_socks4.config(text=f"🟡 SOCKS4: {c['SOCKS4']}")
        self.label_socks5.config(text=f"🟣 SOCKS5: {c['SOCKS5']}")
    def clear_proxies(self):
        if messagebox.askyesno('🗑️ Onayla', 'Tüm proxy\'leri silmek istiyorum misin?'):
            self.generated_proxies = []
            for item in self.tree.get_children():
                self.tree.delete(item)
            self._update_stats()
    def export_proxies(self):
        if not self.generated_proxies:
            messagebox.showwarning('⚠️ Uyarı', 'Önce proxy oluşturun!')
            return
        else:
            f = filedialog.asksaveasfilename(defaultextension='.txt', filetypes=[('Text', '*.txt'), ('CSV', '*.csv')])
            if f:
                try:
                    if f.endswith('.csv'):
                        with open(f, 'w', newline='', encoding='utf-8') as file:
                            w = csv.writer(file)
                            w.writerow(['IP:Port', 'Tip', 'Tarih'])
                            for p, t in self.generated_proxies:
                                w.writerow([p, t, datetime.now().strftime('%Y-%m-%d')])
                    else:
                        with open(f, 'w', encoding='utf-8') as file:
                            for p, t in self.generated_proxies:
                                file.write(f'{p} ({t})\n')
                    messagebox.showinfo('✅ Başarılı', f'💾 {len(self.generated_proxies)} proxy kaydedildi!')
                except Exception as e:
                    messagebox.showerror('❌ Hata', str(e))
    def copy_clipboard(self):
        if not self.generated_proxies:
            messagebox.showwarning('⚠️ Uyarı', 'Kopyalayacak proxy yok!')
            return
        else:
            txt = '\n'.join([p for p, _ in self.generated_proxies])
            self.root.clipboard_clear()
            self.root.clipboard_append(txt)
            self.root.update()
            messagebox.showinfo('✅ Başarılı', f'📋 {len(self.generated_proxies)} proxy panoya kopyalandı!')
if __name__ == '__main__':
    root = tk.Tk()
    app = ProxyGeneratorApp(root)
    root.mainloop()