Use one explicit action
Look up historical certificate names or observe one public HTTP(S) response.
What can I verify about this public website?
Stable · v0.6.1Look up historical certificate names or observe one public HTTP(S) response.
The website action resolves public addresses, verifies TLS, reads no body, and follows no redirect.
Headers and certificate observations are not a vulnerability score or universal verdict.
Status: one passive historical-name lookup and one direct website observation ship in v0.5.0. Current source also provides copy/save reports, rejected-certificate metadata, a five-path HEAD plan, filtered historical names with unsent Inspect handoffs, and browser-local origin/domain memory. Active vulnerability testing and authenticated audits remain outside this implementation.
ProtoPeek helps a user understand a website from the perspective of the local ProtoPeek process. It must not become an ambient Internet scanner, a security-score generator, or an automated exploitation tool. This document separates the current build from later safety requirements.
The user enters one hostname and must explicitly acknowledge that its normalized registrable apex will be sent to the named third party crt.name. The adapter then:
https://crt.name/v1/search endpoint with format=json;The provider indexes certificate transparency and other sources, including archived names and DNS datasets; see its source description and API. A candidate is not proof that a returned name is live, owned, still configured, or independently deployed. Wildcards remain patterns. DNS has no universal “list every subdomain” operation, and this adapter does not use ANY, attempt AXFR, brute-force labels, or fan out across returned names.
The result list supports filtering and JSON export. Inspect on a non-wildcard name prepares a port-443 target for review; it does not run a scan. The last submitted domain and website origin are remembered in bounded browser storage, with individual Forget actions. Paths, queries, credentials, response evidence and acknowledgement are never written to this target store.
Standard paths makes five HEAD observations at the entered origin: /robots.txt, /sitemap.xml, /.well-known/security.txt, /security.txt, and /.__protopeek_missing_resource__. The last is a missing-resource comparison, not an assertion that its name cannot exist. Two workers share a 30-second wall deadline; each observation independently resolves and pins public addresses, verifies TLS, reads no body and never follows redirects. The same process admission limiter covers single website observations and these plans. Responses retain status, type, reported length, redirect and duration; failures remain individual rows. A 200 comparison warns about possible fallback behavior, not a confirmed document or vulnerability.
When TLS verification rejects a certificate, bounded peer-provided subject, issuer, dates and names are displayed explicitly as unverified evidence. Verification stays enabled; no HTTP request is sent after that failed TLS handshake. JSON report exports retain the stated boundary.
Website observation has a separate acknowledgement because it contacts the target and may create a server log. Each accepted operation performs exactly one credential-free HEAD request:
The result is one source-perspective observation at one time. A missing header, failed request, redirect, hostname, route, or timing value is not a universal vulnerability verdict. ProtoPeek does not emit a security score and does not infer a CVE from a Server header.
In v0.6.1, after one successful website observation, the Security page now runs a pure deterministic analyzer over the already retained result. It makes no DNS lookup, HTTP request to the target or a third party, redirect follow, body read, crawl, login attempt, or port connection.
The report uses only observed, not observed, and attention labels for:
Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy response-header evidence;frame-ancestors or X-Frame-Options;Server disclosure without treating a product string as a vulnerability;The user can copy a versioned JSON report containing the normalized observation, fixed one-HEAD boundary, derived labels, and source-field references. Header names and duplicate values are canonicalized for deterministic output; the original selected evidence remains bounded by the observer and UI response limits. No score, grade, pass/fail state, CVE, or exploit claim is added.
These labels describe only the retained response to one non-following HEAD request. HEAD evidence can differ from GET responses and application behavior. Not observed means absent from this retained response, not absent from every route, method, browser session, CDN path, or future response. Attention identifies evidence that needs human interpretation; it is not a vulnerability verdict.
Both current adapters use public-only pinned transports for their outbound website/provider request. The guard blocks loopback, RFC1918/RFC4193 private, link-local, shared/CGNAT, multicast, unspecified, documentation, benchmarking, protocol-assignment, and reserved ranges. IPv4-mapped IPv6 is unmapped before classification. A dial for any authority outside the approved pin set is refused.
CSRF protects loopback browser mutations, but it is not user authentication and does not weaken the destination policy. Nothing runs on page load.
The website check is first on the Security page. Unsuccessful observations identify the last stage (DNS/address validation, connection, TLS handshake, or HTTP response) without returning raw transport errors or private addresses. A timeout does not mean that the website is down. The 15-second whole-operation limit includes DNS; a slow resolver can leave little time for the server.
Redirects, error/access responses, and servers that reject HEAD have explicit explanatory copy. Their headers describe that one response, not the destination page or an authenticated browser GET. No automatic retry, GET fallback, redirect following, or relaxed TLS verification was added.
The current Security page labels these ideas as planned. None is a current API or product claim:
security.txt, cookies, HTML or form inspection, or any redirect-following plan;Any later multi-request or active plan must show the exact target, methods, paths, ports, request count, concurrency, deadlines, redirect policy, and stop control before fresh authorization. Editing the plan invalidates that authorization. Consent must never become a persistent global preference.
sent. The current crt.name adapter is in this tier.
The current one-HEAD observer is the only shipped website plan.
or multiple targets. Existing Network tools keep their own authorization; no new website-tier active probe is shipped.
ProtoPeek core does not perform password guessing, spraying, credential stuffing, authentication bypass, injection payloads, account creation, state-changing requests, directory brute force, .git/.env/admin/backup probing, login testing, CORS payload matrices, exploit verification, denial-of-service, or authenticated crawling.
An open TCP port would prove only a listener, not a named application protocol. A hostname, route, or source-to-responder RTT would not prove a country, datacenter, provider, owner, physical cable path, or adjacent-link latency.
Current tests must continue to prove explicit disclosure/consent, IDNA and public-suffix normalization, special-range and mixed-answer rejection, resolve-once pinned dialing, proxy bypass, no redirect follow, no body read, verified TLS behavior, fixed request method, provider/target timeouts, body/name/header limits, cancellation, admission saturation, malformed provider results, cache bounds, and that candidate names are never contacted. Current-source UI tests additionally prove deterministic case-insensitive header analysis, duplicate-value handling, invalid certificate dates, HTTP without TLS, missing headers, absolute and relative redirect interpretation, fixed status vocabulary, clipboard failure handling, and that copying the JSON report causes no second target-observation request.
Future features require their own tests for plan invalidation and for every additional request, redirect, body, port, credential, persistence, and export boundary before they can move out of the planned section.