2 Einträge gefunden
# 🌐 Advanced Web Proxy - Improved Version 2.0 ## 🎯 Was wurde verbessert? ### 1. **CSS Handling komplett überarbeitet** ✅ **Problem:** CSS wurde nicht korrekt geladen, Inline-Styles nicht umgeschrieben **Lösung:** - ✅ Externe CSS-Dateien werden über resource.php geladen - ✅ Inline `<style>` Tags werden durchsucht und URLs umgeschrieben - ✅ Inline `style=\"\"` Attribute werden durchsucht - ✅ `url()` in CSS wird korrekt umgeschrieben - ✅ `@import` wird korrekt umgeschrieben (mit und ohne url()) - ✅ Base-URL wird an resource.php übergeben für relative URLs in CSS ### 2. **Google Suche funktioniert besser** ✅ **Problem:** Google hat Probleme mit Proxies **Lösung:** - ✅ Bessere User-Agents (aktualisiert auf Chrome 131, Firefox 133) - ✅ Google-Suche mit `&hl=de` Parameter - ✅ Cookies werden gespeichert und wiederverwendet - ✅ Redirects werden korrekt gefolgt - ✅ DNT Header wird gesendet ### 3. **Cookie-Handling** ✅ **Neu:** Cookies werden jetzt gespeichert! - Session speichert Cookies zwischen Requests - Set-Cookie Headers werden ausgelesen - Cookies werden bei folgenden Requests mitgesendet - Wichtig für Login-Seiten und personalisierte Inhalte ### 4. **Besseres URL Rewriting** ✅ **Verbessert:** - ✅ `..` und `.` in URLs werden korrekt aufgelöst - ✅ Query-Parameter (`?`) und Anchors (`#`) funktionieren - ✅ HTML entities werden dekodiert (`&` → `&`) - ✅ srcset Attribute werden umgeschrieben (responsive images) - ✅ Alle Attribute-Varianten werden erkannt (mit/ohne Quotes) ### 5. **Resource-Proxy verbessert** ✅ **Neu in resource.php:** - ✅ Base-URL Parameter für CSS (`&base=...`) - ✅ Cache-Headers für bessere Performance - ✅ CORS-Headers (`Access-Control-Allow-Origin: *`) - ✅ Bessere Content-Type Detection - ✅ Font-Support (woff, woff2, ttf, otf, eot) - ✅ SVG-Support - ✅ JSON-Support - ✅ Längere Cache-Zeiten (Fonts 30 Tage, Bilder 7 Tage) ### 6. **Inline-Style Rewriting** 🆕 **Komplett neu:** ```html <!-- Vorher: Nicht umgeschrieben --> <div style=\"background: url('image.jpg')\"> <!-- Nachher: Korrekt umgeschrieben --> <div style=\"background: url('resource.php?url=...')\"> ``` ### 7. **Redirect-Support** ✅ **Neu:** - Folgt automatisch Redirects (max 5) - Nutzt finale URL für Rewriting - Wichtig für Kurz-URLs und Weiterleitungen ### 8. **Bessere Quick Links** ✅ **Geändert:** - Wikipedia (funktioniert perfekt) - DuckDuckGo Lite (schnell, proxy-freundlich) - NPR Text (text-only, funktioniert immer) - Entfernt: Reddit (zu JavaScript-heavy) --- ## 🚀 Neue Features ### CSS mit Base-URL ```php // resource.php wird mit base-URL aufgerufen resource.php?url=https://example.com/style.css&type=css&base=https://example.com/page.html // CSS darin: background: url('../images/bg.jpg') // Wird korrekt zu: background: url('resource.php?url=https://example.com/images/bg.jpg') ``` ### Inline-Style Handling ```php // Alle Style-Varianten werden verarbeitet: <div style=\"background: url(bg.jpg)\"> ✅ <div style='background: url(\"bg.jpg\")'> ✅ <style>body { background: url(bg.jpg) }</style> ✅ ``` ### Cookie-Sessions ```php // Cookies werden automatisch gespeichert $_SESSION['cookies'] = [ 'session_id' => 'abc123', 'preferences' => 'theme=dark' ]; // Und bei nächstem Request mitgesendet ``` --- ## 📋 Technische Details ### HTML Rewriting - ✅ `<a href>` - Links über Proxy - ✅ `<img src>` + `srcset` - Bilder über resource.php - ✅ `<link href>` - CSS über resource.php mit base-URL - ✅ `<script src>` - NICHT proxied (macht Probleme) - ✅ `<form action>` - Forms über Proxy - ✅ `<iframe src>` - iframes über Proxy mit sandbox - ✅ `<meta http-equiv=\"refresh\">` - Redirects über Proxy - ✅ `<base>` - wird entfernt (macht nur Probleme) - ✅ `style=\"\"` - Inline-styles durchsuchen - ✅ `<style>` - Inline CSS-Blocks durchsuchen ### CSS Rewriting - ✅ `url(...)` - alle Varianten - ✅ `url(\"...\")` - mit Quotes - ✅ `url('...')` - mit Single-Quotes - ✅ `@import \"...\"` - externe Stylesheets - ✅ `@import url(...)` - alternative Syntax ### Bessere Regex - Attribute mit und ohne Quotes - HTML entities werden dekodiert - Whitespace-tolerant - Case-insensitive --- ## ⚠️ Bekannte Einschränkungen ### Was funktioniert NICHT gut: 1. **JavaScript-heavy Seiten** - SPAs (Single Page Apps) - React/Vue/Angular Sites - AJAX-heavy Seiten - Grund: JavaScript wird nicht umgeschrieben 2. **Login-Seiten** - Manche funktionieren (mit Cookies) - Viele haben CSRF-Protection - OAuth funktioniert nicht 3. **Cloudflare-geschützte Seiten** - Bot-Detection erkennt Proxies - JavaScript-Challenges funktionieren nicht 4. **WebSockets** - Echtzeit-Features funktionieren nicht - Chat-Apps, Live-Updates etc. 5. **Google** - Funktioniert eingeschränkt - reCAPTCHA kann erscheinen - Besser: DuckDuckGo verwenden ### Was funktioniert GUT: ✅ Wikipedia (perfekt!) ✅ News-Seiten (meist gut) ✅ Blogs und Text-Seiten ✅ Einfache Such-Engines ✅ DuckDuckGo Lite ✅ Text-only Seiten --- ## 🔧 Installation 1. Dateien hochladen: - `index.php` - `resource.php` 2. PHP Voraussetzungen: - PHP 7.4+ - cURL Extension - Session Support 3. Server-Konfiguration: - `allow_url_fopen = On` - `session.auto_start = Off` 4. Aufrufen: ``` https://deine-domain.de/proxy/ ``` --- ## 💡 Performance-Tipps ### Cache nutzen resource.php sendet Cache-Headers: - CSS/JS: 24 Stunden - Bilder: 7 Tage - Fonts: 30 Tage Browser-Cache reduziert Server-Last erheblich! ### Timeout anpassen In index.php: ```php curl_setopt($ch, CURLOPT_TIMEOUT, 25); // Bei langsamen Seiten erhöhen ``` ### Session-Cleanup Alte Sessions regelmäßig löschen: ```php // In index.php am Anfang if(rand(1, 100) == 1) { session_gc(); } ``` --- ## 🐛 Debugging ### CSS lädt nicht? 1. Browser DevTools → Network Tab öffnen 2. Nach `resource.php` suchen 3. HTTP Status prüfen (sollte 200 sein) 4. Response prüfen (sollte CSS sein) ### Bilder fehlen? 1. Rechtsklick auf Bild → \"Grafik-Adresse kopieren\" 2. Im Browser öffnen 3. Fehler lesen ### Seite sieht falsch aus? 1. Rechtsklick → \"Seitenquelltext anzeigen\" 2. Nach `resource.php` suchen 3. Prüfen ob URLs umgeschrieben wurden ### Google funktioniert nicht? → Nutze DuckDuckGo! Google ist sehr Proxy-feindlich. --- ## 🎨 Anpassungen ### Design ändern In index.php im `<style>` Block: ```css .toolbar{background:linear-gradient(135deg,#1e293b,#334155)} /* Ändere Farben nach Wunsch */ ``` ### Mehr Quick-Links ```php <a href=\"?url=https://example.com\" class=\"quick-link\">📌 Example</a> ``` ### Timeout erhöhen ```php curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 60 Sekunden ``` --- ## 📊 Vergleich Alt vs Neu | Feature | v1.0 | v2.0 | |---------|------|------| | Externe CSS | ❌ | ✅ | | Inline CSS | ❌ | ✅ | | Style-Attribute | ❌ | ✅ | | @import | ⚠️ | ✅ | | Cookies | ❌ | ✅ | | Redirects | ⚠️ | ✅ | | srcset | ❌ | ✅ | | Base-URL in CSS | ❌ | ✅ | | Cache-Headers | ❌ | ✅ | | CORS-Headers | ❌ | ✅ | | HTML entities | ❌ | ✅ | | Google-Support | ❌ | ⚠️ | --- ## 🔒 Sicherheit ### Was der Proxy macht: - ✅ Verschleiert deine IP - ✅ Rotiert User-Agent - ✅ Sendet DNT Header - ✅ Keine Logs (bei dir) ### Was der Proxy NICHT macht: - ❌ Kein HTTPS zwischen dir und Proxy (nutze HTTPS!) - ❌ Keine Anonymisierung gegenüber Server-Admin - ❌ Kein Schutz vor JavaScript-Tracking - ❌ Kein VPN-Ersatz --- **Version:** 2.0 Improved **Datum:** Januar 2026 **Status:** Production Ready ✅
# 🕷 MetaCrawler ### AI-powered SEO Meta Generator · v1.0.0 MetaCrawler crawlt das Web nach einem Stichwort oder einer URL, analysiert die gefundenen Seiten und generiert mithilfe einer KI automatisch **3 optimierte Vorschläge** für Titel, Meta-Description und Keywords. Zusätzlich können vollständige Artikel generiert werden. **Komplett kostenlos nutzbar · Kein Login · Kein Abo · Einmal einrichten, dauerhaft nutzen.** --- ## ✨ Features | Feature | Beschreibung | |---|---| | 🔍 **Web-Crawling** | Bing, DuckDuckGo, Wikipedia + direkte URLs | | 🤖 **Multi-Provider AI** | OpenAI, Claude, Gemini, Mistral, Ollama | | 📊 **3 Vorschläge** | Titel (50–60 Z.), Description (150–160 Z.), Keywords | | 📝 **Artikel-Generator** | ~800 Wörter, 4 Schreibstile, DE + EN | | 🧠 **Lernpool** | Wörter aus Crawls werden gespeichert & gewichtet | | 📥 **JSON-Export** | Jede Analyse als JSON-Datei exportierbar | | 💾 **SQLite** | Kein MySQL nötig – läuft auf jedem Hosting | | 🌐 **DE + EN** | Deutsche und englische Ausgabe wählbar | --- ## 🚀 Installation ### 1. Voraussetzungen | Anforderung | Version | |---|---| | PHP | 8.0 oder höher | | cURL Extension | Pflicht | | PDO SQLite Extension | Pflicht | | Schreibrechte | `storage/` und `logs/` Ordner | ### 2. Dateien hochladen Alle Dateien in ein Verzeichnis auf dem Webserver hochladen, z.B.: ``` https://ihre-domain.de/metacrawler/ ``` ### 3. config.php anpassen ```php // Provider wählen define('AI_PROVIDER', 'claude'); // openai | claude | gemini | mistral | ollama // Nur den gewählten Provider ausfüllen: define('CLAUDE_API_KEY', 'sk-ant-...'); define('CLAUDE_MODEL', 'claude-3-5-haiku-20241022'); ``` ### 4. Ordner-Rechte setzen ```bash chmod 755 storage/ chmod 755 logs/ ``` ### 5. Fertig – aufrufen ``` https://ihre-domain.de/metacrawler/ ``` Die SQLite-Datenbank wird beim ersten Aufruf automatisch erstellt. --- ## 🤖 AI-Provider Übersicht ### OpenAI - **API-Key**: https://platform.openai.com/api-keys - **Empfohlenes Modell**: `gpt-4o-mini` (günstig, schnell) - **Kosten**: ~$0.15 / 1M Input-Tokens ```php define('AI_PROVIDER', 'openai'); define('OPENAI_API_KEY', 'sk-...'); define('OPENAI_MODEL', 'gpt-4o-mini'); ``` --- ### Anthropic Claude - **API-Key**: https://console.anthropic.com/ - **Empfohlenes Modell**: `claude-3-5-haiku-20241022` (schnell & günstig) - **Kosten**: ~$0.25 / 1M Input-Tokens ```php define('AI_PROVIDER', 'claude'); define('CLAUDE_API_KEY', 'sk-ant-...'); define('CLAUDE_MODEL', 'claude-3-5-haiku-20241022'); ``` --- ### Google Gemini - **API-Key**: https://makersuite.google.com/app/apikey - **Empfohlenes Modell**: `gemini-1.5-flash` - **Kosten**: Kostenlos bis 1M Tokens/Monat ```php define('AI_PROVIDER', 'gemini'); define('GEMINI_API_KEY', 'AIza...'); define('GEMINI_MODEL', 'gemini-1.5-flash'); ``` --- ### Mistral AI - **API-Key**: https://console.mistral.ai/api-keys/ - **Empfohlenes Modell**: `mistral-small-latest` - **Kosten**: ~$0.20 / 1M Tokens ```php define('AI_PROVIDER', 'mistral'); define('MISTRAL_API_KEY', '...'); define('MISTRAL_MODEL', 'mistral-small-latest'); ``` --- ### Ollama (lokal – kostenlos) - **Download**: https://ollama.ai - **Kein API-Key nötig** – läuft komplett lokal - **Kosten**: 100% kostenlos ```bash # Ollama installieren & Modell laden ollama pull llama3.2 ollama serve ``` ```php define('AI_PROVIDER', 'ollama'); define('OLLAMA_HOST', 'http://localhost:11434'); define('OLLAMA_MODEL', 'llama3.2'); ``` > **Hinweis:** Ollama funktioniert nur wenn MetaCrawler auf demselben Server > wie Ollama läuft (Localhost). Für Shared-Hosting empfiehlt sich ein Cloud-Provider. --- ## 📁 Dateistruktur ``` metacrawler/ ├── config.php ← Konfiguration (Provider, API-Keys) ├── index.php ← Hauptseite: Analyse & 3 Vorschläge ├── artikel.php ← Artikel-Generator ├── history.php ← Analyse-Verlauf ├── keywords.php ← Keyword-Lernpool visualisiert ├── einstellungen.php ← Setup-Übersicht & Systeminfo │ ├── includes/ │ ├── header.php ← Navigation & CSS │ ├── footer.php ← Footer │ ├── crawler.php ← Web-Crawling Engine (cURL + Parser) │ ├── ai.php ← Multi-Provider AI Interface │ └── storage.php ← SQLite Datenbankschicht & Lernfunktion │ ├── storage/ │ ├── metacrawler.db ← SQLite Datenbank (auto-erstellt) │ └── exports/ ← JSON-Exporte │ └── logs/ ← Fehler-Logs ``` --- ## 🧠 Lernfunktion Bei jeder Analyse extrahiert MetaCrawler die häufigsten Wörter aus allen gecrawlten Seiten und speichert sie in der lokalen SQLite-Datenbank (`keywords`-Tabelle). **Was passiert konkret:** - Stoppwörter (der, die, das, the, and, ...) werden gefiltert - Wörter unter 3 Zeichen werden ignoriert - Jedes Wort erhält einen Häufigkeitszähler - Bei erneuter Verwendung wird der Zähler erhöht **Auswirkung:** - Auf der Hauptseite werden verwandte Keywords aus dem Lernpool vorgeschlagen - Je mehr Analysen, desto treffsicherer die Vorschläge - Unter `keywords.php` ist der gesamte Lernpool als Wortwolke sichtbar --- ## 📊 Seiten-Übersicht ### 🔍 index.php – Analyse Stichwort oder URL eingeben → Web wird gecrawlt → KI generiert 3 Vorschläge. Jeder Vorschlag enthält: - **Title Tag** mit Zeichenzähler (Ziel: 50–60 Zeichen, grün markiert) - **Meta Description** mit Zeichenzähler (Ziel: 150–160 Zeichen) - **Keywords** als klickbare Tags - **\"Alles kopieren\"** Button – alle 3 Felder in einem Rutsch ### 📝 artikel.php – Artikel-Generator Generiert einen ~800-Wörter-Artikel auf Basis gecrawlter Daten. Schreibstile: - **Informativ** – sachlich, für breites Publikum - **Blog** – locker, persönlich, mit \"Ich/Wir\" - **SEO-optimiert** – höhere Keyword-Dichte - **Verkauf** – überzeugend, mit Call-to-Actions ### 📋 history.php – Verlauf Alle bisherigen Analysen. Details und JSON-Export pro Eintrag. ### 🏷 keywords.php – Lernpool Alle gesammelten Keywords als gewichtete Wortwolke. Je häufiger ein Begriff gefunden wurde, desto größer dargestellt. ### ⚙️ einstellungen.php – Setup - Übersicht aller Provider mit Konfigurationsbeispielen - Links zu den jeweiligen API-Key-Seiten - Systemprüfung (PHP-Version, cURL, SQLite, Schreibrechte) --- ## 🔧 Konfigurationsreferenz ```php // config.php – alle Optionen // Provider (eines wählen) define('AI_PROVIDER', 'claude'); // openai | claude | gemini | mistral | ollama // Crawling-Einstellungen define('CRAWL_TIMEOUT', 10); // Sekunden pro Request define('CRAWL_MAX_URLS', 5); // Max. zu crawlende URLs pro Analyse define('CRAWL_USER_AGENT', '...'); // User-Agent-String // Limits define('FREE_SUGGESTIONS', 3); // Anzahl Vorschläge pro Analyse define('FREE_ARTICLE_LEN', 800); // Ziel-Wortanzahl für Artikel // Sprache define('DEFAULT_LANG', 'de'); // de | en define('TIMEZONE', 'Europe/Berlin'); ``` --- ## 🔒 Sicherheitshinweise - Die `config.php` enthält API-Keys – Zugriff per `.htaccess` schützen: ```apache # .htaccess im Hauptverzeichnis <Files \"config.php\"> Order allow,deny Deny from all </Files> ``` - Den `storage/` Ordner vor direktem Webzugriff schützen: ```apache # storage/.htaccess Deny from all ``` - Den `logs/` Ordner ebenfalls schützen: ```apache # logs/.htaccess Deny from all ``` --- ## 🗺 Geplante Erweiterungen (Roadmap) > Diese Features sind **noch nicht implementiert** und können in einer späteren Version > hinzugefügt werden. ### 👤 Benutzerverwaltung (Login/Register) - Eigene Analyse-Historien pro Nutzer - Eigene Keyword-Listen und Projekte - Getrennte Lernpools pro Nutzer ### 💳 Premium-Modell - Kostenlose Version: 3 Analysen/Tag - Premium (Einmalkauf oder Abo): Unbegrenzte Analysen - PayPal IPN Integration (analog PasswortBox) ### 📦 Projekt-Verwaltung - Mehrere URLs/Keywords als \"Projekt\" zusammenfassen - Regelmäßige Re-Analyse (Cron-Job) mit Änderungs-Benachrichtigung - Vergleich: Wie haben sich Rankings verändert? ### 🔄 Bulk-Analyse - CSV-Upload mit mehreren Keywords/URLs - Batch-Verarbeitung im Hintergrund - Export als Excel/CSV ### 📈 Ranking-Tracking - Keyword-Positionen bei Google/Bing tracken - Historische Verläufe und Grafiken - Benachrichtigung bei Positions-Änderungen ### 🌍 Mehr Crawling-Quellen - Google (mit Proxy-Rotation) - Reddit, Quora für Community-Keywords - Amazon (für Produkt-Keywords) - YouTube (für Video-SEO) ### 🔌 API-Endpunkt - REST-API für externe Anbindung - Webhook-Support - WordPress-Plugin --- ## ❓ Häufige Fragen **Warum werden manchmal keine Ergebnisse gefunden?** Manche Websites blockieren Crawler. Versuche ein anderes Stichwort oder eine direkte URL einer zugänglichen Seite. **Warum ist die AI-Antwort manchmal unvollständig?** Bei günstigeren Modellen (z.B. Haiku, gpt-4o-mini) kann das Token-Limit erreicht werden. In `ai.php` den `$maxTokens`-Wert in der `complete()`-Methode erhöhen. **Kann ich MetaCrawler auf Shared-Hosting betreiben?** Ja, solange PHP 8+, cURL und PDO-SQLite verfügbar sind. Ollama funktioniert nur auf eigenen Servern (VPS/Root-Server). **Wo werden die Daten gespeichert?** Ausschließlich lokal in `storage/metacrawler.db` (SQLite). Es werden keine Daten an externe Server gesendet außer an den gewählten AI-Provider. **Wie kann ich den Lernpool zurücksetzen?** Die Datei `storage/metacrawler.db` löschen. Sie wird beim nächsten Aufruf neu erstellt. --- ## 📄 Lizenz MIT Einzel-License – frei verwendbar, anpassbar. Bei Weitergabe bitte diese README beilegen. --- *MetaCrawler v1.0.0 · Erstellt mit PHP 8 · SQLite · Web Crypto API*