Overview
The Page Ripper feature captures complete, self-contained snapshots of ad landing pages so you can study funnels offline, customize them for your own campaigns, and preserve pages before they go down.What is Page Ripper?
Page Ripper uses headless browser technology to:- Capture full HTML — Self-contained page snapshot with all assets
- Download as ZIP — Organized folder with HTML, CSS, JS, images, fonts, and media
- Preserve layout — Pixel-perfect offline rendering
- Skip login walls — Only works for public landing pages (no Facebook/Meta URLs)
Page Ripper runs server-side using headless Chromium. The entire capture happens in one synchronous request — no job queues or background processing.
How to Use Page Ripper
What You’ll Get
The ZIP archive contains:The
page.html file is self-contained and can be opened directly in a browser without extracting assets. The assets/ folder contains referenced external resources.Landing Page Detection
AdRecon automatically resolves landing pages:- Primary source —
destination_urlfield from ad data - Fallback — URLs extracted from ad copy and link description
- Unwrapping — Facebook redirect URLs (
/l.php) are unwrapped to final destination - Filtering — Meta platform URLs (facebook.com, instagram.com) are excluded
When Page Ripper is Available
The button appears when:- ✅ A non-Meta landing URL is detected
- ✅ The URL is a valid HTTP(S) address
- ✅ The ad modal shows “Open Landing Page” button as active
When Page Ripper is Unavailable
You’ll see a disabled state or message when:- ❌ Landing page is a Meta platform URL (Facebook, Instagram, Threads)
- ❌ No landing page URL detected in ad data
- ❌ Landing URL is invalid or non-HTTP
- ❌ Another capture is already in progress
Capture Process Details
What Happens Server-Side
- Validation — URL checked for SSRF safety (no private IPs, DNS rebinding protection)
- Rate limiting — 10 captures per user per 15 minutes
- Browser launch — Headless Chromium starts via Puppeteer
- Navigation — Page loads with 60-second timeout
- Auto-scroll — Triggers lazy-loaded images and content
- Capture — SingleFile library extracts HTML + intercepts network resources
- Packaging — ZIP archive created with categorized assets
- Cleanup — Browser closed, response streamed to client
The server enforces a 110-second hard timeout. If the page takes longer to capture, you’ll receive a 504 timeout error.
Progress States
- Idle — “Rip Landing Page” button ready
- Loading — Progress bar + status message (“Launching browser…”, “Capturing page…”)
- Success — Green checkmark + “Landing page ripped” message
- Error — Red error icon + retry button
Rate Limiting
Page Ripper enforces a rate limit:- 10 captures per user per 15 minutes
- Sliding window — Resets continuously, not at fixed intervals
- 429 response — Includes
Retry-Afterheader with seconds until next slot
Rate limit failures show a toast notification with retry time. The button remains disabled until the window resets.
Common Use Cases
Funnel Research
Download competitor landing pages to analyze copywriting, layout, and CTAs
Swipe File
Build an offline library of high-converting pages for creative inspiration
Page Archival
Preserve landing pages before they’re taken down or changed
Template Customization
Download page structure and customize HTML/CSS for your own offers
Troubleshooting
”Page rip failed” (500 error)
- Cause: Browser crash, invalid HTML, or capture exception
- Solution: Click Try Again. If repeated failures, the page may have anti-bot protection.
”Page capture timed out” (504 error)
- Cause: Page took longer than 60s to load, or total capture exceeded 110s
- Solution: The page is too slow or complex. Try again later or use browser DevTools to save manually.
”Rate limit exceeded” (429 error)
- Cause: You’ve captured 10 pages in the last 15 minutes
- Solution: Wait for the time shown in the error message, then retry
Technical Limitations
- No JavaScript execution — Captured page is static HTML; dynamic JS behavior won’t work offline
- No login-gated content — Only publicly accessible pages can be captured
- No iframe content — Cross-origin iframes are not captured
- Limited cookie state — Browser runs unauthenticated; personalized content won’t appear
