Fix: smart_crawl uses extraction_type=html internally. CF Turnstile challenge pages return 200 with 40KB+ HTML, bypassing _is_js_shell detection. Crawl never escalated to the stealthy browser. Fix: add CF challenge markers to JS shell detection. Verified: smart_crawl on nowsecure.nl now uses http->stealthy escalation. 806 tests.