完整调用示例
Node.js(axios)单账号查询
javascript
const axios = require('axios');
async function queryAccount() {
const resp = await axios.post('https://monsteronly.me/api/account', {
refreshToken: 'eyJhb...',
fields: '个人信息,封禁,等级'
}, {
headers: {
'Authorization': 'Bearer sk_xxxxxxxx',
'Content-Type': 'application/json'
}
});
console.log(resp.data);
}
queryAccount().catch(console.error);Node.js 批量查询(SSE 流式)
javascript
const axios = require('axios');
async function batchQuery() {
const resp = await axios.post('https://monsteronly.me/api/accounts', {
refreshTokens: ['token1', 'token2', 'token3'],
fields: '个人信息,封禁,红信'
}, {
headers: {
'Authorization': 'Bearer sk_xxxxxxxx',
'Content-Type': 'application/json'
},
responseType: 'stream'
});
let buffer = '';
resp.data.on('data', (chunk) => {
buffer += chunk.toString();
const lines = buffer.split('\n\n');
buffer = lines.pop(); // 保留不完整的最后一段
for (const line of lines) {
if (!line.startsWith('data: ')) continue;
const event = JSON.parse(line.slice(6));
if (event.type === 'progress') {
console.log(`[${event.processed}/${event.total}]`, event.result);
} else if (event.type === 'success') {
console.log('全部完成,剩余配额:', event.quota.remaining);
} else if (event.type === 'error') {
console.error('错误:', event.message);
}
}
});
}
batchQuery().catch(console.error);Python(requests + 流式)
python
import requests
import json
API = 'https://monsteronly.me'
KEY = 'sk_xxxxxxxx'
def single_query(refresh_token):
r = requests.post(
f'{API}/api/account',
headers={'Authorization': f'Bearer {KEY}'},
json={
'refreshToken': refresh_token,
'fields': '个人信息,封禁'
},
timeout=30
)
r.raise_for_status()
return r.json()
def batch_query(tokens, fields='个人信息,封禁'):
with requests.post(
f'{API}/api/accounts',
headers={'Authorization': f'Bearer {KEY}'},
json={
'refreshTokens': tokens,
'fields': fields
},
stream=True,
timeout=600
) as r:
r.raise_for_status()
for line in r.iter_lines(decode_unicode=True):
if not line or not line.startswith('data: '):
continue
event = json.loads(line[6:])
if event['type'] == 'progress':
print(f"[{event['processed']}/{event['total']}]", event['result'])
elif event['type'] == 'success':
print('完成,剩余配额:', event['quota']['remaining'])
elif event['type'] == 'error':
print('错误:', event.get('message'))
# 用法
print(single_query('eyJhb...'))
batch_query(['token1', 'token2', 'token3'])浏览器 fetch(SSE)
javascript
async function batchQuery() {
const resp = await fetch('https://monsteronly.me/api/accounts', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_xxxxxxxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
refreshTokens: 'token1,token2',
fields: '个人信息'
})
});
const reader = resp.body.getReader();
const decoder = new TextDecoder();
let buffer = '';
while (true) {
const { value, done } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const lines = buffer.split('\n\n');
buffer = lines.pop();
for (const line of lines) {
if (!line.startsWith('data: ')) continue;
const event = JSON.parse(line.slice(6));
console.log(event);
}
}
}