rwadurian/backend/services/scripts/batch-register.js

86 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 批量注册账号脚本
*
* node batch-register.js [数量] [初始推荐码]
*
* 输出保存到当前目录 accounts.json
*/
const fs = require('fs');
const path = require('path');
const COUNT = parseInt(process.argv[2]) || 14;
const START_CODE = process.argv[3] || 'SEED01';
const API = 'https://rwaapi.szaiai.com/api/v1';
const PASSWORD = 'Test123456';
const OUTPUT_FILE = path.join(__dirname, 'accounts.json');
function randomPhone() {
return '1' + (Math.floor(Math.random() * 7) + 3) + Array(9).fill(0).map(() => Math.floor(Math.random() * 10)).join('');
}
async function waitWallet(token) {
for (let i = 0; i < 30; i++) {
const res = await fetch(`${API}/user/wallet`, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (res.ok) {
const d = (await res.json()).data;
if (d?.status?.toUpperCase() === 'READY') return d.walletAddresses;
}
process.stdout.write('.');
await new Promise(r => setTimeout(r, 2000));
}
return null; // 超时返回null不抛错
}
async function register(code, i) {
const phone = randomPhone();
console.log(`\n[${i}] ${phone} <- ${code}`);
const res = await fetch(`${API}/user/register-without-sms-verify`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
phoneNumber: phone,
password: PASSWORD,
deviceId: `dev-${Date.now()}`,
inviterReferralCode: code
})
});
if (!res.ok) throw new Error(await res.text());
const d = (await res.json()).data;
console.log(` -> ${d.userSerialNum} | ${d.referralCode}`);
process.stdout.write(' 钱包');
const wallet = await waitWallet(d.accessToken);
console.log(wallet ? ' OK' : ' 超时');
return { i, phone, seq: d.userSerialNum, code: d.referralCode, inviter: code, wallet, token: d.accessToken };
}
async function main() {
console.log(`注册 ${COUNT} 个账号,起始码: ${START_CODE}\n`);
const list = [];
let code = START_CODE;
for (let i = 1; i <= COUNT; i++) {
if (i > 1) {
console.log('\n等待10秒...');
await new Promise(r => setTimeout(r, 10000));
}
const acc = await register(code, i);
list.push(acc);
code = acc.code;
fs.writeFileSync(OUTPUT_FILE, JSON.stringify(list, null, 2));
}
console.log(`\n完成,最后推荐码: ${code}`);
console.log(`保存到: ${OUTPUT_FILE}`);
}
main();