Automated Abuse Reporting & Status Tracking
A production module inside a Security Command Center (SCC) platform that automatically files takedown requests for malicious sites (phishing, brand-jacking gambling) to the national content regulator and other platforms — programmatically defeating bot protection — and tracks every request through its lifecycle on a single dashboard.
What it does. Finding a malicious site is only half the job — someone has to get it taken down, and that means filing abuse reports with the right authority and then chasing the status until it's resolved. Done by hand this is slow, repetitive, and easy to drop. This module automates it: given a confirmed malicious URL (handed over from web/social monitoring), it submits a takedown report to the national content-reporting portal programmatically, deduplicates against already-reported URLs, records a support/ticket ID, and then re-checks the status on a daily schedule until the case closes. Manual or email-based takedown channels (registrars, hosting abuse desks) are tracked in the same system so analysts see one unified funnel — submitted → in progress → resolved — across every platform.
// Background
Detection was working — but getting confirmed sites
removed was a separate, entirely manual battle.
Submission was bot-gated
The reporting portal sits behind Cloudflare and a
dynamic Livewire form; each report meant human clicks.
Bot protection made every submission a manual challenge
Duplicate effort
Without a dedup check, the same domain got reported
repeatedly, wasting time and muddying tracking.
Re-reporting known domains was routine
No lifecycle visibility
Once filed, a request disappeared into an inbox; no
single place to see submitted vs in-progress vs resolved.
Filed and forgotten — until someone chased it
Fragmented channels
Some takedowns go to the national portal, others to
registrar/hosting abuse desks — no record.
One funnel for all platforms didn't exist
Net effect
Detection was working; getting sites removed was
the bottleneck.
// Solution
Data sources
Confirmed malicious URL
from web / social monitoring
triggered automatically
Manual channels
registrar · hosting · email
analyst-driven entries
Pipeline
Auto submit
bot-protection bypass
form flow automation
Submit
Record
activity log
+ ticket ID
Record
Scheduler
re-check status
verify reachable
Poll
Dashboard
Vue 3 + FastAPI
status × plat
Dashboard
Bot-protection bypass · check-before-submit dedup · daily Airflow polling · unified auto + manual funnel
// Impact
Reporting: manual → automated
Before · by hand
manual anti-bot clicks · no scaleAfter · automated bypass
automated · bot-free · 0 manual clicks0
manual clicks per takedown report
Operational impact
Reporting at machine speed
bypass beats bot-gated forms, reported
No duplicate filings
dedup recovers existing ticket codes
End-to-end visibility
funnel: submitted → progress → resolved
Reliable follow-up
ticket IDs re-polled daily, no stalls
Unified audit trail
auto + manual in one activity log
Closes the loop
detection → takedown in one flow
Results
clicks / report
0
automated filing
24/7
ticket IDs kept
100%
status polling
daily
Covers auto portal + manual registrar
All activity logged with ticket IDs.
| Layer | Technologies |
|---|---|
| Orchestration | Apache Airflow (daily takedown DAG: status-check → browser-check → fact rebuild), Papermill |
| Automation | curl-cffi (Chrome TLS/HTTP-2 impersonation, Cloudflare bypass), reverse-engineered Livewire flow (CSRF + snapshot), retry/back-off on rate limits, screenshot capture |
| Backend API | FastAPI, async httpx, psycopg / SQLAlchemy |
| Data store | PostgreSQL (takedown records + activity log + rebuilt fact table) |
| Frontend | Vue 3, Quasar, Vite, TypeScript, Pinia, TanStack Vue Query, ECharts |
Disclaimer: sample visuals may contain anonymized, simulated, or non-production values for presentation purposes.