en
Feedback
Turbo

Turbo

Open in Telegram

Здравствуйте, Telegram! Этот канал не нарушает правила использования Telegram. Сообщения о нарушениях являются ложными, и я полностью соблюдаю правила использования Telegram. Спасибо.

Show more
No data
Subscribers
+424 hours
+97 days
+26530 days
Posts Archive
ليش ماكو تفاعل ?!

انزلكم تطبيق استعاده المحذوفات !

تفاعل قوي هنا

منور القناه

منور ياغالي بس مش اغلى مني

نوركم حبايب

منور

منور

منور القناه

سلام عليكم مشرف جديد @X9_RHa

واخيرا لكيت اتصال انستا + سويت سيد يوزرات انستا شوفوني تفاعل قوي وتنزل 🗿🔥
واخيرا لكيت اتصال انستا + سويت سيد يوزرات انستا شوفوني تفاعل قوي وتنزل 🗿🔥

اقوا

اقل سطرين مابدي

تࢪدون اول تـم فيزا

السلام عليكم 😎 ملف بـ ـوت تحويل رصـ ـيد اسيا 😘 لوحة ادمن قوية 👑 ازرار ملونة الخ ❤️ حاجة عضمة فجر الفجر 😏 @j49_c 🤔

ولا واحد يعرف

شكد تكون اسعار العراق 2019 (ميزة بريد) العراق 2019 (ميزة بريد) العراق 2018 (ميزة بريد)

import random
import re
import string
from typing import Optional, Dict, Any

import requests

OWNER = "White Wolf t.me/j49_c channel t.me/bshshshkk"


class AsiacellAPI:
    def __init__(self) -> None:
        self.api_key: str = ''.join(random.choices(string.hexdigits.lower(), k=32))
        self.base_url: str = "https://odpapp.asiacell.com/api/v1/"
        self._session: requests.Session = requests.Session()

    def _normalize_phone(self, phone: str) -> str:
        phone = phone.lstrip('0')
        if not phone.startswith('964'):
            phone = '964' + phone
        return phone

    def _build_headers(self, device_id: str, access_token: Optional[str] = None) -> Dict[str, str]:
        headers = {
            'User-Agent': "okhttp/5.0.0-alpha.2",
            'Connection': "Keep-Alive",
            'Accept-Encoding': "gzip",
            'X-ODP-API-KEY': self.api_key,
            'Cache-Control': "no-cache",
            'DeviceID': str(device_id),
            'X-OS-Version': "11",
            'X-Device-Type': "[Android][realme][RMX3834 11][TIRAMISU][HMS][4.3.7:90000325]",
            'X-ODP-APP-VERSION': "4.3.7",
            'X-FROM-APP': "odp",
            'X-ODP-CHANNEL': "mobile",
            'X-SCREEN-TYPE': "false",
            'Content-Type': "application/json; charset=UTF-8",
        }
        if access_token:
            headers['Authorization'] = f"Bearer {access_token}"
        return headers

    def _post(self, endpoint: str, payload: Dict[str, Any], device_id: str,
              access_token: Optional[str] = None) -> Dict[str, Any]:
        url = f"{self.base_url}{endpoint}?lang=en" if "login" in endpoint or "smsvalidation" in endpoint else f"{self.base_url}{endpoint}?lang=ar"
        headers = self._build_headers(device_id, access_token)
        response = self._session.post(url, data=json.dumps(payload), headers=headers, timeout=20)
        return response.json()

    def send_login_request(self, phone: str, device_id: str) -> Dict[str, Any]:
        phone = self._normalize_phone(phone)
        payload = {"captchaCode": "", "username": phone}
        return self._post("login", payload, device_id)

    def verify_otp_code(self, session_id: str, otp_code: str, device_id: str) -> Dict[str, Any]:
        payload = {"PID": session_id, "passcode": otp_code, "token": ""}
        return self._post("smsvalidation", payload, device_id)

    def initiate_credit_transfer(self, access_token: str, amount: int, receiver: str,
                                 device_id: str) -> Dict[str, Any]:
        receiver = self._normalize_phone(receiver)
        payload = {"amount": float(amount), "receiverMsisdn": receiver}
        return self._post("credit-transfer/start", payload, device_id, access_token)

    def confirm_credit_transfer(self, access_token: str, session_id: str,
                                confirmation_code: str, device_id: str) -> Dict[str, Any]:
        payload = {"PID": session_id, "passcode": confirmation_code}
        return self._post("credit-transfer/do-transfer", payload, device_id, access_token)

    def extract_session_id(self, response_data: Dict[str, Any]) -> Optional[str]:
        session_id = response_data.get("PID") or response_data.get("transactionId")
        if not session_id and "nextUrl" in response_data:
            match = re.search(r'PID=([a-f0-9\-]+)', response_data["nextUrl"])
            if match:
                session_id = match.group(1)
        return session_id
اتصـ ـال تحـ ـويل اسيا ⚡ @j49_c 🤔

😂

تمام حبي. 👍🏻🌹