UNPKG

endpoint-sentinel

Version:

User-friendly security scanner with interactive setup that scales from beginner to expert

82 lines 2.35 kB
import { SecurityHttpClient } from './http-client.js'; import { RateLimiter, Logger } from '../types/scanner.js'; export interface DiscoveryConfig { maxDepth: number; maxConcurrency: number; respectRobots: boolean; userAgent: string; keywords?: string[]; delays: { min: number; max: number; }; } export interface DiscoveredEndpoint { url: string; source: 'html_links' | 'javascript_routes' | 'api_discovery' | 'sitemap' | 'robots_txt' | 'wordlist'; method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'; depth: number; parent?: string; confidence?: 'high' | 'medium' | 'low'; } export declare class PracticalDiscoveryEngine { private httpClient; private rateLimiter; private logger; private visitedUrls; private seenStates; private contentHashes; private readonly patterns; constructor(httpClient: SecurityHttpClient, rateLimiter: RateLimiter, logger: Logger); discoverEndpoints(startUrl: string, config: DiscoveryConfig): Promise<DiscoveredEndpoint[]>; /** * Detect if the target is a Single Page Application */ private detectSPA; /** * Analyze SPA for real routes in JavaScript bundles */ private analyzeSPARoutes; /** * Extract JavaScript files from HTML */ private extractJavaScriptFiles; /** * Extract SPA routes from JavaScript content */ private extractSPARoutes; /** * Validate if a route looks like a real SPA route */ private isValidSPARoute; /** * Traditional crawling for non-SPA sites */ private traditionalCrawl; /** * Add keyword-based endpoints intelligently */ private addKeywordEndpoints; /** * Add basic infrastructure endpoints */ private addInfrastructureEndpoints; /** * Fetch URL with rate limiting */ private fetchWithRateLimit; private crawlUrl; private extractEndpointsFromResponse; private extractFromHTML; private extractFromJavaScript; private extractFromCSS; private isDuplicateState; private inferMethodFromJS; private isValidEndpoint; private isImageOrFont; private resolveUrl; private deduplicateEndpoints; private getRandomUserAgent; private sleep; } //# sourceMappingURL=discovery-engine.d.ts.map