diff --git a/browser.mjs b/browser.mjs index 2b324bc..2e39a57 100644 --- a/browser.mjs +++ b/browser.mjs @@ -1064,15 +1064,26 @@ export async function ensureBrowser(log = () => {}) { log('браузер поднялся'); } - const list = await (await fetch(`http://127.0.0.1:${PORT}/json/list`)).json().catch(() => []); - if (list.some(t => String(t.url || '').includes('deepseek'))) return; + const tabs = () => fetch(`http://127.0.0.1:${PORT}/json/list`) + .then(r => r.json()).catch(() => []); + const isChat = t => String(t.url || '').includes('deepseek'); + + if ((await tabs()).some(isChat)) return; // Новая вкладка в свежих сборках Chromium открывается ТОЛЬКО методом PUT: // на GET протокол отвечает 405 и молча ничего не делает. - const r = await fetch( - `http://127.0.0.1:${PORT}/json/new?url=${encodeURIComponent(BROWSER.url)}`, - { method: 'PUT' }); + // + // И адрес НЕ параметр запроса: всё, что стоит после '?', протокол берёт + // как сам адрес целиком. С '?url=...' открывалась пустая about:blank — + // строку 'url=https%3A%2F%2F...' он честно считал адресом. + const r = await fetch(`http://127.0.0.1:${PORT}/json/new?${BROWSER.url}`, + { method: 'PUT' }); if (!r.ok) throw new Error(`Не удалось открыть вкладку DeepSeek: ${r.status}.`); await sleep(4000); // дать чату прогрузиться до первого вопроса + // Открыл — убедись, что открылось именно то: молчаливый промах здесь уже был. + if (!(await tabs()).some(isChat)) { + throw new Error(`Вкладка открылась, но не с ${BROWSER.url}. ` + + 'Похоже, браузер не принял адрес — закройте лишние вкладки и повторите.'); + } log('вкладка с чатом открыта'); }