| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /tmp/shotdir/ |
Upload File : |
const { chromium } = require('playwright-core');
const fs = require('fs');
// find chromium binary
const base = '/tmp/pw-browsers';
let exe = null;
for (const d of fs.readdirSync(base)) {
const p = `${base}/${d}/chrome-linux/chrome`;
if (fs.existsSync(p)) { exe = p; break; }
}
if (!exe) { console.error('no chromium'); process.exit(1); }
(async () => {
const browser = await chromium.launch({
executablePath: exe,
args: [
'--host-resolver-rules=MAP pacim.de 127.0.0.1, MAP www.pacim.de 127.0.0.1',
'--ignore-certificate-errors',
'--no-sandbox',
],
});
const ctx = await browser.newContext({ viewport: { width: 1280, height: 900 }, ignoreHTTPSErrors: true, deviceScaleFactor: 1 });
const page = await ctx.newPage();
const targets = process.argv.slice(2);
for (const t of targets) {
const [url, out] = t.split('::');
await page.goto(url, { waitUntil: 'networkidle', timeout: 45000 });
await page.waitForTimeout(1200);
// scroll to trigger reveal animations then back to top for full screenshot
await page.evaluate(async () => {
await new Promise(res => { let y=0; const i=setInterval(()=>{window.scrollTo(0,y); y+=600; if(y>document.body.scrollHeight){clearInterval(i);res();}},40); });
});
await page.waitForTimeout(800);
await page.evaluate(() => window.scrollTo(0,0));
await page.waitForTimeout(400);
await page.screenshot({ path: out, fullPage: true });
console.log('shot', out);
}
await browser.close();
})().catch(e => { console.error(e); process.exit(1); });