Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsSome links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
HTTP 456 has no universal meaning. The IANA HTTP Status Code Registry leaves status codes 452–499 unassigned, so 456 is a private response chosen by an origin, CDN, web-application firewall, proxy, gateway or automation service. Treat it as a 4xx client-error response, then identify the component that generated it from the response body, headers and request path.
The reliable fix is not to blindly change the user agent or add retries. Capture the complete response, compare headful Chrome, headless Chrome, a direct command-line client and your production proxy, then correct the policy at the layer that emits 456.
What HTTP 456 means in Chrome
There is no standards-defined interpretation such as “rate limited,” “bot blocked” or “authentication failed.” RFC 7231 describes HTTP status codes as extensible; an unknown code in the 4xx range is handled as a client-error class response. A service can therefore use 456 for any private policy and document that meaning only in its own system.
Free tools Windows power users keep installed
One-click scans. No signup required.
That distinction matters in Chrome automation. A 456 may be generated by the website, its CDN or WAF, an outbound proxy, a gateway in front of the site, or a screenshot/automation service. A response generated by one of those layers is different from a browser network failure such as ERR_PROXY_CONNECTION_FAILED: the former has an HTTP status and usually headers and a body; the latter means Chrome did not receive an HTTP response.
#1 Best Overall
What the status does not prove
- It does not prove that the site is rate limiting you.
- It does not prove that headless Chrome is detected as a bot.
- It does not identify a proxy, CDN or origin without supporting headers, body text or routing evidence.
- It does not tell you whether a retry will succeed. Repeating a policy-blocked request can make the policy stricter.
Capture the complete 456 response first
Record enough information to reproduce the exact request. At minimum, save the URL, HTTP method, redirect chain, final status, response headers, response body, cookies, user agent, authentication state, proxy route and timestamp. Preserve vendor request IDs and policy identifiers; support teams can use them to find the decision that produced the response.
Command-line baseline
Run a direct request with redirects and headers visible. Use the same URL, method and authentication that your browser job uses.
curl -i -L --max-redirs 10 --compressed https://example.com/target
If authentication or a special method is required, add those deliberately rather than changing several variables at once. Save the body separately when it contains a challenge or policy explanation:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
curl -sS -D response.headers -o response.body -L https://example.com/target
Inspect Server, Via, Location, cache headers, request IDs and vendor-specific fields. A redirect that ends at 456 is different from a 456 on the first URL.
Playwright capture
This script logs every response, including redirects, and stores the body for the 456 response. It is intentionally observable rather than stealthy; use it in a controlled test account.
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage({
userAgent: 'Mozilla/5.0 (diagnostic)',
});
page.on('response', async response => {
const request = response.request();
console.log(response.status(), request.method(), response.url());
if (response.status() === 456) {
console.log(await response.allHeaders());
try {
console.log(await response.text());
} catch (error) {
console.error('Could not read response body:', error.message);
}
}
});
page.on('requestfailed', request => {
console.error('Network failure:', request.url(), request.failure());
});
await page.goto('https://example.com/target', { waitUntil: 'networkidle', timeout: 90000 });
await browser.close();
})();
In Puppeteer, attach a page.on('response', ...) listener in the same way and separately log requestfailed. In Selenium, enable performance or CDP logging and distinguish an HTTP response from a browser-level navigation exception.
Make headless Chrome observable
Chrome for Developers recommends launching headless mode with --remote-debugging-port. Use port 0 to let Chrome select an available port:
google-chrome --headless --remote-debugging-port=0 https://example.com/target
Chrome prints a DevTools WebSocket endpoint. From a headful Chrome window, open chrome://inspect, choose Configure if necessary, and inspect the live target. Check the Network panel for the request that returned 456, the redirect sequence, request and response headers, cookies, console errors and response body. This often reveals that the failing request is an API call or redirect rather than the document you expected.
Keep the diagnostic run comparable to production. Record Chrome version, viewport, locale, timezone, user agent, enabled extensions, JavaScript state, cookies, TLS errors and proxy settings. Change one variable per run so that a successful result identifies a cause rather than merely a different environment.
Compare the four execution paths
Run the same URL, method, credentials and user-agent policy through these paths:
| Path | What it isolates | Interpretation of a 456 |
|---|---|---|
| Headful Chrome, direct | Normal browser behavior without the production proxy | If it also fails, investigate the origin, CDN/WAF or account policy. |
| Headless Chrome, direct | Browser-mode differences such as cookies, JavaScript, redirects and TLS | If only this path fails, inspect what headless actually sends and executes. |
| Headless Chrome, production proxy | Proxy routing, credentials and intermediary policy | If the status appears only here, the proxy or its upstream policy is the prime suspect. |
| Command-line client, direct | Non-browser HTTP behavior | A failure here points away from browser rendering and toward network or origin policy. |
This matrix is a diagnostic inference, not a claim that any provider uses 456 in a particular way. The component that changes when the result changes is the one to examine first.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC 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 & 11Test proxy configuration deliberately
Chromium supports --proxy-server and --proxy-bypass-list. First run without a proxy if your network permits it. Then test the production route explicitly:
Rank #3
google-chrome --headless --remote-debugging-port=0
--proxy-server="http://proxy.example:8080"
https://example.com/target
For a narrowly scoped host test, use a bypass rule:
google-chrome --headless --remote-debugging-port=0
--proxy-server="http://proxy.example:8080"
--proxy-bypass-list="example.com"
https://example.com/target
Chromium also supports a direct fallback in a proxy list:
google-chrome --headless --proxy-server="http://proxy.example:8080,direct://" https://example.com/target
Do not leave a broad bypass in production: it changes routing and may expose traffic directly. Verify proxy scheme, credentials, DNS behavior, certificate interception and whether the intermediary injects its own body or headers. A proxy connection failure is not the same as an origin HTTP 456.
Recommended Free Tools
Identify the emitting layer
Origin or application
An origin-generated response often carries the application’s normal server headers, a body that names an account or API policy, and a request ID recognized by the site owner. Follow the documented API, authentication, robots, rate and allow-list process. Ask the provider to explain the request ID rather than guessing what 456 means.
CDN or WAF
Look for CDN/WAF branding, challenge markers, policy IDs, retry intervals or headers that differ from ordinary origin responses. Confirm whether the response appears before the browser receives the page or only after a redirect or script request. The provider’s documentation and support channel are authoritative because 456 is private to that provider.
Proxy or gateway
If direct requests succeed but the production route returns 456, check proxy credentials, route selection, egress IP policy, header rewriting and upstream access rules. Capture the proxy’s response headers and compare them with the direct response. Correct the intermediary policy or use an approved route; do not try to disguise traffic without authorization.
Headless-only behavior
When headful direct Chrome works but headless does not, compare cookies, JavaScript completion, redirect timing, TLS negotiation, viewport, locale, request headers and storage state. Use DevTools to verify what was actually sent. A missing consent cookie or an unfinished challenge can send automation to a policy endpoint that returns 456.
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 →Apply fixes without creating a new failure
- Confirm scope. Reproduce once with a saved URL, method, headers, cookies, proxy route and timestamp.
- Reduce variables. Remove the proxy only for a controlled comparison; do not simultaneously change user agent, credentials and browser version.
- Honor the policy. Authenticate as documented, obey published rate limits, complete approved challenges and request allow-listing when appropriate.
- Handle redirects and cookies. Persist the intended cookie jar, inspect every
Locationhop and wait for required JavaScript before declaring the page loaded. - Retry conservatively. Retry only transient transport failures or a provider-documented interval. Do not loop on an unexplained 456.
- Escalate with evidence. Send the provider the UTC timestamp, final URL, redirect chain, status, relevant headers, body, request ID and the four-path comparison.
Common symptoms and targeted fixes
| Symptom | Likely distinction | Next action |
|---|---|---|
| 456 only through the production proxy | Proxy, gateway or egress policy | Repeat with a scoped bypass, validate credentials and ask the proxy operator for the request ID. |
| 456 from direct curl, headful and headless clients | Origin, CDN/WAF or account policy | Read the body and headers; use the site’s API, authentication or allow-list process. |
| Headful succeeds; headless gets 456 | Cookies, JavaScript, redirects, TLS or request differences | Inspect the live target through DevTools and compare network events. |
| Final navigation is 456 after several redirects | Policy applied to a destination or challenge endpoint | Save each Location and identify which hop first changes status. |
| No HTTP status; Chrome reports a net error | Connection, certificate or proxy failure before HTTP | Debug DNS, certificates, proxy reachability and extensions separately. |
| Body is empty or generic | Intermediary may suppress details | Use headers, request IDs and a provider support channel; do not infer the policy from 456 alone. |
Performance, reliability and operational notes
Diagnostic runs should be low volume. A four-path comparison needs only one or a few requests per path; large retry loops can trigger the very policy you are investigating. Reuse a consistent browser profile when testing cookies, but create a clean profile when you need to rule out stale state. Record timings for DNS, connection, redirects and document load so a timeout is not mistaken for a 456.
Cache behavior can obscure changes. Compare cache headers and request IDs, and repeat only when the provider’s policy allows it. Keep sensitive cookies, authorization headers and response bodies out of shared logs. If a provider gives a retry interval, honor it exactly; otherwise treat an unexplained 456 as non-retryable until its meaning is confirmed.
Or skip the browser setup
If your goal is a dependable page image or PDF rather than diagnosing a site policy, ScreenshotNeo provides a single screenshot API request. It accepts consent banners as a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture; each cleanup step can be disabled. Bot checks or CAPTCHAs, 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. Its MCP server exposes take_screenshot, get_page_info and capture_pdf for Claude, Cursor and other MCP clients.
See the ScreenshotNeo API documentation for parameters and authentication. A one-call cURL example is:
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)
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}`);
The Free plan includes 1,000 screenshots each month with no card. Paid plans start at $5 for 3,000 screenshots, and every feature is available on every plan. Create a free ScreenshotNeo account to try the 1,000 included shots.
FAQ
Can I define my own meaning for 456?
You can document what your service means internally, but clients should rely on that service’s response body, headers and support documentation. There is no interoperable meaning across the web.
Should an HTTP client automatically retry 456?
Not by default. Retry only when the responding provider documents a safe interval and condition. Otherwise preserve the evidence and resolve the emitting policy.
Does changing from headless to headful permanently solve the problem?
No. It may show that browser mode is one differing variable, but the underlying cause could still be cookies, JavaScript, redirects, TLS, a proxy or an account rule.
Frequently Asked Questions
Is HTTP 456 an official status code?
No. IANA lists 452–499 as unassigned, so 456 is a private status chosen by the responding service or intermediary.
How can I tell whether a proxy returned 456?
Run the same request directly and through the proxy, then compare status, headers, body, redirect chain and request IDs. A status that appears only on the proxied path implicates that route, subject to confirmation from its operator.
Will a screenshot service bypass a site’s 456 policy?
Not necessarily. A 456 can be emitted by the origin, CDN/WAF or an intermediary. A screenshot service can avoid local browser setup, but the target’s policy still determines whether a page is available.
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.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →

