117 lines
3.9 KiB
Python
117 lines
3.9 KiB
Python
import random
|
||
import threading
|
||
import time
|
||
import asyncio
|
||
|
||
import requests
|
||
from loguru import logger
|
||
from concurrent.futures import ThreadPoolExecutor
|
||
|
||
from tonutils.client import TonapiClient, ToncenterV3Client
|
||
from tonutils.utils import to_amount
|
||
from tonutils.wallet import (
|
||
WalletV3R1,
|
||
# Uncomment the following lines to use different wallet versions:
|
||
WalletV3R2,
|
||
WalletV4R1,
|
||
WalletV4R2,
|
||
WalletV5R1,
|
||
HighloadWalletV2,
|
||
HighloadWalletV3,
|
||
)
|
||
|
||
# 配置日志文件输出
|
||
# 按天分割日志文件,文件名包含日期,保留所有日志文件
|
||
logger.add("wallet_log_{time:YYYY-MM-DD}.log", rotation="1 day", retention="9999 days")
|
||
|
||
# API key for accessing the Tonapi (obtainable from https://tonconsole.com)
|
||
API_KEY = "AFMEX4F23ZRPOUIAAAAPHGIE5QECWZA5M75E54VD72O5IJEGP5IW3LOTXO7Z4QOX7MV6JQQ"
|
||
|
||
# Set to True for test network, False for main network
|
||
IS_TESTNET = False
|
||
|
||
headers = {
|
||
'accept': '*/*',
|
||
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
||
'authorization': 'Bearer AFPJTKEBPOX3AIYAAAAKA2HWOTRNJP5MUCV5DMDCZAAOCPSAYEYS3CILNQVLF2HWKED6USY',
|
||
'cache-control': 'no-cache',
|
||
'content-type': 'application/json',
|
||
'dnt': '1',
|
||
'origin': 'https://tonviewer.com',
|
||
'pragma': 'no-cache',
|
||
'priority': 'u=1, i',
|
||
'referer': 'https://tonviewer.com/',
|
||
'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="132", "Microsoft Edge";v="132"',
|
||
'sec-ch-ua-mobile': '?0',
|
||
'sec-ch-ua-platform': '"Windows"',
|
||
'sec-fetch-dest': 'empty',
|
||
'sec-fetch-mode': 'cors',
|
||
'sec-fetch-site': 'cross-site',
|
||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0',
|
||
}
|
||
|
||
|
||
def get_ton_num(address):
|
||
headers = {
|
||
'accept': '*/*',
|
||
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
||
'authorization': 'Bearer AFPJTKEBPOX3AIYAAAAKA2HWOTRNJP5MUCV5DMDCZAAOCPSAYEYS3CILNQVLF2HWKED6USY',
|
||
'cache-control': 'no-cache',
|
||
'content-type': 'application/json',
|
||
'dnt': '1',
|
||
'origin': 'https://tonviewer.com',
|
||
'pragma': 'no-cache',
|
||
'priority': 'u=1, i',
|
||
'referer': 'https://tonviewer.com/',
|
||
'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="132", "Microsoft Edge";v="132"',
|
||
'sec-ch-ua-mobile': '?0',
|
||
'sec-ch-ua-platform': '"Windows"',
|
||
'sec-fetch-dest': 'empty',
|
||
'sec-fetch-mode': 'cors',
|
||
'sec-fetch-site': 'cross-site',
|
||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0',
|
||
}
|
||
|
||
for i in range(3):
|
||
try:
|
||
response = requests.get(
|
||
f'https://tonapi.io/v2/accounts/{address}',
|
||
headers=headers,
|
||
)
|
||
|
||
return to_amount(int(response.json()["balance"]))
|
||
except:
|
||
time.sleep(random.random())
|
||
|
||
return False
|
||
|
||
|
||
async def main(i) -> None:
|
||
client = ToncenterV3Client(is_testnet=IS_TESTNET, rps=2, max_retries=1)
|
||
wallet, public_key, private_key, mnemonic = WalletV4R2.create(client)
|
||
|
||
for i1 in range(5):
|
||
try:
|
||
response = requests.get(
|
||
f'https://tonapi.io/v2/accounts/{wallet.address.to_str(is_user_friendly=True, is_url_safe=True, is_bounceable=False, is_test_only=False)}',
|
||
headers=headers,
|
||
)
|
||
|
||
logger.info(
|
||
f"余额:{to_amount(int(response.json()["balance"]))} Address: {wallet.address.to_str(is_user_friendly=True, is_url_safe=True, is_bounceable=False, is_test_only=False)},D:{' '.join(mnemonic)},")
|
||
|
||
break
|
||
except:
|
||
time.sleep(random.random())
|
||
|
||
|
||
def main1(i):
|
||
asyncio.run(main(i))
|
||
|
||
|
||
if __name__ == "__main__":
|
||
with ThreadPoolExecutor(max_workers=100) as executor:
|
||
while True:
|
||
executor.submit(main1, "grfreg")
|
||
time.sleep(random.random())
|