I have created a debian container image with node, npm and
FROM debian:bullseye-slim
RUN apt-get update --fix-missing
RUN apt-get install -y ... [edited: installs curl, node, npm, and various libs and utils}
RUN curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list
RUN apt-get update
RUN apt-get install -y google-chrome-stable --no-install-recommends
WORKDIR /usr/src
COPY package*.json ./
RUN npm install
COPY index.js ./
CMD [ "node", "index.js" ]
import CDP from 'chrome-remote-interface';
import chromeLauncher from 'chrome-launcher';
const chromePort = 9222
const chromeFlags = ['--no-first-run', '--no-default-browser-check', '--disable-fre', '--disable-translate', '--disable-extensions', '--remote-debugging-address=127.0.0.1', `--remote-debugging-port=${chromePort}`];
const chromeUrl = 'https://www.google.com'; // Edited; example URL
const main = async () => {
let chrome;
try {
// Launch the Chrome application
chrome = await chromeLauncher.launch({ port: chromePort, chromeFlags });
console.log(`Chrome launched with debugging port on ${chrome.port}`);
// Create a CDP session for the browser window
const browserCDP = await connectCDP(null);
// Navigate to the site
await browserCDP.Page.navigate({ url: chromeUrl });
// Shutdown CDP session
await browserCDP.close();
} finally {
// Close the Chrome application
if (chrome) {
await chrome.kill();
}
}
}
async function connectCDP(target) {
// Connect chrome remote interface
const cdp = await CDP({ port: chromePort, target });
// Define network interception handler
cdp.Network.requestIntercepted(async ({ interceptionId, request}) => {
... [ edited for brevity ] ...
// Allow request to continue
try {
cdp.Network.continueInterceptedRequest({ interceptionId });
} catch (e) {
console.log(e);
}
});
// Enable network interception
await cdp.Network.setRequestInterception({ patterns: [{ urlPattern: '*', interceptionStage: 'HeadersReceived' }] });
// Return the CDP instance
return cdp;
}
// Run
main().catch(err => {
console.error(err);
});
Error: connect ECONNREFUSED 127.0.0.1:9222
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1138:16)
TypeError: Cannot read property 'webSocketDebuggerUrl' of undefined
at Chrome._fetchDebuggerURL (/usr/src/node_modules/chrome-remote-interface/lib/chrome.js:183:31)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async Chrome._start (/usr/src/node_modules/chrome-remote-interface/lib/chrome.js:140:25)