No description
  • JavaScript 93%
  • CSS 3.7%
  • HTML 3.3%
Find a file
2026-03-08 11:12:49 +01:00
content Initial commit 2026-03-08 11:12:49 +01:00
icons Initial commit 2026-03-08 11:12:49 +01:00
popup Initial commit 2026-03-08 11:12:49 +01:00
.gitignore Initial commit 2026-03-08 11:12:49 +01:00
background.js Initial commit 2026-03-08 11:12:49 +01:00
manifest.json Initial commit 2026-03-08 11:12:49 +01:00
README.md Initial commit 2026-03-08 11:12:49 +01:00

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

  1. Firefox oeffnen: about:debugging#/runtime/this-firefox
  2. "Temporaeres Add-on laden" klicken
  3. manifest.json aus diesem Ordner auswaehlen
  4. Icon erscheint in der Toolbar

Verwendung

  1. Instagram- oder Facebook-Profilseite oeffnen
  2. Extension-Icon in der Toolbar klicken
  3. Bereich waehlen: Posts, Stories, Reels, Markiert, Alben, Alles, oder Manuell
  4. Limit und Pause-Zeit einstellen (0 = alle)
  5. "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/naturalHeight fuer volle Aufloesung
  • CORS-Fallback — Bei Tainted Canvas (CDN-Bilder) wird automatisch auf fetch() + createImageBitmap() umgeschaltet
  • Zustand — Fortschritt wird via browser.storage.local persistiert, 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