From bd3284545858c61c3514dedc25b1602eef395fc2 Mon Sep 17 00:00:00 2001 From: Alex Cube Date: Wed, 26 Aug 2026 17:06:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D1=81=20=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D0=BC=20=D0=B0?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=D1=81=D0=BE=D0=BC,=20=D0=B0=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D0=BF=D1=83=D1=81=D1=82=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DevTools берёт всё, что стоит после '?' в /json/new, как сам адрес целиком — это не параметры запроса. Строка 'url=https%3A%2F%2Fchat.deepseek.com%2F' честно считалась адресом, и открывалась about:blank. Место срабатывает только когда браузер жив, а вкладки с чатом нет, поэтому лежало незамеченным. Заодно ensureBrowser теперь проверяет, что открылось именно то: беззвучный промах в этом файле уже был один раз, с кнопкой New chat. --- browser.mjs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) 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('вкладка с чатом открыта'); }