page_signals.RdInspects already-fetched HTML for the three things that are not a classifiable site: an anti-bot interstitial, a domain-parking placeholder, and a server's "nothing here" page. No network access.
page_signals(html, text = NULL, domain = "", status = NULL)A one-row tibble: `page_state` (one of `"content"`, `"blocked"`, `"parked"`, `"unavailable"`, `"thin"`), `blocked`, `block_vendor`, `block_reason`, `parked`, `unavailable`, `thin`, `n_tokens`.
`parked` and `unavailable` are **answers, not failures** – they are facts about the domain, plainly stated in the page, that a caller can act on. They are also free: no classification service needs to be consulted.
[fetch_error_codes()] for how these map onto run outcomes.
# A Cloudflare challenge, not a website
page_signals("<html><title>Just a moment...</title><body>cf_chl_opt</body></html>")
#> # A tibble: 1 × 8
#> page_state blocked block_vendor block_reason parked unavailable thin n_tokens
#> <chr> <lgl> <chr> <chr> <lgl> <lgl> <lgl> <int>
#> 1 blocked TRUE cloudflare strong anti… FALSE FALSE TRUE 1
# A parking page
page_signals("<html><body>This domain is for sale. Inquire now.</body></html>")
#> # A tibble: 1 × 8
#> page_state blocked block_vendor block_reason parked unavailable thin n_tokens
#> <chr> <lgl> <chr> <chr> <lgl> <lgl> <lgl> <int>
#> 1 parked FALSE NA NA TRUE FALSE TRUE 7
# A real page that merely embeds reCAPTCHA is not blocked
page_signals(paste0(
"<html><title>Reddit</title><body>",
paste(rep("real discussion content", 200), collapse = " "),
"<script src='recaptcha/api.js'></script></body></html>"
))
#> # A tibble: 1 × 8
#> page_state blocked block_vendor block_reason parked unavailable thin n_tokens
#> <chr> <lgl> <chr> <chr> <lgl> <lgl> <lgl> <int>
#> 1 content FALSE NA NA FALSE FALSE FALSE 600