cspresso.cafe/src/content/recipes.html
2026-01-06 09:51:05 +11:00

87 lines
4.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "cspresso Recipes"
description: "cspresso recipes: common commands for crawling, debugging, sourcemaps, AppImage usage, and CI evaluation."
aliases:
- "examples.html"
---
<main class="py-5">
<div class="container">
<header class="mb-4">
<div class="kicker mb-2"><i class="bi bi-lightning-charge"></i> Recipes</div>
<h1 class="display-6 fw-800 mb-2">Practical workflows</h1>
<p class="text-secondary mb-0">A handful of commands that cover most real-world cspresso usage.</p>
</header>
<div class="row g-4">
<div class="col-lg-6">
<h2 class="section-title fw-bold">Draft a CSP</h2>
<div class="codeblock mb-3">
<button class="btn btn-sm btn-outline-secondary copy-btn" data-copy-target="#r1"><i class="bi bi-clipboard"></i> Copy</button>
<pre class="terminal mb-0"><code id="r1">cspresso https://example.com --max-pages 10</code></pre>
</div>
<div class="text-secondary">
Start here, then audit the output. Crawls wont cover every flow (auth-only pages, conditional loads, A/B tests, etc.).
</div>
</div>
<div class="col-lg-6">
<h2 class="section-title fw-bold">Headed debugging</h2>
<div class="codeblock mb-3">
<button class="btn btn-sm btn-outline-secondary copy-btn" data-copy-target="#r2"><i class="bi bi-clipboard"></i> Copy</button>
<pre class="terminal mb-0"><code id="r2">cspresso https://example.com --headed --settle-ms 2500</code></pre>
</div>
<div class="text-secondary">
Useful when the site does delayed loads or you want to visually confirm whats happening during the crawl.
</div>
</div>
<div class="col-lg-6">
<h2 class="section-title fw-bold">Sourcemaps &amp; <code>connect-src</code></h2>
<div class="codeblock mb-3">
<button class="btn btn-sm btn-outline-secondary copy-btn" data-copy-target="#r3"><i class="bi bi-clipboard"></i> Copy</button>
<pre class="terminal mb-0"><code id="r3">cspresso https://example.com --include-sourcemaps</code></pre>
</div>
<div class="text-secondary">
If browsers/devtools fetch <code>*.map</code> files from a CDN, this helps make sure the CDN origin lands in <code>connect-src</code>.
</div>
</div>
<div class="col-lg-6">
<h2 class="section-title fw-bold">Upgrade insecure requests</h2>
<div class="codeblock mb-3">
<button class="btn btn-sm btn-outline-secondary copy-btn" data-copy-target="#r4"><i class="bi bi-clipboard"></i> Copy</button>
<pre class="terminal mb-0"><code id="r4">cspresso https://example.com --upgrade-insecure-requests</code></pre>
</div>
<div class="text-secondary">
Handy during migrations when you still have a few stray HTTP URLs.
</div>
</div>
<div class="col-lg-6">
<h2 class="section-title fw-bold">AppImage (writable browser cache)</h2>
<div class="codeblock mb-3">
<button class="btn btn-sm btn-outline-secondary copy-btn" data-copy-target="#r5"><i class="bi bi-clipboard"></i> Copy</button>
<pre class="terminal mb-0"><code id="r5">./cspresso.AppImage https://example.com \
--browsers-path "$HOME/.cache/cspresso/pw-browsers"</code></pre>
</div>
<div class="text-secondary">
AppImages mount read-only. Set <code>--browsers-path</code> so Playwright can install Chromium into a writable directory.
</div>
</div>
<div class="col-lg-6">
<h2 class="section-title fw-bold">CI gate with <code>--evaluate</code></h2>
<div class="codeblock mb-3">
<button class="btn btn-sm btn-outline-secondary copy-btn" data-copy-target="#r6"><i class="bi bi-clipboard"></i> Copy</button>
<pre class="terminal mb-0"><code id="r6">cspresso https://example.com \
--bypass-csp \
--evaluate "default-src 'self'; script-src 'self' https://cdn.jsdelivr.net;" \
--json</code></pre>
</div>
<div class="text-secondary">
Exits <code>1</code> if the candidate policy would be violated - great for PR checks.
</div>
</div>
</div>
</div>
</main>