feat: 按任务管理比特浏览器临时窗口
This commit is contained in:
+27
-16
@@ -491,6 +491,29 @@ async function getBrowserListSimple(options = {}) {
|
||||
return collectBrowserPages(getApi(), options);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将账号中保存的 host:port:user:password 代理转为比特浏览器代理配置。
|
||||
* 空值表示直连。
|
||||
*/
|
||||
function parseAccountProxy(proxyValue) {
|
||||
const value = String(proxyValue || '').trim();
|
||||
if (!value) return { proxyMethod: 2, proxyType: 'noproxy' };
|
||||
const parts = value.split(':');
|
||||
const host = String(parts.shift() || '').trim();
|
||||
const port = String(parts.shift() || '').trim();
|
||||
if (!host || !port) return null;
|
||||
const proxyUserName = String(parts.shift() || '').trim();
|
||||
const proxyPassword = parts.join(':').trim();
|
||||
return {
|
||||
proxyMethod: 2,
|
||||
proxyType: 'socks5',
|
||||
host,
|
||||
port,
|
||||
proxyUserName,
|
||||
proxyPassword,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据账号信息创建比特浏览器窗口
|
||||
* @param {object} account - 账号信息,包含 email、proxy_ip 等字段
|
||||
@@ -506,21 +529,9 @@ async function createBrowserFromAccount(account, browserName = '默认模板', e
|
||||
jsonData.name = account.email || browserName;
|
||||
|
||||
// 设置代理
|
||||
const proxyIp = (account.proxy_ip || '').trim();
|
||||
if (proxyIp) {
|
||||
const parts = proxyIp.split(':');
|
||||
if (parts.length >= 2) {
|
||||
jsonData.proxyType = 'socks5';
|
||||
jsonData.proxyMethod = 2;
|
||||
jsonData.host = parts[0].trim();
|
||||
jsonData.port = parts[1].trim();
|
||||
jsonData.proxyUserName = parts[2] ? parts[2].trim() : '';
|
||||
jsonData.proxyPassword = parts[3] ? parts[3].trim() : '';
|
||||
}
|
||||
} else {
|
||||
jsonData.proxyType = 'noproxy';
|
||||
jsonData.proxyMethod = 2;
|
||||
}
|
||||
const proxyConfig = parseAccountProxy(account.proxy_ip);
|
||||
if (!proxyConfig) return { browserId: null, error: `代理格式错误: ${account.proxy_ip}` };
|
||||
Object.assign(jsonData, proxyConfig);
|
||||
|
||||
// 检查是否已存在该账号的窗口
|
||||
const browsers = existingBrowsers !== null ? existingBrowsers : await getBrowserListSimple();
|
||||
@@ -707,5 +718,5 @@ module.exports = {
|
||||
createBrowserFromAccount,
|
||||
deleteBrowsersBatch,
|
||||
DEFAULT_BROWSER_TEMPLATE,
|
||||
_private: { Semaphore, openBrowserSemaphore: _openBrowserSem, collectBrowserPages },
|
||||
_private: { Semaphore, openBrowserSemaphore: _openBrowserSem, collectBrowserPages, parseAccountProxy },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user