Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a browser automation framework, configure its proxy before navigation, wait for the page state your target requires, and then capture the viewport, an element, or the full document. Playwright supports HTTP(S) and SOCKSv5 proxies with optional credentials; Puppeteer configures Chromium with a proxy and captures through Page.screenshot(). A proxy changes the network route, not the page’s rendering, consent, authentication, or bot-check behavior.

Choose the capture method

Decision Choice Use it when
Framework Playwright You want documented browser- or context-level proxy settings, Chromium/Firefox/WebKit support, and flexible locators.
Framework Puppeteer You need a straightforward Chromium workflow using Page.screenshot().
Capture scope Viewport You need stable, screen-sized images for monitoring or visual regression.
Capture scope Full page You need the complete scrollable document.
Capture scope Element or clip You need one component or a fixed rectangle.
Output PNG Lossless text, diagrams, and UI detail matter.
Output JPEG or WebP Smaller files are more important than lossless pixels.
Resolution CSS pixels Dimensions must remain predictable across machines.
Resolution Device pixels You need higher-density images for review or publication.

Capture a page through a proxy with Playwright

1. Install and configure the browser

Install Playwright and its browser binaries in your project. Set proxy credentials through environment variables or a secret store, not in source code, logs, screenshots, or CI artifacts.

npm install playwright
npx playwright install chromium

Pass the proxy at browser launch. Playwright accepts an HTTP(S) or SOCKSv5 server and optional username and password. Configure it before opening the page so navigation and subsequent requests use the intended route.

import { chromium } from 'playwright';

const browser = await chromium.launch({
  proxy: {
    server: process.env.PROXY_SERVER || 'http://proxy.example:3128',
    username: process.env.PROXY_USER,
    password: process.env.PROXY_PASSWORD
  }
});

const page = await browser.newPage({
  viewport: { width: 1440, height: 900 },
  deviceScaleFactor: 1
});

await page.goto('https://example.com', {
  waitUntil: 'networkidle',
  timeout: 90000
});
await page.screenshot({ path: 'page.png', fullPage: true });
await browser.close();

Use a proxy value such as socks5://proxy.example:1080 when your provider exposes SOCKSv5. Do not put credentials directly inside a proxy URL when separate fields are available.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Philips 24 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 241V8LB
  • CRISP CLARITY: This 23.8″ Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
  • WORK SEAMLESSLY: This sleek monitor is virtually bezel-free on three sides, so the screen looks even bigger for the viewer. This minimalistic design also allows for seamless multi-monitor setups that enhance your workflow and boost productivity
  • A BETTER READING EXPERIENCE: For busy office workers, EasyRead mode provides a more paper-like experience for when viewing lengthy documents

2. Wait for the page you actually need

networkidle is only a generic signal. Analytics, advertisements, long polling, or a single-page application can keep requests active, while a page can be visually incomplete even after network activity quiets. Prefer a site-specific readiness condition.

await page.goto('https://example.com/dashboard', { waitUntil: 'domcontentloaded' });
await page.locator('[data-testid="dashboard-ready"]').waitFor({ state: 'visible', timeout: 30000 });
await page.screenshot({ path: 'dashboard.webp', type: 'webp', fullPage: true });

You can also wait for a known response, a deliberate delay for an animation, or an application-ready flag. Make consent, login, and challenge states explicit: they alter the pixels and cannot be fixed by proxy configuration alone.

3. Capture an element or a high-resolution image

await page.locator('main').screenshot({ path: 'main.webp', type: 'webp' });

await page.screenshot({
  path: 'retina.png',
  fullPage: true,
  scale: 'device'
});

An element screenshot avoids unrelated page content. The viewport screenshot is the default when fullPage is false; a full-page screenshot captures the scrollable document. PNG, JPEG, and WebP are available. Use CSS-pixel scaling for stable dimensions or device-pixel scaling for extra detail.

4. Use a separate proxy per job

If parallel jobs require different routes, create a browser context with its own proxy instead of mutating a shared browser.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
const browser = await chromium.launch();
const context = await browser.newContext({
  proxy: {
    server: process.env.PROXY_SERVER,
    username: process.env.PROXY_USER,
    password: process.env.PROXY_PASSWORD
  },
  viewport: { width: 1440, height: 900 }
});
const page = await context.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await page.screenshot({ path: 'per-job.png', fullPage: true });
await context.close();
await browser.close();

Capture through a proxy with Puppeteer

Puppeteer passes the proxy to Chromium at launch. This example captures a full page after navigation.

