1212//!
1313//! [`KernelCdpAdapter`] covers Kernel ([onkernel.com](https://kernel.sh)), which
1414//! has no *static* endpoint: it `POST`s `/browsers` to mint a per-session
15- //! `cdp_ws_url`, drives it (via `spider::Website` by default, or raw chromey
16- //! [`drive_cdp`] when `provider_options.kernel.spider_disabled` is set ), then
15+ //! `cdp_ws_url`, drives it (raw chromey [`drive_cdp`] by default, or
16+ //! `spider::Website` when `provider_options.kernel.spider = true` ), then
1717//! `DELETE`s the session (Kernel bills per running second). It reports
1818//! [`AdapterKind::Custom`]`("kernel_cdp")`.
1919//!
@@ -286,10 +286,11 @@ const KERNEL_DEFAULT_CREATE_URL: &str = "https://api.onkernel.com/browsers";
286286/// *running* second, so releasing promptly is a cost guarantee, not just hygiene.
287287///
288288/// Two drivers, switchable per request:
289- /// - **default** — [`spider::Website`] via [`scrape_via_spider`]: crawl() +
290- /// subscription (streams pages to the user), stealth/fingerprint off.
291- /// - **`provider_options.kernel.spider_disabled = true`** — raw chromey
292- /// ([`drive_cdp`]): direct CDP, more control for bespoke automation.
289+ /// - **default** — raw chromey ([`drive_cdp`]): direct CDP, lean and fast.
290+ /// - **`provider_options.kernel.spider = true`** — [`spider::Website`] via
291+ /// [`scrape_via_spider`]: crawl() + subscription (streams pages to the user),
292+ /// stealth/fingerprint off. Requires spider's `chrome_intercept` feature for
293+ /// page-completion detection over the remote browser.
293294///
294295/// Browser config is tunable per request via `provider_options.kernel` (e.g.
295296/// `{ "headless": false, "gpu": true, "proxy_id": "...", "viewport": {...} }`),
@@ -397,12 +398,13 @@ impl Adapter for KernelCdpAdapter {
397398 )
398399 . await ?;
399400
400- // ---- 2. Drive the remote browser. Default path is spider::Website —
401- // its crawl() + subscription is how rendered pages stream back, and it
402- // carries the quality steps. Opt out per request with
403- // `provider_options.kernel.spider_disabled = true` to drive raw chromey
404- // directly (more control for bespoke automation; no spider wrapper).
405- let driven = if kernel_spider_disabled ( req) {
401+ // ---- 2. Drive the remote browser. Default is raw chromey ([`drive_cdp`])
402+ // — direct CDP, lean and fast. Opt into the spider::Website path
403+ // (crawl() + subscription, quality steps) per request with
404+ // `provider_options.kernel.spider = true`.
405+ let driven = if kernel_use_spider ( req) {
406+ scrape_via_spider ( & session. cdp_ws_url , req. url . as_str ( ) , route. timeout ( ) , cancel) . await
407+ } else {
406408 drive_cdp (
407409 & session. cdp_ws_url ,
408410 req. url . as_str ( ) ,
@@ -411,8 +413,6 @@ impl Adapter for KernelCdpAdapter {
411413 cancel,
412414 )
413415 . await
414- } else {
415- scrape_via_spider ( & session. cdp_ws_url , req. url . as_str ( ) , route. timeout ( ) , cancel) . await
416416 } ;
417417
418418 // ---- 3. On success, read Kernel's own usage meter for actual-cost
@@ -479,7 +479,7 @@ fn kernel_cost_dollars(uptime_ms: u64, headless: bool, gpu: bool) -> f64 {
479479
480480/// Keys the adapter consumes from `provider_options.kernel` as its own control
481481/// flags — they must NOT be forwarded to Kernel's create-browser API.
482- const KERNEL_CONTROL_KEYS : & [ & str ] = & [ "spider_disabled " ] ;
482+ const KERNEL_CONTROL_KEYS : & [ & str ] = & [ "spider " ] ;
483483
484484/// Default create body (cheap + stealthy), with `provider_options.kernel`
485485/// layered over the top so callers can flip `headless`, request `gpu`, pin a
@@ -501,12 +501,12 @@ fn build_kernel_create_body(req: &ScrapeRequest) -> serde_json::Value {
501501 body
502502}
503503
504- /// Whether this request opted out of the spider driver (`provider_options.kernel
505- /// .spider_disabled = true`) to drive raw chromey directly instead .
506- fn kernel_spider_disabled ( req : & ScrapeRequest ) -> bool {
504+ /// Whether this request opted into the spider::Website driver
505+ /// (`provider_options.kernel.spider = true`). Default is raw chromey.
506+ fn kernel_use_spider ( req : & ScrapeRequest ) -> bool {
507507 req. provider_options
508508 . get ( "kernel" )
509- . and_then ( |o| o. get ( "spider_disabled " ) )
509+ . and_then ( |o| o. get ( "spider " ) )
510510 . and_then ( |v| v. as_bool ( ) )
511511 . unwrap_or ( false )
512512}
@@ -803,25 +803,25 @@ mod tests {
803803 let mut req = ScrapeRequest :: get ( Url :: parse ( "https://example.com/" ) . unwrap ( ) ) ;
804804 req. provider_options . insert (
805805 "kernel" . to_string ( ) ,
806- serde_json:: json!( { "spider_disabled " : true , "headless" : false } ) ,
806+ serde_json:: json!( { "spider " : true , "headless" : false } ) ,
807807 ) ;
808808 let body = build_kernel_create_body ( & req) ;
809809 assert_eq ! ( body[ "headless" ] , serde_json:: json!( false ) ) ; // real Kernel field passes
810- assert ! ( body. get( "spider_disabled " ) . is_none( ) ) ; // control flag stripped
810+ assert ! ( body. get( "spider " ) . is_none( ) ) ; // control flag stripped
811811 }
812812
813813 #[ test]
814- fn kernel_spider_disabled_reads_flag ( ) {
814+ fn kernel_use_spider_reads_flag ( ) {
815815 let base = || ScrapeRequest :: get ( Url :: parse ( "https://example.com/" ) . unwrap ( ) ) ;
816- assert ! ( !kernel_spider_disabled ( & base( ) ) ) ; // absent → spider (default)
816+ assert ! ( !kernel_use_spider ( & base( ) ) ) ; // absent → chromey (default)
817817 let mut on = base ( ) ;
818818 on. provider_options
819- . insert ( "kernel" . into ( ) , serde_json:: json!( { "spider_disabled " : true } ) ) ;
820- assert ! ( kernel_spider_disabled ( & on) ) ;
819+ . insert ( "kernel" . into ( ) , serde_json:: json!( { "spider " : true } ) ) ;
820+ assert ! ( kernel_use_spider ( & on) ) ;
821821 let mut off = base ( ) ;
822822 off. provider_options
823- . insert ( "kernel" . into ( ) , serde_json:: json!( { "spider_disabled " : false } ) ) ;
824- assert ! ( !kernel_spider_disabled ( & off) ) ;
823+ . insert ( "kernel" . into ( ) , serde_json:: json!( { "spider " : false } ) ) ;
824+ assert ! ( !kernel_use_spider ( & off) ) ;
825825 }
826826
827827 #[ test]
0 commit comments