首页 > 解决方案 > 如何从 Accounts.txt 中获取一组以上的 User:Pass

问题描述

我有一个用户名列表:密码,我想将它们分开,我该怎么做:

let username = usernameValue;
let password = passwordValue;

这样我就可以拥有一个包含 10 多个用户名/密码的大列表,我的脚本可以自动从 txt 文件中提取这些用户名/密码,然后登录到每个单独的帐户。

const fs = require('fs')
const path = require('path')
const accounts = fs.readFileSync(path.resolve('./../../settings/accounts.txt'), 'utf8')
const [usernameValue, passwordValue] = accounts.split(':');

console.log(usernameValue);
// 'username'

console.log(passwordValue);
// 'password'

上面的部分代码取自我在这里的原始问题

帐户.txt

test:test
test2:test2
test3:test3

输出

test - username
test - password
test2 - username

它不会输出每一个值,我也不知道为什么。

标签: node.jspathfs

解决方案


如果是一行一行的,你可以使用 package readline。例如:

const readline = require("readline");
const fs = require("fs");

const rl = readline.createInterface({
    input: fs.createReadStream(__dirname + "/accounts.txt"),
});

rl.on("line", (line) => {
    const [usernameValue, passwordValue] = line.split(':');
    console.log(`${usernameValue} - ${passwordValue}`);
});

如果您想要线路输出之间的延迟,您可以放置​​一个间隔并处理存储在缓冲区中的信息:

const readline = require("readline");
const fs = require("fs");

const rl = readline.createInterface({
    input: fs.createReadStream(__dirname + "/accounts.txt"),
});

const buffer = [];
let isDonde = false;

rl.on("line", (line) => {
    buffer.push(line.split(':'));
});

rl.on("close", () => {
    isDonde = true;
})

let interval = setInterval(() => {
    if (!buffer.length) {
        if (isDonde) {
            clearInterval(interval);
        }
        return;
    }

    const [usernameValue, passwordValue] = buffer.shift();
    console.log(`${usernameValue} - ${passwordValue}`);
}, 1000); // higher is more time between logs

推荐阅读