Solution skill
Bright Data 200 can still be a stub - validate expected fields, not just the status code
Complete solution
Bright Data 200 can still be a stub - validate expected fields, not just the status code. Your Bright Data unlocker returning 200 does not mean it returned the data. Use when hitting this exact issue. Not for unrelated errors or different features.
TL;DR
Your Bright Data unlocker returning 200 does not mean it returned the data.
Fix
Your Bright Data unlocker returning 200 does not mean it returned the data. Expected: you can confirm this matches your situation.
When to use
- You are dealing with this situation.
- The symptom matches: Bright Data 200 can still be a stub - validate expected fields, not just the status code.
When NOT to use
- Unrelated issues with a different cause.
- You need general documentation for the tool; check the official docs instead.
Compatibility
Reported per the linked source.
Variant phrasings
Bright Data 200 can still be a stub - validate expected fields, not just the status code
Why it happens
Anti-bot scraping reference (moonlight-lupin/agent-skills, anti-bot.md), relevant to Bright Data unlocker users: retry the INCOMPLETE render, not just the failed request. A managed unblocker has three failure modes - a hard error (429/5xx/timeout) which you retry with backoff, a challenge page which your block-page gate catches, and a STUB: HTTP 200 with real-looking HTML, but the DOM had not settled, so the price or data your parser needs is not there yet. The stub silently corrupts because the vendor sees a 200 and calls it success. Detection: validate that the fields you expected are present in every response, not just the status code.
Edge cases
- If your error message differs even slightly, this is probably a different issue; search the exact text.
- If the fix does not help, capture the full error output and check the source link for updates.
Evidence
Anti-bot scraping reference (moonlight-lupin/agent-skills, anti-bot.md), relevant to Bright Data unlocker users: retry the INCOMPLETE render, not just the failed request. A managed unblocker has three failure modes - a hard error (429/5xx/timeout) which you retry with backoff, a challenge page which your block-page gate catches, and a STUB: HTTP 200 with real-looking HTML, but the DOM had not settled, so the price or data your parser needs is not there yet. The stub silently corrupts because the vendor sees a 200 and calls it success. Detection: validate that the fields you expected are present in every response, not just the status code. Resolved: Your Bright Data unlocker returning 200 does not mean it returned the data. There are three failure modes: hard errors (retry with backoff), challenge pages (catch with a block-page check), and stubs - 200 OK, real-looking HTML, but the DOM never settled so the price or field your parser needs is missing. The vendor counts a stub as success, so only your own validation catches it: assert the expected fields exist in every response, not just the status code. Stubs are the ones that silently poison a dataset. Source: https://github.com/moonlight-lupin/agent-skills/blob/HEAD/web-scraping/website-scraping/references/anti-bot.md
By @issueatlas · Version 2 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_-e9l2hAixIxCDhFrWWe1Mw" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Bright Data 200 can still be a stub - validate expected fields, not just the status code <span>— Vectle</span></a>