The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Call page.setUserAgent() with the options-object form before navigating, then capture the page with page.screenshot(). If you need a mobile-style layout as well as a mobile user-agent, emulate a device before navigation: changing the user-agent alone does not set the viewport.
Set a user-agent before navigating
Install Puppeteer in your project if it is not already available, then use this ES module example. Replace the sample URL and user-agent string with the values for your test.
As an Amazon Associate I earn from qualifying purchases.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.setUserAgent({
userAgent: 'YOUR USER AGENT STRING',
});
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'screenshot.png' });
} finally {
await browser.close();
}
setUserAgent() returns a promise, so await it before goto() when the initial navigation should use that configuration. The screenshot guide demonstrates navigating and then saving an image with page.screenshot({ path: ... }). Its example uses networkidle2, but no single wait condition suits every page; select one that matches the page’s loading behavior. See the Puppeteer user-agent API and screenshot guide.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
The current API accepts an options object with optional userAgent, userAgentMetadata, and platform properties. The older positional form is marked obsolete in the API documentation. Check the documentation matching your installed Puppeteer version; the reviewed API page displayed v25.12.0.
#1 Best Overall
- Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
- Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
- CanaKit Turbine Black Case for the Raspberry Pi 5
- CanaKit Low Noise Bearing System Fan
- Mega Heat Sink - Black Anodized
User-agent override or device emulation?
Choose based on what you need to test. A user-agent string and viewport dimensions are separate settings; changing one does not automatically configure the other.
| Approach | What it configures | Use it when |
|---|---|---|
page.setUserAgent({ userAgent: '…' }) |
The browser’s configured user-agent value; the options object can also include metadata and platform. | You need to test a particular user-agent value and will set any viewport requirements separately. |
page.emulate(device) |
A device profile’s user-agent and viewport. | You want a documented device profile and its associated page dimensions. |
Puppeteer documents page.emulate(device) as a shortcut for setting the user-agent and viewport. Apply it before navigation: viewport changes can affect rendering, and the device-emulation guide notes that many sites do not expect a phone’s size to change after loading. For a custom user-agent, set an appropriate viewport separately if the target layout depends on screen dimensions. See the device-emulation guide.
Rank #2
- Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
- Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
- CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
- CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
- CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
Emulate a documented device profile
Import a profile from Puppeteer’s KnownDevices and emulate it before opening the URL:
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsimport puppeteer from 'puppeteer';
import { KnownDevices } from 'puppeteer';
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
const device = KnownDevices['iPhone 13'];
await page.emulate(device);
await page.goto('https://example.com', { waitUntil: 'networkidle2' });
await page.screenshot({ path: 'mobile.png' });
} finally {
await browser.close();
}
Use a profile name available in the KnownDevices list for your installed Puppeteer release. Device emulation is not simply a user-agent override: it also sets viewport dimensions.
Rank #3
- Not including the Raspberry Pi 5 (8GB), the Crowpi advanced version comes with the Raspberry Pi 5
- ELECROW Black Case for the Raspberry Pi 5, CrowPi is equipped with a 9-inch HD touchscreen along with a camera; All the regular components used in DIY electronics are packed into the CrowPi development board, such as LCD, LED matrix, buzzer, light sensor, PIR sensor, ultrasonic sensor, IR sensor, etc
- Raspberry Pi Sensors: The Crowpi raspberry pi 5 programming kit is jam-packed with lots of buttons such as 19 different sensors in a tidy easy to use package; You don't have to wait and wire things
- Build Quality: Solid ABS shell and well made components in one place make it strong and convenient to travel
- Programming Lessons: This raspberry pi 5 learning kit ships with step by step instructions and provides 21 lessons to take you through identifying components reading code and running it in the terminal
Choose the screenshot output
Save the full page to a file
For a standard image file, pass a path as in the examples. Puppeteer’s screenshot guide also supports capturing an individual element with ElementHandle.screenshot(). It attempts to scroll an element that is out of view into view by default, which is useful when you want a component rather than the whole page.
Use screenshot bytes or base64
The screenshot API’s default result is a Uint8Array. If the surrounding code needs a base64 string, use the API’s base64 encoding option; consult the screenshot API reference for the current option shape and return type.
Rank #4
- Fully assembled for plug-and-play operation
- Includes Raspberry Pi 5 with 8GB RAM
- 256 GB PCIe Pi NVMe SSD (Pre-loaded with Pi 64-Bit OS)
- M.2 HAT+
- CanaKit Turbine Black Case for the Pi 5
Troubleshoot unexpected results
- The first request appears to use the old user-agent: ensure
await page.setUserAgent(...)completes beforepage.goto(). Setting it after navigation cannot change the request that has already occurred. - The site still looks like a desktop page: a user-agent string does not set viewport dimensions. Use
page.emulate(device)before navigation or set a suitable viewport as well. - The page looks unlike a real phone or browser: the documented settings configure user-agent and viewport values, but they do not guarantee that every site will serve the same content it would to a real device. Validate the result on the target site.
- The screenshot is incomplete or times out: review the navigation wait condition for the site’s behavior.
networkidle2is an example, not a universal guarantee that a page’s content is ready. - Your older code uses positional arguments: switch to the options-object form of
setUserAgent(), since the positional form is marked obsolete in the current API documentation.
During a screenshot in a BrowserContext, operations such as creating or closing a page wait for the screenshot operation. page.bringToFront() does not wait for an existing screenshot operation; see the screenshot API reference if coordinating concurrent page work.
Or skip the browser setup
ScreenshotNeo offers a screenshot API and MCP server for developers. One GET request can return an image or PDF; for example, this cURL request saves a WebP screenshot:
Best Value
- 【What you Get】You will get 1*Pi 5 8GB Single Board,1*RasTech Case,1*Active Cooler,1*Screwdriver,1*Installation instructions,12-month free warranty, lifetime service, 24-hour prompt and friendly response.
- 【More Connectors】There are two USB 3.0 ports(5Gbps simultaneously) and two USB 2.0 ports, which triple total bandwidth ,support any combination of up to two cameras or displays. Peak SD card performance is doubled through support for the SDR104 high-speed mode. It provides a smooth desktop experience for you. Offer Gigabit Ethernet and a PCIe interface, along with dual-band Wi-Fi and Bluetooth 5.0/BLE wireless capability. The RasTech Pi 5 Kit use the new 27W 5.1V 5A USB-C power connector.
- 【 Support Dual 4Kp60 Display 】Each of the two microHDMI sockets can control a 4K display at 60 Hertz, now support HDR, offering super HD video for media streaming projects. RPi 5 is the first RPi model that comes with a PCI Express port (PCIe 2.0 x1 with 500 MB/s) to attach SSDs (requires separate M.2 HAT).
- 【 Excellent Chips And Applications】Pi 5 is a full-size Pi computer using silicon built in-house at Pi. The RP1 “southbridge” provides the bulk of the I/O capabilities for Pi 5. Pi 5 is more friendly and convenient in the development of Internet of Things, Web development, machine identification, automatic control and other electronic equipment applications and network.
- 【 Faster CPU, Better GPU 】 Pi 5 features a Broadcom BCM2712 64-bit quad-core Arm Cortex-A76 processor running at 2.4GHz, it delivers a 2–3× increase in CPU performance relative to RaspberryPi 4. The 800MHz VideoCore VII GPU is compatible to OpenGL ES 3.1 and Vulkan 1.2, substantial uplift in graphics performance. Pi 5 Offers lightning-fast CPU speed, a PCI Express interface, a Real Time Clock (RTC) and a power button and runs significantly cooler than Pi 4.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. Its clean-shot process accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets; those steps can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and responses identify the page verdict and billing status in headers. Its MCP server gives AI agents tools for taking screenshots, getting page information, and capturing PDFs.
The Free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Learn about ScreenshotNeo or sign up free for 1,000 screenshots a month, with no card required.
Frequently Asked Questions
Can I change the user-agent after navigating?
You can set it later for subsequent page behavior, but set and await it before navigation when the initial request needs that user-agent.
Does setting a mobile user-agent make Puppeteer render a mobile viewport?
No. Set viewport dimensions separately or use a device profile with page.emulate(device) before navigation.
Will a user-agent override make a site behave exactly as it would on a real device?
Not necessarily. Puppeteer documents the configuration, but does not guarantee identical site behavior; validate against the target site.
Quick Recap
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.




