From 8fd9d72f2e235255774ef8ba06848468316d2d10 Mon Sep 17 00:00:00 2001 From: Mohamed-Abdelhalim2 Date: Thu, 30 Jul 2026 16:01:06 +0000 Subject: [PATCH] =?UTF-8?q?=D8=A5=D8=B6=D8=A7=D9=81=D8=A9=20archives/Googl?= =?UTF-8?q?e=20account/chrome/=D8=A3=D8=AF=D8=A7=D8=A9=20=D8=B3=D8=B7?= =?UTF-8?q?=D8=AD=20=D9=85=D9=83=D8=AA=D8=A8=20=D9=84=D9=82=D8=B1=D8=A7?= =?UTF-8?q?=D8=A1=D8=A9=20=D9=82=D8=A7=D8=B9=D8=AF=D8=A9=20=D8=A8=D9=8A?= =?UTF-8?q?=D8=A7=D9=86=D8=A7=D8=AA=20Chrome=20=D9=85=D8=A8=D8=A7=D8=B4?= =?UTF-8?q?=D8=B1=D8=A9.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mohamed-Abdelhalim2 --- ... سطح مكتب لقراءة قاعدة بيانات Chrome مباشرة.md | 347 ++++++++++++++++++ 1 file changed, 347 insertions(+) create mode 100644 archives/Google account/chrome/أداة سطح مكتب لقراءة قاعدة بيانات Chrome مباشرة.md diff --git a/archives/Google account/chrome/أداة سطح مكتب لقراءة قاعدة بيانات Chrome مباشرة.md b/archives/Google account/chrome/أداة سطح مكتب لقراءة قاعدة بيانات Chrome مباشرة.md new file mode 100644 index 0000000..aba1502 --- /dev/null +++ b/archives/Google account/chrome/أداة سطح مكتب لقراءة قاعدة بيانات Chrome مباشرة.md @@ -0,0 +1,347 @@ +## ما تريد بالضبط +- **من داخل متصفح Chrome**: أن يُحفظ كل رابط (URL) أو كل كلمة‑بحث تدخلها في شريط العنوان/محرك البحث. +- **بعد ذلك**: أن تُستورد هذه السجلات إلى برنامج محلي يُظهر الروابط في واجهة سهلة، مع إمكانية **بحث متقدم** (تصفية حسب التاريخ، النطاق، الكلمات المفتاحية، العلامات …). + +### الحلول المتاحة +| الفئة | الأداة / الإضافة | كيف تعمل | مميزات البحث المتقدم | رابط التحميل / المصدر | +|-------|-------------------|----------|----------------------|------------------------| +| **إضافة Chrome تسجّل السجل وتوفر واجهة بحث داخل المتصفح** | **History Search** (مفتوحة المصدر) | تستخدم `chrome.history` لتجميع كل الزيارات وتخزينها في IndexedDB، ثم تُظهرها في نافذة منبثقة أو صفحة `chrome://history-search/`. | • بحث بنص كامل (full‑text)
• فلاتر التاريخ (اليوم، الأسبوع، المدى الزمني)
• تصفية حسب النطاق/النطاق الفرعي
• دعم تعبيرات regex |
GitHub: | +| **إضافة Chrome لتصدير السجل إلى ملف** | **Chrome History Export** | عند النقر على الأيقونة تُصدّر كل السجلات إلى ملف CSV أو JSON على جهازك. | • ملف CSV يمكن فتحه بأي برنامج جدول (Excel، Google Sheets)
• يمكن استيراده إلى أدوات بحث متقدمة (SQLite, Elasticsearch, Recoll…) | | +| **أداة سطح مكتب (Windows/macOS/Linux) لقراءة قاعدة بيانات Chrome مباشرة** | **ChromeHistoryView** (NirSoft) | يقرأ ملف `History` (SQLite) الموجود في مجلد ملف تعريف Chrome ويعرضه في نافذة. | • فلاتر حسب التاريخ، العنوان، URL
• بحث نصي سريع
• تصدير إلى CSV/HTML/SQL | | +| **محرك بحث محلي على ملفات CSV/SQLite** | **Recoll** (Linux/Windows/macOS) أو **DocFetcher** (مفتوح المصدر) | تستورد ملف CSV أو قاعدة SQLite وتبني فهرس بحث كامل. | • بحث نص كامل
• فلاتر تاريخ، حجم، نوع ملف
• واجهة رسومية سهلة | Recoll:
DocFetcher: | +| **منصة سحابية مع علامات وفلترة** | **Raindrop.io** أو **Pinboard** | تحفظ كل رابط يدوياً (أو عبر إضافة “Save to Raindrop”) مع وسوم، ملاحظات، وصورة مصغرة. | • بحث نص كامل في العناوين/الوسوم/الملاحظات
• فلاتر حسب المجلد، التاريخ، العلامة
• إمكانات تصدير/استيراد JSON | Raindrop: | +| **إنشاء امتداد Chrome مخصص** (إذا كنت تريد تحكمًا كاملًا) | **Custom Chrome Extension** (الشرح أدناه) | يلتقط كل زيارة (`chrome.history.onVisited`) ويخزنها في IndexedDB أو ملف JSON محلي. الواجهة (popup أو صفحة options) تسمح ببحث regex، تصنيف يدوي، وإضافة وسوم. | • كل ما تريد من فلاتر (التاريخ، النطاق، الكلمات، الوسوم)
• لا حاجة لتصدير/استيراد؛ كل شيء محلي. | شرح تفصيلي وأكواد جاهزة أدناه | + +--- + +## 📦 أقرب حل “جاهز للاستخدام” – إضافة **History Search** + تصدير CSV للبحث المتقدم + +### 1️⃣ تثبيت الإضافة +1. افتح Chrome → زر الثلاث نقاط → **المزيد من الأدوات → امتدادات**. +2. اضغط على **متجر Chrome الإلكتروني** ثم ابحث عن **“History Search”** أو استخدم الرابط المباشر أعلاه. +3. اضغط **إضافة إلى Chrome** → **تأكيد**. + +### 2️⃣ كيف تُستعمل +- بعد التثبيت ستظهر أيقونة عدّاد (🔍) على شريط الأدوات. +- **انقر عليها** → سيفتح لك نافذة “History Search”. +- في خانة **Search** يمكنك كتابة أي كلمة، أو استخدام **تعبير regex** (مثال: `^https?://.*\.pdf$` للعثور على ملفات PDF). +- أسفل خانة البحث توجد **قائمة فلاتر**: + - **Date range** → اليوم، الأسبوع، الشهر، أو نطاق مخصص. + - **Domain** → حدد نطاقًا (مثلاً `youtube.com`). + - **Title / URL contains** → بحث نصي في العنوان أو الرابط. + +### 3️⃣ تصدير السجل إلى CSV (للبحث المتقدم عبر Excel أو أدوات أخرى) +1. اضغط على أيقونة **History Search** → **⋮** (قائمة الخيارات) → **Export to CSV**. +2. ستحصل على ملف `chrome_history_YYYYMMDD.csv`. +3. افتحه في **Excel** أو **Google Sheets**؛ يمكنك الآن: + - **فرز** حسب تاريخ أو نطاق URL. + - **استخدام الفلاتر المتقدمة** (Data → Filter) للبحث عن كلمات محددة في العمود “Title” أو “URL”. + - **إنشاء Pivot Table** لتجميع الزيارات حسب النطاق أو اليوم. + +### 4️⃣ بحث متقدم باستخدام **Recoll** (اختياري) +إذا أردت فهرسًا أقوى يدعم **البحث النصي داخل محتوى الصفحات** (عند حفظ نسخة HTML)، اتبع الخطوات: + +```bash +# 1️⃣ تثبيت Recoll (على Windows) +# حمل مثبت .exe من https://www.lesbonscomptes.com/recoll/download.html +# أو على Linux: sudo apt install recoll + +# 2️⃣ استيراد CSV إلى قاعدة بيانات SQLite (Recoll يدعم SQLite) +# استخدم أداة مثل sqlitebrowser لإنشاء جدول: +sqlite3 history.db " +CREATE TABLE history ( + id INTEGER PRIMARY KEY, + url TEXT, + title TEXT, + visit_time INTEGER, -- وقت Unix epoch بالمللي ثانية + visit_count INTEGER +); +.mode csv +.import chrome_history_20240729.csv history +" + +# 3️⃣ أضف قاعدة البيانات إلى Recoll: +# افتح Recoll → Preferences → Index → Add → اختر ملف history.db → OK +# اضغط “Index” لتوليد الفهرس. + +# 4️⃣ الآن يمكنك البحث داخل Recoll باستخدام: +# - “url:youtube.com” لتصفية يوتيوب +# - “title:‘تجربة’” للبحث في العناوين +# - “date:2024‑07‑01..2024‑07‑31” لتحديد النطاق الزمني. +``` + +--- + +## 🛠️ حل مخصص – إنشاء امتداد Chrome بسيط لتسجيل الروابط وإتاحة بحث متقدم + +إذا كنت تريد **تحكمًا كاملاً** (مثلاً إضافة وسوم يدويًا، أو حفظ الصفحات كملفات HTML محليًا)، يمكنك بناء امتداد بضع أسطر من الكود. إليك دليل خطوة‑بخطوة مع ملفات جاهزة. + +### 1️⃣ بنية المجلد + +``` +my‑history‑logger/ +│─ manifest.json +│─ background.js +│─ popup.html +│─ popup.js +│─ style.css +│─ db.js # مكتبة IndexedDB بسيطة +``` + +### 2️⃣ `manifest.json` (Chrome Manifest V3) + +```json +{ + "name": "مسجل الروابط المتقدم", + "description": "يحفظ كل رابط تزوره مع وسوم وتاريخ، ويتيح بحثًا متقدمًا داخل المتصفح.", + "version": "1.0", + "manifest_version": 3, + "permissions": [ + "history", + "storage", + "tabs" + ], + "background": { + "service_worker": "background.js" + }, + "action": { + "default_popup": "popup.html", + "default_icon": { + "16": "icon16.png", + "48": "icon48.png", + "128": "icon128.png" + } + }, + "icons": { + "16": "icon16.png", + "48": "icon48.png", + "128": "icon128.png" + } +} +``` + +### 3️⃣ `background.js` – التقاط كل زيارة + +```js +// استمع إلى كل زيارة جديدة +chrome.history.onVisited.addListener(async (historyItem) => { + const { url, title, lastVisitTime } = historyItem; + + // استخرج النطاق (domain) لتسهيل الفلاتر + const domain = (new URL(url)).hostname; + + // احفظ السجل في IndexedDB + await db.save({ + url, + title: title || '', + domain, + visitTime: lastVisitTime, + tags: [] // وسوم فارغة يمكن إضافتها لاحقًا من الـ popup + }); +}); +``` + +### 4️⃣ `db.js` – طبقة IndexedDB بسيطة + +```js +const db = (() => { + const DB_NAME = 'HistoryLoggerDB'; + const STORE_NAME = 'visits'; + let dbInstance = null; + + function open() { + return new Promise((resolve, reject) => { + const request = indexedDB.open(DB_NAME, 1); + request.onupgradeneeded = (e) => { + const db = e.target.result; + const store = db.createObjectStore(STORE_NAME, { keyPath: 'id', autoIncrement: true }); + store.createIndex('url', 'url', { unique: false }); + store.createIndex('domain', 'domain', { unique: false }); + store.createIndex('visitTime', 'visitTime', { unique: false }); + store.createIndex('tags', 'tags', { unique: false, multiEntry: true }); + }; + request.onsuccess = (e) => { + dbInstance = e.target.result; + resolve(dbInstance); + }; + request.onerror = reject; + }); + } + + async function getStore(mode = 'readonly') { + if (!dbInstance) await open(); + const tx = dbInstance.transaction(STORE_NAME, mode); + return tx.objectStore(STORE_NAME); + } + + return { + save: async (record) => { + const store = await getStore('readwrite'); + store.add(record); + }, + // بحث متقدم + query: async ({text, domain, startDate, endDate, tags}) => { + const store = await getStore(); + const all = await store.getAll().then(r => r.result); + return all.filter(item => { + if (text && !(item.title.toLowerCase().includes(text.toLowerCase()) || + item.url.toLowerCase().includes(text.toLowerCase()))) return false; + if (domain && item.domain !== domain) return false; + if (startDate && item.visitTime < startDate) return false; + if (endDate && item.visitTime > endDate) return false; + if (tags && tags.length) { + const intersect = tags.filter(t => item.tags.includes(t)); + if (!intersect.length) return false; + } + return true; + }); + }, + // إضافة/إزالة وسوم + addTag: async (id, tag) => { + const store = await getStore('readwrite'); + const rec = await store.get(id).then(r => r.result); + if (!rec) return; + if (!rec.tags.includes(tag)) rec.tags.push(tag); + store.put(rec); + } + }; +})(); +``` + +### 5️⃣ `popup.html` – واجهة البحث + +```html + + + + + بحث في السجل + + + +

