Web Bot Authentication Verification tool by Fingerprint
WBA Verify is a frontend app that allows developers to test and validate Web Bot Authentication (WBA) requests end-to-end
It is designed to verify that HTTP Message Signatures are generated correctly by automated clients (bots, agents, crawlers) according to RFC 9421, and that public key discovery and cryptographic validation work as expected.
This project pairs with the backend verification service:
⚙️ Backend API: https://github.com/fingerprintjs/wba-verify-api
- Astro v5.16+ - Modern web framework
- Svelte v5.17+ - Component framework with modern runes syntax
- TypeScript - Type safety
- Vercel - Deployment platform
/
├── public/ # Static assets (favicon, images, etc.)
├── src/
│ ├── components/ # Svelte components
│ ├── layouts/ # Astro layouts
│ └── pages/ # Astro pages (routes)
├── astro.config.mjs # Astro configuration
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
└── vercel.json # Vercel deployment configuration
- Node.js 18+
- npm or yarn
- Clone the repository:
git clone https://github.com/fingerprintjs/wba-verify.git
cd wba-verify- Install dependencies:
npm install- Start the development server:
npm run devThe site will be available at http://localhost:4321/
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production build locally
- Install Vercel CLI:
npm i -g vercel- Deploy:
vercel- Push your code to GitHub
- Import the repository in Vercel Dashboard
- Vercel will automatically detect the Astro framework
- Click "Deploy"
The vercel.json configuration ensures proper build settings.
Create a .env file based on .env.example for local development. For production, add environment variables in the Vercel dashboard.
Create .svelte files in src/components/ using Svelte 5's modern runes syntax:
<script lang="ts">
let count = $state(0);
function increment() {
count += 1;
}
</script>
<button onclick={increment}>{count}</button>
<style>
/* Your styles */
</style>Use in Astro pages with the client:load directive for interactivity:
---
import MyComponent from '../components/MyComponent.svelte'
---
<MyComponent client:load />- Astro: Edit
astro.config.mjsto add integrations or modify settings - TypeScript: Edit
tsconfig.jsonfor TypeScript options - Vercel: Edit
vercel.jsonfor deployment configuration
See the LICENSE file for details.