CAPTCHA detection now flags the markerless amazon.com soft wall: a HTTP-200 page whose <title> is a site-name PREFIX ("Amazon.com : Product : Category") with a real buy-box price and main image but no product blocks (2026-10-20 V1 probe, e.g. B00E4GACB8). Since that prefix shape is also the standard title of a NORMAL .com product page (0.1.5 regression run 3lPMxZbDShbU6My0W flagged 4/4 normal items on the title alone), the soft wall is identified only when the prefix title carries no product-block signal either (no #productTitle, no og:title). evaluateAmazonDetail additionally rejects any parsed title that still starts with the site-name prefix (blocked / soft_page_title) — a soft page that survives rotation is delivered free instead of billed with a polluted title.
CAPTCHA detection now flags the localized HTTP-200 "continue shopping" soft interstitial (/errors_page/validateCaptcha form / field-keywords token) that amazon.de and amazon.co.uk serve to non-browser clients; previously such pages were misclassified as unavailable_in_region instead of blocked.
CAPTCHA rotation switches to a mobile profile: the retry uses a mobile Safari UA and the /gp/aw/d/<asin> path, which amazon.de / amazon.co.uk still serve in full (verified on 6/6 de+uk probe items). The first attempt keeps the desktop profile, so marketplaces that don't wall desktop requests (.com, .co.jp) pay no extra requests.
parseAmazonDetailHtml reads the mobile page's main image (#main-image + data-a-hires); mobile pages otherwise match the existing widget/price selectors.
evaluateAmazonDetail grades a page with a title but no main image as blocked (no_product_data) instead of unavailable_in_region — a challenge shell whose only signal is the site-name <title> can no longer masquerade as an unpriced product.
Mobile detail fetches get a 45s timeout (≈2.5MB pages through residential exits).