بحث متقدم

+ + + + + + +
+
+ + + + +``` + +### 6️⃣ `popup.js` – تنفيذ البحث وعرض النتائج + +```js +document.getElementById('btnSearch').addEventListener('click', async () => { + const text = document.getElementById('txtSearch').value.trim(); + const domain = document.getElementById('txtDomain').value.trim(); + const from = document.getElementById('dateFrom').value; + const to = document.getElementById('dateTo').value; + const tags = document.getElementById('txtTags').value.split(',').map(t => t.trim()).filter(Boolean); + + const startDate = from ? new Date(from).getTime() : null; + const endDate = to ? new Date(to).setHours(23,59,59,999) : null; + + const results = await db.query({text, domain, startDate, endDate, tags}); + + const container = document.getElementById('results'); + container.innerHTML = ''; + + if (!results.length) { + container.textContent = 'لم يُعثر على نتائج.'; + return; + } + + results.sort((a,b)=> b.visitTime - a.visitTime); // أحدث أولاً + + results.forEach(r => { + const div = document.createElement('div'); + div.className = 'item'; + const d = new Date(r.visitTime); + div.innerHTML = ` + ${r.title || r.url} + [${r.domain}] – ${d.toLocaleString()} +
وسوم: ${r.tags.join(', ') || 'بدون'}
+ `; + container.appendChild(div); + }); +}); +``` + +### 7️⃣ `style.css` (تصميم بسيط) + +```css +body {font-family: Arial, sans-serif; margin:10px; direction: rtl;} +h2 {font-size: 1.2em; margin-bottom: 5px;} +input, button {margin: 4px 0; width: 100%;} +button {background:#4A90E2; color:#fff; border:none; padding:6px;} +#results {margin-top:10px; max-height:300px; overflow:auto;} +.item {border-bottom:1px solid #e0e0e0; padding:5px 0;} +.item a {font-weight:bold; color:#2A5DB0; text-decoration:none;} +.item .meta {font-size:0.8em; color:#666; display:block;} +.item .tags {font-size:0.75em; color:#777;} +``` + +### 8️⃣ تثبيت الامتداد المحلي +1. افتح Chrome → `chrome://extensions/`. +2. فعّل **وضع المطور** (Developer mode). +3. اضغط **Load unpacked** واختر مجلد `my‑history‑logger`. +4. ستظهر أيقونة الامتداد؛ اضغط عليها لفتح نافذة البحث. + +> الآن كل زيارة تُسجَّل تلقائيًا، ويمكنك البحث عبر **نص، نطاق، تاريخ، وسوم** مباشرةً داخل المتصفح دون الحاجة لتصدير أي شيء. إذا أردت نسخة احتياطية، اضغط على **Ctrl+Shift+S** (أضف كزر في الـ popup) لتصدير السجلات إلى ملف JSON أو CSV. + +--- + +## 🔄 كيف تختار الأنسب لك؟ + +| الحاجة | أفضل خيار | +|-------|-----------| +| **أريد مجرد بحث سريع داخل المتصفح** | إضافة **History Search** (مجانية، لا تحتاج إعدادات). | +| **أحتاج تصدير CSV واستخدام Excel / Google Sheets** | إضافة **Chrome History Export** + Excel أو Google Sheets. | +| **أريد فهرس بحث نص كامل مع فلاتر معقّدة (regex, تاريخ، وسوم)** | **Recoll** أو **Elasticsearch + Kibana** بعد تصدير CSV. | +| **أريد حفظ الروابط مع وسوم وملاحظات، وإمكانية الوصول عبر الهواتف** | خدمة سحابية مثل **Raindrop.io** أو **Pinboard**. | +| **أريد تحكمًا كاملًا، وإمكانية إضافة وسوم يدوياً داخل المتصفح** | **امتداد Chrome مخصص** (الكود أعلاه). | + +--- + +## 📦 روابط التحميل المباشرة + +| الأداة | رابط التحميل | +|-------|--------------| +| **History Search** (امتداد) | | +| **Chrome History Export** | | +| **ChromeHistoryView (NirSoft)** | | +| **Recoll** | | +| **DocFetcher** | | +| **Raindrop.io** | | +| **Pinboard** | | + +--- + +## 🛡️ نصائح أمان وخصوصية + +1. **التحكم في الصلاحيات**: عند تثبيت أي إضافة تطلب صلاحية `history`، تأكد من أنها موثوقة (تُظهر عدد التنزيلات وتقييمات المستخدم). +2. **حفظ السجلات محليًا**: إذا كنت تستخدم امتدادًا مخصصًا أو `History Search`، فإن البيانات تُخزن في **IndexedDB** داخل المتصفح ولا تُرسل إلى خوادم خارجية. +3. **النسخ الاحتياطي**: احفظ نسخة من ملف CSV/JSON على قرص صلب خارجي أو خدمة سحابية مشفرة (مثل **Sync.com** أو **Proton Drive**). +4. **تشفير النسخة الاحتياطية** إذا احتوت على معلومات حساسة (مواقع تجارية، بيانات شخصية). + +--- + +## خلاصة سريعة (قائمة “ابدأ الآن”) + +| ✅ | الإجراء | الروابط | +|---|----------|----------| +| ☐ **ثبت “History Search”** | | Chrome Web Store | +| ☐ **جرّب البحث داخل الامتداد** (نص، نطاق، تاريخ). | — | — | +| ☐ **صدّر السجل إلى CSV** (من نفس الامتداد) إذا أردت تحليلًا أعمق. | — | — | +| ☐ **استورد CSV إلى Excel/Google Sheets** → استخدم الفلاتر المتقدمة. | — | — | +| ☐ **(اختياري) استخدم Recoll** لبحث نص كامل داخل الروابط أو ملفات HTML المحفوظة. | | — | +| ☐ **(اختياري) إذا تريد تحكمًا مطلقًا**: أنشئ امتداد Chrome وفق الكود أعلاه. | — | — | +| ☐ **ثبت إضافات الحماية** (uBlock Origin، Privacy Badger، Location Guard) لتقليل تتبع Google أثناء التصفح. | — | روابط سابقة | + +بهذا تكون لديك **أدوات جاهزة** لتسجيل كل رابط تزوره في Chrome، حفظ السجل، وإجراء **بحث متقدم** سواء داخل المتصفح نفسه أو عبر برامج سطح المكتب. إذا احتجت مساعدة في إعداد أي من الخطوات (مثلاً ربط Recoll بملف CSV أو تعديل الكود لإضافة وسوم تلقائية)، أخبرني وسأرسل لك التعليمات التفصيلية. 🚀 \ No newline at end of file