No description
- JavaScript 93%
- CSS 3.7%
- HTML 3.3%
| content | ||
| icons | ||
| popup | ||
| .gitignore | ||
| background.js | ||
| manifest.json | ||
| README.md | ||
Profile Photo Scraper
Firefox-Extension zum Screenshot-basierten Speichern von Profil-Fotos und -Videos auf Instagram und Facebook. Laeuft komplett im Browser als normale Extension — keine Bot-Erkennung moeglich, keine externen Abhaengigkeiten.
Features
- Posts — Scrollt durch das Profil-Grid, oeffnet jeden Post als Modal, speichert alle Bilder
- Stories — Oeffnet den Story-Ring, speichert jede Story (Bild oder Video-Frame)
- Reels — Speichert Reel-Frames aus dem Reels-Tab
- Markiert — Scrapt den Tagged-Tab des Profils
- Alben — Instagram: Highlights unter der Bio; Facebook: alle Foto-Alben
- Alles — Posts + Stories + Reels + Markiert + Alben in einem Durchlauf
- Manuell — Speichert das aktuell sichtbare Bild/Video per Knopfdruck
- Carousel-Support — Alle Bilder eines Multi-Bild-Posts
- Canvas-Capture in voller Bildaufloesung (
naturalWidth/naturalHeight) - Automatischer CORS-Fallback via
fetch()+createImageBitmap() - Pause/Resume/Stop-Steuerung
- Menschliche Timing-Pausen (zufaellige Intervalle, laengere Pausen nach jedem 10. Post)
Installation
- Firefox oeffnen:
about:debugging#/runtime/this-firefox - "Temporaeres Add-on laden" klicken
manifest.jsonaus diesem Ordner auswaehlen- Icon erscheint in der Toolbar
Verwendung
- Instagram- oder Facebook-Profilseite oeffnen
- Extension-Icon in der Toolbar klicken
- Bereich waehlen: Posts, Stories, Reels, Markiert, Alben, Alles, oder Manuell
- Limit und Pause-Zeit einstellen (0 = alle)
- "Start" klicken
Manueller Modus
Im Modus "Manuell" navigierst du selbst durch die Seite und klickst "Speichern" um das aktuell sichtbare Bild oder Video zu speichern. Nuetzlich fuer einzelne Bilder oder wenn die automatische Navigation nicht funktioniert.
Dateinamen-Schema
insta_<username>_post_<shortcode>.png
insta_<username>_post_<shortcode>_2.png (Carousel)
insta_<username>_reel_<shortcode>.png
insta_<username>_story_<id>.png
insta_<username>_highlight_<id>.png
fb_<username>_photo_<id>.png
fb_<username>_reel_<id>.png
Dateien werden im Download-Ordner unter insta-scraper/<username>/ gespeichert.
Projektstruktur
insta-scraper/
├── manifest.json # Extension-Manifest (Manifest V2)
├── background.js # Download-Koordination, Storage, Status
├── popup/
│ ├── popup.html # Popup-UI (Bereich-Auswahl, Start/Stop)
│ ├── popup.css # Styling
│ └── popup.js # Popup-Logik
├── content/
│ ├── instagram.js # Content-Script fuer Instagram
│ └── facebook.js # Content-Script fuer Facebook
└── icons/
├── icon-48.png
└── icon-96.png
Technische Details
- Manifest V2 — Firefox unterstuetzt V2 vollstaendig, einfacher als V3 (background scripts statt service workers)
- Modal-basiert — Posts werden per Klick als Overlay geoeffnet (kein
window.location-Wechsel), damit das Content-Script am Leben bleibt - Canvas-Capture — Bild-Element auf Canvas zeichnen mit
naturalWidth/naturalHeightfuer volle Aufloesung - CORS-Fallback — Bei Tainted Canvas (CDN-Bilder) wird automatisch auf
fetch()+createImageBitmap()umgeschaltet - Zustand — Fortschritt wird via
browser.storage.localpersistiert, Scrape kann nach Browser-Neustart fortgesetzt werden
Hinweise
- Laeuft in der normalen Firefox-Session — bestehender Login wird verwendet
- Keine externen Abhaengigkeiten (kein Selenium, kein Python)
- Instagram/Facebook aendern ihr DOM regelmaessig — Selektoren muessen ggf. angepasst werden
- Video-Capture (Reels/Stories) speichert den aktuellen Frame, nicht das ganze Video