Passa a Pro

Separate Network Failures from Parsing Failures in Web Checks

A scheduled page check can report an empty result even when the website is working. The mistake is often in the result model: a connection failure, a redirect, and a missing price element all become the same blank cell. Keeping these stages separate makes a small monitoring job much easier to debug.

Give each stage its own outcome

Start with five stages: connection, HTTP response, page identity, rendering, and extraction. A connection timeout means no useful response arrived within your deadline. An HTTP error means a response arrived but should not be treated as a successful content observation. A page identity check asks whether the final page is the one you intended to inspect. Rendering confirms that any required content has loaded. Extraction reads the field only after those checks pass.

Use separate outcomes such as connection_timeout, http_error, unexpected_page, render_incomplete, field_missing, and observed. A missing field on the correct page is useful evidence; it is not a zero value. Likewise, a successful HTTP status does not prove that you received the product page instead of a consent screen.

Record enough context to reproduce the result

Store the requested URL, final URL, observation time in UTC, HTTP status when available, stage, and a short reason. Include the requested locale and the network profile label if your check uses one. Record the page language and currency actually observed separately from the values you requested.

Keep evidence references rather than copying an entire browser session into a spreadsheet. A relevant screenshot or small HTML excerpt can explain an extraction failure. Remove session tokens, credentials, and personal data before sharing an example with a colleague. Define a retention period so debugging artifacts do not accumulate indefinitely.

Change one variable at a time

If a field disappears after a deployment, compare the same URL with the previous selector before changing the network configuration. If the final URL changed, inspect the redirect first. If the page is correct but the content appears later, adjust the content-ready condition rather than simply extending every timeout.

Regional checks need the same discipline. Network location is only one input: account state, cookies, language settings, delivery destination, and cached content can also influence a page. A residential connection does not establish a shopper's delivery address or guarantee a particular price. Keep these inputs fixed when comparing network profiles, then document any remaining uncertainty.

Retry the failing stage deliberately

One limited retry may help distinguish a transient connection problem from a persistent failure. Repeatedly fetching a page will not repair a broken selector. Stop at access restrictions, honor Retry-After where supplied, and keep a per-site request budget. A blocked check should remain visible as blocked rather than being silently replaced with the last successful value.

When exporting a result, preserve both the last observation and its age. A dashboard may show the most recent known value alongside a stale label, but downstream calculations should be able to exclude it. This prevents an old observation from appearing to be fresh merely because the scheduled job ran again.

A practical handoff rule

Before assigning an incident, write one sentence containing the stage, the observed behavior, and the next check. For example: “Extraction failed on the expected page; the price selector matched no elements; compare the current page markup with the saved excerpt.” This is more actionable than “the proxy failed” when the network request actually succeeded.

By the BestProxy team. BestProxy provides residential proxies; this checklist focuses on the surrounding workflow that makes web observations interpretable. Cover image: BestProxy official website.