iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Run the screenshot browser somewhere that can reach the protected site, then use a scheduler to launch it. A self-hosted runner already on the VPN-connected network is often the simplest route; a hosted runner also works if you deliberately connect it to the private network first. Playwright can navigate to the site and save an image, but a public screenshot endpoint cannot reach a private URL unless it has an authorized path into that network.
How the pieces fit together
There are three separate jobs: the scheduler starts the workflow, the workflow establishes or inherits private-network access, and browser automation captures the page. The connection must be ready before the browser navigates. After capture, store the image with a timestamp so scheduled runs do not overwrite one another.
- Choose an execution host. Use a machine already connected to the site’s network, or a hosted runner with an approved private-network connection.
- Establish access. Ensure the workflow identity is permitted to reach only the required private resources.
- Capture the page. Launch a browser, navigate to the target, wait for its meaningful ready condition, and save the screenshot.
- Schedule and retain. Configure recurring execution and an output location and retention policy appropriate to your monitoring needs.
The exact VPN setup, login method, readiness condition, cadence, and storage destination depend on your environment; the example below shows the capture step, not a universal VPN configuration.
Choose where the browser runs
Self-hosted runner on a connected machine
A self-hosted runner can run on a machine that already has authorized access to the site, such as a server or an existing VPN-connected computer. GitHub notes that the machine needs sufficient hardware resources for the workflow and may need access to additional network resources (GitHub self-hosted runner documentation). This avoids adding a new network path, but you maintain the host and must keep it able to communicate with GitHub Actions.
#1 Best Overall
- 【Five Gigabit Ports】1 Gigabit WAN Port plus 2 Gigabit WAN/LAN Ports plus 2 Gigabit LAN Port. Up to 3 WAN ports optimize bandwidth usage through one device.
- 【One USB WAN Port】Mobile broadband via 4G/3G modem is supported for WAN backup by connecting to the USB port. For complete list of compatible 4G/3G modems, please visit TP-Link website.
- 【Abundant Security Features】Advanced firewall policies, DoS defense, IP/MAC/URL filtering, speed test and more security functions protect your network and data.
- 【Highly Secure VPN】Supports up to 20× LAN-to-LAN IPsec, 16× OpenVPN, 16× L2TP, and 16× PPTP VPN connections.
- Security - SPI Firewall, VPN Pass through, FTP/H.323/PPTP/SIP/IPsec ALG, DoS Defence, Ping of Death and Local Management. Standards and Protocols IEEE 802.3, 802.3u, 802.3ab, IEEE 802.3x, IEEE 802.1q
A dedicated mini PC is not required: use an existing suitable machine if it meets the runner and browser workload’s needs.
Hosted runner with private-network access
GitHub-hosted runners have public internet access by default; they do not inherit your workstation’s VPN session. GitHub documents ways to connect hosted runners to private network resources, including overlay approaches such as WireGuard (GitHub private-networking documentation). Tailscale documents a GitHub Action that connects workflow steps to a tailnet, with access governed by the permissions assigned to the workflow identity or tag (Tailscale GitHub Action documentation).
Use the network method approved for the site, grant the workflow least-privilege access, and do not expose the site publicly merely to make the capture work.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchRank #2
- 【AC1200 Dual-band Wireless Router】Simultaneous dual-band with wireless speed up to 300 Mbps (2.4GHz) + 867 Mbps (5GHz). 2.4GHz band can handles some simple tasks like emails or web browsing while bandwidth intensive tasks such as gaming or 4K video streaming can be handled by the 5GHz band.*Speed tests are conducted on a local network. Real-world speeds may differ depending on your network configuration.*
- 【Easy Setup】Please refer to the User Manual and the Unboxing & Setup video guide on Amazon for detailed setup instructions and methods for connecting to the Internet.
- 【Pocket-friendly】Lightweight design(145g) which designed for your next trip or adventure. Alongside its portable, compact design makes it easy to take with you on the go.
- 【Full Gigabit Ports】Gigabit Wireless Internet Router with 2 Gigabit LAN ports and 1 Gigabit WAN ports, ideal for lots of internet plan and allow you to connect your wired devices directly.
- 【Keep your Internet Safe】IPv6 supported. OpenVPN & WireGuard pre-installed, compatible with 30+ VPN service providers. Cloudflare encryption supported to protect the privacy.
Capture a screenshot with Playwright
Install Playwright and its browser on the runner, then run a script after network access is available. Playwright’s Page API supports navigation and saving a screenshot to a path (Page screenshot API).
import { chromium } from 'playwright';
const url = process.env.TARGET_URL;
if (!url) throw new Error('Set TARGET_URL');
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60_000 });
// Replace this with a selector or condition that means the page is ready
// for your site; network-idle is not suitable for every application.
await page.waitForTimeout(1500);
const stamp = new Date().toISOString().replaceAll(':', '-');
await page.screenshot({ path: `screenshots/site-${stamp}.png`, fullPage: true });
} finally {
await browser.close();
}
Provide TARGET_URL through the workflow environment or a secret-backed configuration. The example uses a short delay only as a placeholder for a site-specific readiness check; for a stable page, prefer waiting for a meaningful selector such as a dashboard heading or loaded status element. If the site requires authentication, use its approved login or session mechanism and keep credentials out of source code and logs.
Choose the capture shape deliberately
- Use a fixed viewport for monitoring a particular screen layout; set the same dimensions on every run.
- Use
fullPage: truewhen the complete document matters. A viewport capture is usually more appropriate for checking the visible first screen. - Wait for content that matters, not merely a successful navigation event. A page can respond before client-side data or images are ready.
- Use a distinct timestamped filename or a deliberate versioning strategy to preserve history rather than silently replacing every prior image.
Schedule the workflow
In GitHub Actions, a workflow can be triggered by a cron schedule. The following illustrates where to put the capture step; add the runner setup, browser installation, private-network connection, and artifact or storage upload that match your environment.
Rank #3
- New-Gen WiFi Standard – WiFi 6(802.11ax) standard supporting MU-MIMO and OFDMA technology for better efficiency and throughput.Antenna : External antenna x 4. Processor : Dual-core (4 VPE). Power Supply : AC Input : 110V~240V(50~60Hz), DC Output : 12 V with max. 1.5A current.
- Ultra-fast WiFi Speed – RT-AX1800S supports 1024-QAM for dramatically faster wireless connections
- Increase Capacity and Efficiency – Supporting not only MU-MIMO but also OFDMA technique to efficiently allocate channels, communicate with multiple devices simultaneously
- 5 Gigabit ports – One Gigabit WAN port and four Gigabit LAN ports, 10X faster than 100–Base T Ethernet.
- Commercial-grade Security Anywhere – Protect your home network with AiProtection Classic, powered by Trend Micro. And when away from home, ASUS Instant Guard gives you a one-click secure VPN.
name: Scheduled private-site screenshot
on:
schedule:
- cron: '15 * * * *'
workflow_dispatch:
jobs:
capture:
# Select a runner that can reach the site after network setup.
runs-on: self-hosted
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: npm ci
- name: Capture
env:
TARGET_URL: ${{ secrets.TARGET_URL }}
run: node capture.mjs
# Add an upload step if screenshots must persist outside the runner.
This sample assumes a self-hosted runner whose network access is already configured. For a hosted runner, insert the approved private-network connection step before capture and ensure its credentials are stored using the network provider’s documented secret and access controls. GitHub’s self-hosted runner guidance covers host requirements; its private-network documentation describes hosted-runner connection approaches.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Keep recurring captures useful and comparable
Visual output can change with the operating system, browser version, browser settings, hardware, power source, and headless mode. Playwright recommends using the same environment for a baseline and later comparisons (Playwright visual comparisons documentation).
- Pin or otherwise keep the runner image, Playwright version, browser version, viewport, and capture settings consistent.
- Keep the same headless mode and host class for comparison runs where possible.
- Use predictable filenames and timestamps, and choose how long to retain old images.
- Monitor workflow failures separately from visual changes so a VPN outage is not mistaken for a site redesign.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. A single request can return an image or PDF, but a VPN-only site still needs to be reachable through a network path the service supports; verify private-network access before relying on it for this target.
Rank #4
- 【DUAL BAND WIFI 7 TRAVEL ROUTER】Products with US, UK, EU, AU Plug; Dual band network with wireless speed 688Mbps (2.4G)+2882Mbps (5G); Dual 2.5G Ethernet Ports (1x WAN and 1x LAN Port); USB 3.0 port.
- 【NETWORK CONTROL WITH TOUCHSCREEN SIMPLICITY】Slate 7’s touchscreen interface lets you scan QR codes for quick Wi-Fi, monitor speed in real time, toggle VPN on/off, and switch providers directly on the display. Color-coded indicators provide instant network status updates for Ethernet, Tethering, Repeater, and Cellular modes, offering a seamless, user-friendly experience.
- 【OpenWrt 23.05 FIRMWARE】The Slate 7 (GL-BE3600) is a high-performance Wi-Fi 7 travel router, built with OpenWrt 23.05 (Kernel 5.4.213) for maximum customization and advanced networking capabilities. With 512MB storage, total customization with open-source freedom and flexible installation of OpenWrt plugins.
- 【VPN CLIENT & SERVER】OpenVPN and WireGuard are pre-installed, compatible with 30+ VPN service providers (active subscription required). Simply log in to your existing VPN account with our portable wifi device, and Slate 7 automatically encrypts all network traffic within the connected network. Max. VPN speed of 100 Mbps (OpenVPN); 540 Mbps (WireGuard). *Speed tests are conducted on a local network. Real-world speeds may differ depending on your network configuration.*
- 【PERFECT PORTABLE WIFI ROUTER FOR TRAVEL】The Slate 7 is an ideal portable internet device perfect for international travel. With its mini size and travel-friendly features, the pocket Wi-Fi router is the perfect companion for travelers in need of a secure internet connectivity on the go in which includes hotels or cruise ships.
For a reachable URL, this cURL request captures a screenshot:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Replace the example URL with your target. See the ScreenshotNeo API documentation for request options. Cookie banners, popups, and chat widgets are removed before capture; bot checks, blank pages, and failed loads are not billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots per month with no card, and paid plans start at $5 for 3,000.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Sign up for 1,000 free screenshots a month, with no card required.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Troubleshooting
The browser cannot open the URL
First test reachability from the runner itself, not your laptop. Confirm the VPN or private-network step completed before navigation, the runner has the required route and DNS resolution, and its identity is authorized for that resource. A hosted runner does not automatically join your local VPN.
Best Value
- Next-Gen Gigabit Wi-Fi 6 Speeds: 2402 Mbps on 5 GHz and 574 Mbps on 2.4 GHz bands ensure smoother streaming and faster downloads; support VPN server and VPN client¹
- A More Responsive Experience: Enjoy smooth gaming, video streaming, and live feeds simultaneously. OFDMA makes your Wi-Fi stronger by allowing multiple clients to share one band at the same time, cutting latency and jitter.²
- Expanded Wi-Fi Coverage: 4 high-gain external antennas and Beamforming technology combine to extend strong, reliable, Wi-Fi throughout your home.
- Improved Battery Life: Target Wake Time helps your devices to communicate efficiently while consuming less power.
- Improved Cooling Design: No heat ups, no throttles. A larger heat sink and redefined case design cools the WiFi 6 system and enables your network to stay at top speeds in more versatile environments.
Navigation times out or shows a blank page
Check whether the site is reachable from the runner and whether authentication, a redirect, or an interstitial is blocking the request. Increase the navigation timeout only after verifying the network path; a longer timeout does not fix missing access. Wait for the site’s actual content selector if navigation completes before the page is ready.
The screenshot differs between runs
Compare browser and Playwright versions, operating system or runner image, viewport, device scale, and headless configuration. Differences in those conditions can change rendered pixels even when the site itself has not changed.
Recommended Free Tools
The scheduled job runs but images disappear
Files saved on a runner are not necessarily durable across jobs or host cleanup. Add an artifact or storage upload step and define retention explicitly. Confirm output directories exist and that the runner process can write to them.
The private-network connection works locally but not in CI
Local VPN credentials and routes are not implicitly available in CI. Configure the workflow’s connection using the provider’s documented method, verify identity and access policy, and avoid printing secrets or connection tokens in logs.
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.

