How wrenstuff/surfcaster works
SurfCaster is a Flask web application for detecting potentially phishing URLs, with role-based user, reviewer, and administrator workflows. A signed-in user submits a URL; the role route extracts URL features, runs the Baelin model, records scan history, and presents the result. Users can flag scans for review, and reviewers or administrators can approve or reject queued scans. Authentication also supports account management and password recovery. The route and model excerpts support the scan and review wiring; the implementation of persistence helpers and recovery email is not sampled.
Main entry points: reviewer/routes.py Reviewer routes · admin/routes.py Admin routes · authorisedUser/routes.py User routes · app.py Flask app
Components 18
Web application
- Flask app
SurfCaster/app.py - User routes
SurfCaster/authorisedUser/routes.py - Guest routes
SurfCaster/unauthorisedUser/routes.py - Page templates
SurfCaster/templates
Identity and roles
- Authentication routes
SurfCaster/auth/routes.py - Account and scan models
SurfCaster/db_models.py - SQLite database
- Recovery helpers
URL detection
- URL feature extraction
SurfCaster/url_extractor.py - Baelin classifier
SurfCaster/models/Baelin.py - Model checkpoint
SurfCaster/models/Baelin_checkpoint.pth - Feature scaler
SurfCaster/models/Baelin_scaler.pkl - Shortener list
url-shortners.txt
Review and history
- Reviewer routes
SurfCaster/reviewer/routes.py - Admin routes
SurfCaster/admin/routes.py - Scan history helpers
SurfCaster/extensions.py
Other components
- Browser user
- Email service
Connections 36
- Browser user → Flask app: opens
- Flask app → Authentication routes: registers routes
- Flask app → User routes: registers routes
- Flask app → Reviewer routes: registers routes
- Flask app → Admin routes: registers routes
- Flask app → Guest routes: registers routes
- Authentication routes → Page templates: renders pages
- User routes → Page templates: renders pages
- Reviewer routes → Page templates: renders pages
- Admin routes → Page templates: renders pages
- Guest routes → Page templates: renders pages
- Authentication routes → Account and scan models: queries and updates
- Account and scan models → SQLite database: persists records
- Authentication routes → Recovery helpers: calls recovery
- Recovery helpers → Email service: sends recovery code
- User routes → URL feature extraction: extracts features
- Reviewer routes → URL feature extraction: extracts features
- Admin routes → URL feature extraction: extracts features
- URL feature extraction → Shortener list: reads list
- User routes → Baelin classifier: predicts URL
- Reviewer routes → Baelin classifier: predicts URL
- Admin routes → Baelin classifier: predicts URL
- User routes → Model checkpoint: loads weights
- Reviewer routes → Model checkpoint: loads weights
- Admin routes → Model checkpoint: loads weights
- User routes → Feature scaler: loads scaler
- Reviewer routes → Feature scaler: loads scaler
- Admin routes → Feature scaler: loads scaler
- User routes → Scan history helpers: records scan
- Reviewer routes → Scan history helpers: records scan
- Admin routes → Scan history helpers: records scan
- User routes → Account and scan models: writes flagged scans
- Reviewer routes → Account and scan models: reviews scans
- Admin routes → Account and scan models: manages users and scans
- Reviewer routes → Scan history helpers: gets review history
- Admin routes → Scan history helpers: gets review history