Skip to content

[پشتیبانی]: توکن api #324

@theycallmemichael

Description

@theycallmemichael

هدف

دریافت اطلاعات قیمت با توکن ای پی آی خودم حتی شده به صورت
read only

محیط درخواست

سلام من الان چند ساعته دارم توی ویژوال استودیو با پایتون کد میزنم و هر روشی رو برای استفاده از توکن ای پی آی خودم امتحان کردم نتیجه نگرفتم ، چه دی ان اس عوض کردم چه فیلترشکن زدم چه معمولی رفتم...چه کد هام رو عوض کردم...هر روشی رفتم نمیتونم از توکن خودم استفاده کنم...من فقط دسترسی رید اونلی (فقط خواندن) میخوام .. فقط میخوام بتونم قیمت های یه ارز رو در یه بازه ببینم نه میخوام معامله کنم نه میخوام تغییراتی ایجاد کنم اما واسه همین دسترسی ساده هم به مشکل خوردم...داخل سایت تیکت گذاشتم و پشتیبانی من رو به اینجا هدایت کرد...حدس میزنم به خاطر حمله اسرائیل کل توکن های ای پی آی رو مسدود کرده باشین آیا حدسم درسته؟مشکل توکن من چیه؟چرا نمیتونم قیمت ها رو بگیرم؟لطفا یه بررسی کنید بهم اطلاع بدین الان چند ساعته درگیرم و کل کارم گیر کرده سر این موضوع و نمیتونم یه قیمت ساده بگیرم از سایت...خواهش میکنم در کوتاه ترین زمان ممکن بهم اطلاع بدین که مشکل چیه...اگه کلا مسدود کردین من بگردم دنبال یه راه دیگه ای...اولویت این مشکل خیلی بالاست برام خواهشا بررسی کنید...دسترسی سطح 2 هم دارم کاملا احراز هویت شدم قبلا.

نحوه درخواست

import requests
import socket
import json

def fix_dns_and_test_nobitex(api_token):
"""
حل مشکل DNS و تست دسترسی به نوبیتکس
"""

# 🔧 تنظیم DNS موقت برای حل مشکل
original_dns = socket.getaddrinfo
def new_getaddrinfo(*args, **kwargs):
    try:
        return original_dns(*args, **kwargs)
    except socket.gaierror:
        # اگر DNS اصلی کار نکرد، از IP مستقیم استفاده کن
        if args[0] == 'api.nobitex.ir':
            # این IP مربوط به نوبیتکس است (ممکن است نیاز به آپدیت داشته باشد)
            return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('185.165.117.12', 443))]
        raise

socket.getaddrinfo = new_getaddrinfo

headers = {
    'Authorization': f'Token {api_token}',
    'Content-Type': 'application/json'
}

print("🔧 در حال رفع مشکل DNS...")

try:
    # تست اول: بررسی سلامت API
    health_url = "https://api.nobitex.ir/api/v2/orderbook/BTCIRT"
    response = requests.get(health_url, timeout=10)
    
    if response.status_code == 200:
        print("✅ API نوبیتکس در دسترس است")
        
        # تست دوم: بررسی اعتبار توکن
        profile_url = "https://api.nobitex.ir/users/profile"
        profile_response = requests.get(profile_url, headers=headers, timeout=10)
        
        if profile_response.status_code == 200:
            user_data = profile_response.json()
            print("🎉 دسترسی کامل برقرار شد!")
            print(f"👤 کاربر: {user_data.get('profile', {}).get('firstName', 'ناموجود')}")
            return True
        else:
            print(f"⚠️ توکن مشکل دارد: {profile_response.status_code}")
            return False
            
    else:
        print(f"❌ API نوبیتکس پاسخ نمی‌دهد: {response.status_code}")
        return False
        
except requests.exceptions.ConnectionError as e:
    print(f"❌ مشکل اتصال به نوبیتکس: {e}")
    print("\n🔍 راه‌حل‌های پیشنهادی:")
    print("1. از VPN استفاده کنید")
    print("2. DNS را به 8.8.8.8 تغییر دهید")
    print("3. اتصال اینترنت را بررسی کنید")
    return False
    
except Exception as e:
    print(f"❌ خطای ناشناخته: {e}")
    return False
    
finally:
    # بازگردانی DNS اصلی
    socket.getaddrinfo = original_dns

def get_nobitex_market_data(api_token):
"""
دریافت داده‌های بازار از نوبیتکس
"""

headers = {
    'Authorization': f'Token {api_token}',
    'Content-Type': 'application/json'
}

try:
    # دریافت orderbook برای بیت‌کوین
    url = "https://api.nobitex.ir/v2/orderbook/BTCIRT"
    response = requests.get(url, headers=headers, timeout=10)
    
    if response.status_code == 200:
        data = response.json()
        print("✅ داده‌های بازار دریافت شد:")
        print(f"💰 آخرین قیمت: {data['lastTrade']:,} تومان")
        print(f"📊 بهترین خرید: {data['bids'][0][0]:,} تومان")
        print(f"📈 بهترین فروش: {data['asks'][0][0]:,} تومان")
        return data
    else:
        print(f"❌ خطا در دریافت داده: {response.status_code}")
        return None
        
except Exception as e:
    print(f"❌ خطا: {e}")
    return None

🚀 اجرای اصلی

if name == "main":
# 🔑 توکن API شما
YOUR_TOKEN = "#########" # 🔄 جایگزین کنید

print("🚀 راه‌اندازی سیستم ارتباط با نوبیتکس...")
print("=" * 50)

# تست دسترسی
if fix_dns_and_test_nobitex(YOUR_TOKEN):
    print("\n" + "=" * 50)
    print("✅ اتصال برقرار شد - دریافت داده‌های زنده...")
    print("=" * 50)
    
    # دریافت داده‌های بازار
    market_data = get_nobitex_market_data(YOUR_TOKEN)
    
    if market_data:
        print("\n" + "🎊" * 20)
        print("🎉 سیستم کاملاً آماده است!")
        print("✅ دسترسی به نوبیتکس تأیید شد")
        print("✅ می‌توانیم داده‌های تاریخی را دریافت کنیم")
        print("🎊" * 20)
else:
    print("\n❌ متأسفانه مشکل اتصال حل نشد.")
    print("\n💡 پیشنهاد نهایی: از VPN استفاده کنید یا DNS سیستم را تغییر دهید.")

پاسخ دریافتی

❌ مشکل اتصال به نوبیتکس: HTTPSConnectionPool(host='api.nobitex.ir', port=443): Max retries exceeded with url: /api/v2/orderbook/BTCIRT (Caused by Connec
tTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000002ADB9090530>, 'Connection to api.nobitex.ir timed out. (connect timeout=10)'))

اطلاعات تکمیلی

آیا به خاطر حمله اسرائیل توکن ها رو مسدود کرده اید؟

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions