got trade working

This commit is contained in:
Boki 2026-02-23 11:02:10 -05:00
parent dcbeebac83
commit 12dcf0776a
3 changed files with 17 additions and 58 deletions

View file

@ -1,4 +1,4 @@
import { chromium } from "playwright";
import { chromium } from "patchright";
import { createInterface } from "readline";
// All logging goes to stderr — never corrupt the JSON protocol on stdout
@ -21,36 +21,6 @@ function sendEvent(event, data = {}) {
sendJson({ type: "event", event, ...data });
}
// --- Stealth script (same as the working TS version) ---
const STEALTH_SCRIPT = `
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
Object.defineProperty(navigator, 'plugins', {
get: () => [
{ name: 'Chrome PDF Plugin', filename: 'internal-pdf-viewer' },
{ name: 'Chrome PDF Viewer', filename: 'mhjfbmdgcfjbbpaeojofohoefgiehjai' },
{ name: 'Native Client', filename: 'internal-nacl-plugin' },
],
});
Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });
delete window.__playwright;
delete window.__pw_manual;
if (!window.chrome) window.chrome = {};
if (!window.chrome.runtime) window.chrome.runtime = { id: undefined };
const originalQuery = window.navigator.permissions?.query;
if (originalQuery) {
window.navigator.permissions.query = (params) => {
if (params.name === 'notifications')
return Promise.resolve({ state: Notification.permission });
return originalQuery(params);
};
}
`;
// --- Selectors (mirrored from Selectors.cs) ---
const Selectors = {
LiveSearchButton: 'button.livesearch-btn, button:has-text("Activate Live Search")',
@ -152,24 +122,14 @@ function handleWebSocket(ws, searchId) {
async function cmdStart(reqId, params) {
const { browserUserDataDir, headless, dashboardUrl } = params;
log(`Starting browser, userDataDir=${browserUserDataDir}, headless=${headless}`);
log(`Starting browser (stealth), userDataDir=${browserUserDataDir}`);
context = await chromium.launchPersistentContext(browserUserDataDir, {
channel: "chrome",
headless: !!headless,
headless: false,
viewport: null,
args: [
"--disable-blink-features=AutomationControlled",
"--disable-features=AutomationControlled",
"--no-first-run",
"--no-default-browser-check",
"--disable-infobars",
],
ignoreDefaultArgs: ["--enable-automation"],
});
await context.addInitScript(STEALTH_SCRIPT);
if (dashboardUrl) {
const pages = context.pages();
if (pages.length > 0) {
@ -181,7 +141,7 @@ async function cmdStart(reqId, params) {
log(`Dashboard opened: ${dashboardUrl}`);
}
log("Browser launched (stealth active)");
log("Browser launched (playwright-extra stealth active)");
sendResponse(reqId);
}
@ -230,7 +190,6 @@ async function cmdPauseSearch(reqId, params) {
async function cmdClickTravel(reqId, params) {
const { pageId, itemId } = params;
// pageId is a searchId or scrapId
let page = searchPages.get(pageId) || scrapPages.get(pageId)?.page;
if (!page) {
sendResponse(reqId, { clicked: false });