Rank #2
Philips 22 Inch Computer Monitor FHD 100Hz VA VESA Flicker-Free, 221V8LB
  • CRISP CLARITY: This 22 inch class (21.5″ viewable) Philips V line monitor delivers crisp Full HD 1920x1080 visuals. Enjoy movies, shows and videos with remarkable detail
  • 100HZ FAST REFRESH RATE: 100Hz brings your favorite movies and video games to life. Stream, binge, and play effortlessly
  • SMOOTH ACTION WITH ADAPTIVE-SYNC: Adaptive-Sync technology ensures fluid action sequences and rapid response time. Every frame will be rendered smoothly with crystal clarity and without stutter
  • INCREDIBLE CONTRAST: The VA panel produces brighter whites and deeper blacks. You get true-to-life images and more gradients with 16.7 million colors
  • THE PERFECT VIEW: The 178/178 degree extra wide viewing angle prevents the shifting of colors when viewed from an offset angle, so you always get consistent colors
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({
  args: ['--proxy-server=http://proxy.example:3128']
});
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 900, deviceScaleFactor: 1 });
await page.goto('https://example.com', {
  waitUntil: 'networkidle2',
  timeout: 90000
});
await page.screenshot({ path: 'page.png', fullPage: true });
await browser.close();

Page.screenshot() supports fullPage, a rectangular clip, type, JPEG quality, path, omitBackground, and binary or base64 encoding.

await page.screenshot({
  path: 'card.jpg',
  type: 'jpeg',
  quality: 82,
  clip: { x: 80, y: 120, width: 900, height: 600 }
});

const base64 = await page.screenshot({ encoding: 'base64' });

Proxy authentication in Puppeteer

Keep credentials out of command lines and logs. Chromium proxy authentication details vary by proxy type and deployment; use your proxy provider’s supported authentication flow, verify the egress address, and treat an authentication failure as a routing problem before debugging page rendering.

Verify that the request used the proxy

  1. Start the browser with the intended proxy and navigate to an IP-check endpoint that you control or trust.
  2. Record the observed public egress IP, response status, and final URL.
  3. Compare that IP with a direct request from the same machine. They should differ when the proxy is routing traffic.
  4. Only then capture the target page.

Verification should be a separate diagnostic step, not a value inferred from the screenshot. A proxy can be bypassed by incorrect launch settings, a malformed scheme, or a job that accidentally uses another browser context.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Handle readiness, consent, and blocked pages

Dynamic content

Wait for a stable selector, a specific API response, or an application-ready signal. A fixed delay is a fallback, not proof that all content is ready.

Cookie banners and login walls

Accept or dismiss consent deliberately and authenticate with a controlled account when required. Otherwise the screenshot records the banner or login state that the proxied visitor receives.

Bot checks and CAPTCHAs

A proxy does not guarantee access. Challenges, blank responses, and rate limits can be caused by the destination, the proxy’s reputation, or request volume. Do not attempt to defeat a CAPTCHA; diagnose the route, comply with the site’s access rules, or obtain authorized access.

Rank #3
Sale
Dell 24 Monitor - SE2426H - 23.8-inch FHD (1920x1080) 144Hz 1ms Display, in-Plane Switching (IPS) Technology, AMD FreeSync™, TÜV 3-Star 2X HDMI, Tilt
  • Clear visuals. Fluid motion: A 144Hz refresh rate and 1ms MPRT deliver smooth, tear‑free motion across work, gaming, and streaming for clearer, more fluid viewing.
  • Eye comfort: TÜV Rheinland 3‑star* certification reduces harmful blue light while preserving stunning color quality without compromise. *TÜV Rheinland 3-star eye comfort certification.
  • Wide viewing angle: Get consistent views across a wide 178° /178° viewing angle.
  • In-Plane Switching (IPS): See excellent color accuracy and consistency across wide viewing angles with In-plane Switching (IPS) technology.
  • Ultra-thin bezels: Maximize your viewing experience with thin bezels.

Lazy-loaded images and long pages

Full-page capture can expose content that is loaded only while scrolling. If images remain absent, scroll deliberately or wait for the image selectors before taking the screenshot.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Performance, reliability, and cost considerations

  • Route latency: A distant or congested proxy increases navigation and screenshot time. Set a timeout that reflects the route instead of failing fast at a default value.
  • Concurrency: Run only as many simultaneous pages as the proxy and destination can support. Excess concurrency causes throttling, connection failures, and inconsistent render timing.
  • File size: PNG is best for exact UI detail; WebP or JPEG usually reduces transfer and storage size. Choose quality deliberately for JPEG.
  • Determinism: Fix viewport, device scale, locale, timezone, cookies, and authentication state when comparing screenshots.
  • Diagnostics: Record the final URL, status, elapsed time, proxy route identifier, and readiness condition. Never record secrets.
  • Billing: Browser automation consumes compute and proxy traffic even when a destination returns a blank page or challenge. If you operate at volume, account for both resources separately.

Troubleshooting checklist

Proxy connection refused or timeout

Confirm the scheme, hostname, and port; test the proxy independently; increase the navigation timeout for slow routes; and check whether the proxy allows your source IP.

407 Proxy Authentication Required

