""" @ Base: https://app.khoj.dev/ @ Author: Shannz @ Note: Signup script to get cookie for khojai. """ import requests import time import re import sys HEADERS = { 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36', 'Accept': 'application/json, text/plain, */*', 'Content-Type': 'application/json', 'Origin': 'https://app.khoj.dev', 'Referer': 'https://app.khoj.dev/?v=app', 'sec-ch-ua-platform': '"Android"', 'sec-ch-ua-mobile': '?1', 'sec-fetch-site': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'accept-language': 'id,en-US;q=0.9,en;q=0.8', } CONFIG = { 'KHOJ_MAGIC': 'https://app.khoj.dev/auth/magic', 'MAIL_LIST': 'https://akunlama.com/api/v1/mail/list', 'MAIL_HTML': 'https://akunlama.com/api/v1/mail/getHtml' } def get_input(prompt): return input(f"\n[?] {prompt}") def print_status(msg, type="info"): if type == "info": print(f"[*] {msg}") elif type == "success": print(f"\n[+] {msg}") elif type == "error": print(f"\n[!] {msg}") elif type == "process": sys.stdout.write(f"\r[~] {msg}") sys.stdout.flush() class KhojAuth: def __init__(self): self.session = requests.Session() self.session.headers.update(HEADERS) def request_otp(self, email): print_status(f"Mengirim kode login ke: {email}", "info") try: payload = {"email": email} resp = self.session.post(CONFIG['KHOJ_MAGIC'], json=payload) if resp.status_code == 200: print_status("Request berhasil dikirim.", "success") return True else: print_status(f"Gagal request. Status: {resp.status_code}", "error") return False except Exception as e: print_status(f"Error Request: {e}", "error") return False def get_verification_code(self, username): print_status("Menunggu email masuk...", "info") attempts = 0 max_attempts = 30 while attempts < max_attempts: try: resp = requests.get(f"{CONFIG['MAIL_LIST']}?recipient={username}") inbox = resp.json() if inbox and len(inbox) > 0: latest_mail = inbox[0] subject = latest_mail.get('message', {}).get('headers', {}).get('subject', '') if "Khoj" in subject or "Login" in subject: storage = latest_mail.get('storage', {}) key = storage.get('key') region = storage.get('region') if key and region: html_resp = requests.get(CONFIG['MAIL_HTML'], params={'key': key, 'region': region}) html_content = html_resp.text match = re.search(r']*>(\d{6})', html_content) if not match: match = re.search(r'>\s*(\d{6})\s*<', html_content) if match: code = match.group(1) print_status(f"Kode ditemukan: {code}", "success") return code except Exception as e: pass attempts += 1 print_status(f"Polling inbox... ({attempts}/{max_attempts})", "process") time.sleep(4) print_status("Timeout! Kode tidak ditemukan.", "error") return None def verify_and_get_cookie(self, email, code): print_status(f"Memverifikasi kode: {code}", "info") url = f"{CONFIG['KHOJ_MAGIC']}?code={code}&email={email}" try: resp = self.session.get(url, allow_redirects=False) if resp.status_code == 307: cookies = resp.cookies.get_dict() if 'session' in cookies: full_cookie = f"session={cookies['session']}" return full_cookie set_cookie = resp.headers.get('Set-Cookie', '') if 'session=' in set_cookie: match = re.search(r'session=([^;]+)', set_cookie) if match: return f"session={match.group(1)}" print_status(f"Gagal mendapatkan cookie. Status: {resp.status_code}", "error") return None except Exception as e: print_status(f"Error Verify: {e}", "error") return None def main(): print("="*40) print(" KHOJ.DEV COOKIE GENERATOR (Auto)") print("="*40) username = get_input("Masukkan Terserah (contoh: shanz): ").strip() if not username: print("Username tidak boleh kosong!") return email = f"{username}@akunlama.com" auth = KhojAuth() if auth.request_otp(email): code = auth.get_verification_code(username) if code: cookie = auth.verify_and_get_cookie(email, code) if cookie: print("\n" + "="*40) print("SESSION COOKIE ANDA:") print("="*40) print(f"\n{cookie}\n") print("="*40) print("Silakan salin string di atas.") else: print_status("Gagal mengambil cookie.", "error") if __name__ == "__main__": main()