dast-crawler

dast-crawler is an agent for Claude Code from morodomi/redteam-skills. It costs 32 tokens per session (1,539 once invoked), scanned A, original, MIT.

A browser-based web crawler that uses Playwright to discover URLs and endpoints, including ones created dynamically by JavaScript.

In plain words
What is it for?
It helps map links, buttons, forms, XHR and Fetch requests, and single-page app routes by loading pages, interacting with them, monitoring network traffic, and crawling discovered URLs.
Why use it?
Static code analysis can miss routes and requests that only appear when a page loads, a user clicks, or a single-page app changes views. This crawler exposes those paths for further testing.

Agent for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Part of the redteam-core plugin — 4 skills, 18 agents shipped together

Good fit It helps map links, buttons, forms, XHR and Fetch requests, and single-page app routes by loading pages, interacting with them, monitoring network traffic, and crawling discovered URLs.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/morodomi/redteam-skills/dast-crawler
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/morodomi/redteam-skills

Made for: Claude Code.

Or install redteam-core, the plugin that ships this one along with the rest of its 4 skills, 18 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for dast-crawler

README.md
[![agentmods](https://agentmods.dev/badge/agents/morodomi/redteam-skills/dast-crawler.svg)](https://agentmods.dev/agents/morodomi/redteam-skills/dast-crawler)
Your own site
<a href="https://agentmods.dev/agents/morodomi/redteam-skills/dast-crawler"><img src="https://agentmods.dev/badge/agents/morodomi/redteam-skills/dast-crawler.svg" alt="Measured on agentmods" height="20"></a>
Per session 32 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,539 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00032 $0.01539
Opus 5 $0.00016 $0.00770
Sonnet 5 $0.00006 $0.00308
Haiku 4.5 $0.00003 $0.00154

Measured 8d ago against content hash b20f8a574653, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

dast-crawler scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/redteam-core/agents/dast-crawler.md · 216 lines

How it starts

The opening of the file, as written. The whole thing — 216 lines — stays where its author put it; the contents beside it link to each section on GitHub.

DAST Crawler

Playwrightを使用してブラウザベースでWebアプリをクロールし、静的解析では見つからないエンドポイントを発見するエージェント。

Detection Targets

Target Description Method
URL Discovery リンク、ボタン、ナビゲーション DOM解析、クリックイベント
Form Discovery フォーム要素、action/method form要素解析
Ajax Endpoints XHR/Fetch API呼び出し Network監視
SPA Routes ハッシュルート、History API URL変更監視

Playwright MCP Integration

Playwright MCPサーバーを使用してブラウザ操作を実行。

Available Tools

Tool Description
mcp__playwright__navigate 指定URLへ遷移
mcp__playwright__click 要素をクリック
mcp__playwright__screenshot スクリーンショット取得
mcp__playwright__evaluate JavaScript実行(DOM操作全般)

Note: evaluateでDOM操作を実行(リンク抽出、フォーム検出、SPA監視など)。

Browser Settings

browser:
  type: chromium
  headless: true
  viewport:
    width: 1280
    height: 720
  timeout: 30000

Crawl Strategy

  1. Initial Load: ベースURLを読み込み
  2. Link Extraction: すべてのa[href]を抽出
  3. Form Detection: form要素を検出、action/method/fieldsを記録
  4. Network Monitoring: XHR/Fetchリクエストを監視
  5. Click Navigation: ボタン・リンクをクリックして遷移
  6. SPA Detection: hashchange/popstateイベントを監視
  7. Recursive Crawl: 発見したURLを再帰的にクロール

Deduplication Strategy

// 訪問済みURL管理
const visited = new Set();

function normalizeUrl(url) {
  const parsed = new URL(url);
  // フラグメント削除
  parsed.hash = '';
  // 末尾スラッシュ統一
  parsed.pathname = parsed.pathname.replace(/\/+$/, '') || '/';
  // クエリパラメータソート
  parsed.searchParams.sort();
  return parsed.toString();
}

function shouldVisit(url) {
  const normalized = normalizeUrl(url);
  if (visited.has(normalized)) return false;
  visited.add(normalized);
  return true;
}

Network Interception

// XHR/Fetch監視
page.on('request', request => {
  if (request.resourceType() === 'xhr' || request.resourceType() === 'fetch') {
    discoveredUrls.push({
      url: request.url(),
      method: request.method(),
      source: 'xhr'
    });
  }
});

Read the full file on GitHub · 216 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 216 lines · 32 tokens per session scan A b20f8a574653

Subscribe to this mod's changes

dast-crawler is an agent published in the GitHub repository morodomi/redteam-skills (2 stars, last pushed 6mo ago), licensed MIT. It adds 32 tokens to every session and 1,539 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other agents, from other repositories

opentable-agent

OpenTable-specific agent. Handles venue search (live via browser automation) and hand-off to the OpenTable booking URL for the user to confirm in their own browser.

omarshahine/restaurant-cli · 38 tokens

browser-tester

A browser-based end-to-end tester for checking user interfaces with Playwright, a tool that controls a real web browser. It starts the app, captures desktop and mobile screenshots, and reads what appears on screen.

andrewcigan/vibe-dev-plugin · 76 tokens

dast-crawler

A browser-based security-testing agent that discovers web application URLs and endpoints, including routes created while the page runs.

morodomi/dev-crew · 32 tokens

app-mapper

Use this agent when the user asks to "understand the application", "map the codebase", "analyze the architecture", "identify trust boundaries", "map user roles", or needs to build comprehensive application understanding before vulnerability hunting.

allsmog/vuln-scout · 51 tokens

local-tester

Use this agent when the user wants to "test a vulnerability", "confirm exploitation", "debug the application", "verify the finding", or needs guidance on dynamic testing during Phase 2 of whitebox security review.

allsmog/vuln-scout · 47 tokens

mobile-auditor

Use this agent when the user is auditing a decompiled mobile application (Android jadxout/apktoolout trees, iOS .ipa or Swift source). Activate when the conversation mentions APK / xAPK / IPA, AndroidManifest, Info.plist, jadx, apktool, or any com. package name typical of mobile apps. This agent specializes in…

allsmog/vuln-scout · 98 tokens