The proxy rejected credentials. Verify the username and password through environment variables, ensure they belong to the selected endpoint, and do not include accidental whitespace. Keep the credentials out of logs.

The observed IP is unchanged

Check that the proxy was supplied to the browser or context actually creating the page. Look for a second browser launch, an inherited context, or a malformed SOCKS/HTTP scheme.

The screenshot is a blank page

Capture the final URL and status, inspect console and page errors, wait for the application-ready selector, and test the same route in a headed browser. A blank response can be a destination or proxy failure rather than a screenshot API error.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Samsung 27" Essential S3 (S36GD) Series FHD 1800R Curved Computer Monitor
  • CURVED FOR ENHANCED ENGAGEMENT: An immersive viewing experience with a curved monitor that wraps more closely around your field of vision; It creates a wider view, enhancing depth perception and minimizing peripheral distraction
  • SMOOTH PERFORMANCE FOR SEAMLESS CONTENT: Stay in the action when playing games, watching videos, or working on creative projects; The 100Hz refresh rate reduces lag and motion blur so you don't miss a thing in fast-paced moments¹
  • MORE GAMING POWER: Gain the edge with optimizable game settings; Color and image contrast can be adjusted to see scenes more vividly and spot enemies hiding in the dark; Game Mode adjusts any game to fill the screen so you can view every detail²
  • KEEP IT EASY ON THE EYES: Care for your eyes and stay comfortable, even during long sessions; Advanced eye comfort technology certified by TÜV reduces eye strain by minimizing blue light and reducing irritating screen flicker²
  • INCREASED VERSATILITY: Connect to more; Plug devices straight into your monitor for increased flexibility, making your computing environment even more convenient

Images or fonts are missing

Wait for the relevant resources, inspect failed requests, and check whether the proxy blocks resource types or the destination requires a header, cookie, or authorization token.

Only part of the page appears

Use fullPage: true in Playwright or Puppeteer, ensure lazy content has loaded, and avoid confusing a viewport screenshot with a document screenshot.

Unexpected consent or chat overlays

Handle the overlay in the script before capture, or hide a known selector only when that reflects your measurement goal. Removing it changes what the screenshot represents.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

ScreenshotNeo provides a website screenshot API and MCP server. One request returns a PNG, JPEG, WebP, or PDF, while the service handles browser setup for you. It accepts cookie and consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For API parameters, options, and authentication, see the ScreenshotNeo documentation.

cURL

curl -G "https://api.screenshotneo.com/v1/shot" 
  -d access_key=YOUR_API_KEY 
  --data-urlencode url=https://stripe.com 
  -o shot.webp

Python

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
    timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
const body = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', body));

ScreenshotNeo also supports full-page and element capture, dark mode, device presets and custom viewports, retina scale, PDF paper and page-range settings, custom CSS and JavaScript, clicks, selector waits, delays, network-idle waits, request blocking, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, configurable caching, signed image links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, an OpenAPI specification, and parameter names used by other screenshot APIs.

Best Value
Sale
Sceptre New 22-Inch Gaming Monitor, FHD 1080p, Up to 144Hz, HDMI, DisplayPort, Built-in Speakers, Machine Black (E225W-FW144 Series, 2026)
  • 【INTEGRATED SPEAKERS】Whether you're at work or in the midst of an intense gaming session, our built-in speakers provide rich and seamless audio, all while keeping your desk clutter-free.
  • 【EASY ON THE EYES】 Protect your eyes and enhance your comfort with Blue-Light Shift technology. This feature reduces harmful blue light emissions from your screen, helping to alleviate eye strain during long hours of use and promoting healthier viewing habits.
  • 【WIDEN YOUR PERSPECTIVE】Our sleek minimal bezel design ensures undivided attention. The nearly bezel-free display seamlessly connects in a dual monitor arrangement, delivering an unobstructed view that lets you focus on more at once, completely distraction-free.

Plans include 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000 shots. Growth is $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing provides two months free, and every feature is included on every plan. Create a free ScreenshotNeo account to get the 1,000 monthly screenshots without a card.

Frequently Asked Questions

Can I use a SOCKS proxy for a screenshot?

Yes. Playwright accepts a SOCKSv5 proxy server in its proxy configuration. Confirm the exact scheme and endpoint supplied by your proxy provider.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Should I use full-page capture for visual monitoring?

Usually not. A fixed viewport is more stable for monitoring; use full-page capture when the complete document is the thing being measured.

Why does a proxied screenshot differ from a direct screenshot?

The route can change geolocation, cookies, authentication, consent state, bot checks, latency, and server-selected content. Rendering is still performed by the browser, so proxying does not normalize those differences.

How can I return the image from my own API instead of saving a file?

Puppeteer can return screenshot bytes or base64 with its encoding option. For a hosted workflow, ScreenshotNeo’s HTTP response can be streamed or saved by your application.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.