איסוף נתונים ידני מעשרות אתרים, ניטור מחירים בזמן אמת, אוטומציה של משימות חוזרות — אלה משימות שבלי תוסף לוקחות שעות. תוסף Chrome פועל במספר הקשרים: חלון קופץ לממשק, סקריפט תוכן לאינטראקציה עם DOM, ו-Service Worker לעיבוד ברקע. אנו מתכננים את הארכיטקטורה כך שכל מודול מבצע את תפקידו ללא עומס נוסף על הדפדפן.
במשך יותר מ-10 שנים סיפקנו יותר מ-50 תוספים עבור Chrome, Firefox ו-Edge — מאינטגרציות פשוטות ועד מערכות מורכבות עם יירוט תעבורה ו-Workbox. אנו עובדים עם Manifest V3 (הגרסה הנוכחית) ומבטיחים תאימות ל-Safari באמצעות polyfill. כל התוספים מתפרסמים ב-Chrome Web Store לאחר מעבר בדיקה.
כל תוסף נבדק על אתרים אמיתיים; זמני טעינה (LCP, TTFB) ועמידה ב-Core Web Vitals מאומתים. זה מבטיח פעילות יציבה גם בשימוש כבד. אנו גם מסייעים ברישום חשבון מפתח ובעדכונים שוטפים.
בעיות שאנו פותרים
אינטגרציה עם שירותי Web
התוסף חייב להחליף נתונים עם השרת, ה-CRM או ה-API שלך. מגבלות CORS, חוסר תאימות פרוטוקול — נקודות כאב טיפוסיות. אנו משתמשים ב-background worker כדי לתווך בקשות ולעבד תגובות. לדוגמה, בפרויקט אחד עבור לקוח שלנו, חברת מסחר אלקטרוני, התוסף העביר נתונים מ-CRM ל-1C דרך REST API, וקיצר את זמן הקלט ב-80% וחסך $15,000 בשנה בעבודת יד.
ביצועים עם נפחי נתונים גדולים
ניתוח אלפי עמודים או ניטור בזמן אמת דורש אופטימיזציה: debounce, שמירה במטמון ב-chrome.storage.local, תורי async. בלי זה, התוסף יכביד על הדפדפן. אנו מיישמים throttling ועיבוד אצווה — עומס המעבד יורד פי שלושה. במקרה אחד, קיצרנו את זמן טעינת העמוד ב-40% באמצעות טכניקות lazy loading.
אבטחה ועמידה במדיניות
התוסף לא חייב להפר את ה-CSP של האתר, להדליף נתונים או להשתמש ב-API מיושנים. אנו מקפידים על המלצות Manifest V3, משתמשים ב-declarativeNetRequest במקום webRequest לחסימה, ונמנעים מ-eval. כל הסקריפטים סטטיים.
איך אנחנו עושים את זה: מקרה של ניתוח שוק
בפרויקט אחד עבור לקוח שלנו, סוכנות ניטור מחירים, פיתחנו תוסף לאיסוף מחירים אוטומטי משוק. מחסנית: Manifest V3, Service Worker לסנכרון רקע, Content Script לחילוץ נתונים, chrome.storage.local לשמירה במטמון. ארכיטקטורה: Content Script אוסף נתונים ושולח אותם דרך chrome.runtime.sendMessage ל-Service Worker, שמצרף ושולח לשרת באמצעות fetch. זמן האיסוף קוצר פי 10, עומס הדפדפן מוזער. הלקוח דיווח על עלייה של 60% בדיוק הנתונים.
השוואה: Manifest V2 מול V3
| תכונה | Manifest V2 | Manifest V3 |
|---|---|---|
| תהליך רקע | Background Page (קבוע) | Service Worker (מונע אירועים) |
| חסימת בקשות | webRequest (דינמי) |
declarativeNetRequest (הצהרתי) |
| קוד מרוחק | מותר (eval) |
אסור (סקריפטים סטטיים בלבד) |
| אבטחה | נמוכה יותר | גבוהה יותר |
| זמן אתחול | ~2 שניות | ~1 שנייה (פי 2 מהר יותר) |
תוסף על Manifest V3 מופעל פי 2 מהר יותר מאשר על V2, הודות ל-Service Worker שלא צורך משאבים כשהוא במצב סרק. לפי Chrome Developers, המעבר ל-V3 משפר את האבטחה ומפחית את צריכת הסוללה.
איך הודעות עובדות בתוסף Chrome
הקשרי ביצוע מבודדים: Service Worker, חלון קופץ, Content Script ו-Options Page אין להם זיכרון משותף. התקשורת היא דרך chrome.runtime.sendMessage ו-chrome.runtime.onMessage. לחיבורים קבועים אנו משתמשים ב-chrome.runtime.connect וב-ports.
// Content script -> Background chrome.runtime.sendMessage( { type: 'FETCH_DATA', url: window.location.href }, (response) => console.log('Got:', response) ); // Background (service worker) chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.type === 'FETCH_DATA') { fetch(message.url) .then(r => r.json()) .then(data => sendResponse({ data })); return true; // сигнал, что ответ будет асинхронным } }); לחיבורי streaming או ארוכי טווח, עדיפים ports:
// Popup const port = chrome.runtime.connect({ name: 'popup' }); port.postMessage({ type: 'START_STREAM' }); port.onMessage.addListener(msg => updateUI(msg)); // Background chrome.runtime.onConnect.addListener(port => { if (port.name === 'popup') { port.onMessage.addListener(msg => { /* обработка */ }); } }); מה זה Manifest V3 ולמה זה חשוב?
גוגל העבירה את כל התוספים החדשים ל-Manifest V3. זה משפר את האבטחה והביצועים אבל דורש שינויים ארכיטקטוניים: Service Worker במקום Background Page, חסימת בקשות הצהרתית, ללא קוד מרוחק. אנו מתאימים תוספים קיימים ל-V3 ובונים חדשים עם כל הדרישות בחשבון.
{ "manifest_version": 3, "name": "My Extension", "version": "1.0.0", "description": "Описание расширения", "permissions": ["storage", "tabs", "activeTab", "scripting"], "host_permissions": ["https://*.example.com/*"], "background": { "service_worker": "background.js", "type": "module" }, "action": { "default_popup": "popup.html", "default_icon": { "16": "icons/icon16.png", "48": "icons/icon48.png", "128": "icons/icon128.png" } }, "content_scripts": [ { "matches": ["https://*.target-site.com/*"], "js": ["content.js"], "css": ["content.css"], "run_at": "document_idle" } ], "options_page": "options.html", "icons": { "48": "icons/icon48.png", "128": "icons/icon128.png" } } איך לרשום חשבון מפתח
- היכנסו ל-Chrome Web Store Developer Dashboard (https://chrome.google.com/webstore/devconsole) והיכנסו עם חשבון Google שלכם.
- שלמו את דמי הרישום החד-פעמיים של $5 (תקפים לכל החשבון).
- מלאו את פרופיל המפתח: שם, אימייל, מדינה.
- לאחר אישור, תוכלו להעלות ולפרסם תוספים.
אנו מסייעים ברישום ובמעבר הבדיקה — זה כלול בשירות.
תהליך הפיתוח
| שלב | משך | תוצאה |
|---|---|---|
| ניתוח | 1–2 ימים | מפרט טכני עם תיאורי תכונות ו-UX |
| עיצוב | 1–2 ימים | ארכיטקטורה, סכמת נתונים, אב-טיפוס UI |
| פיתוח | 5–10 ימים | חלון קופץ, Content Script, Service Worker, אינטגרציית API |
| בדיקות | 2–3 ימים | אימות על אתרים אמיתיים, מדידות LCP ו-TTFB |
| פריסה | 1–2 ימים | פרסום ב-Chrome Web Store, מעבר בדיקה |
ההשקעה הטיפוסית לתוסף Chrome מותאם אישית נעה בין $2,000 ל-$10,000 בהתאם למורכבות.
לוחות זמנים משוערים
תוסף פשוט עם חלון קופץ, אחסון ו-Content Script — 3–4 ימי עבודה. תוסף עם יירוט בקשות, פאנל צדדי, הגדרות ופרסום — 7–12 ימים. אנו נותנים הערכה מדויקת לאחר שיחה קצרה.
מה כלול
- קוד מקור עם הערות ותיעוד.
- דיאגרמת ארכיטקטורה מפורטת ותיעוד זרימת נתונים.
- גישה למאגר GitHub פרטי של התוסף.
- הוראות לפרסום ותחזוקה שוטפת.
- שעת הדרכה אחת לצוות שלכם.
- ייעוץ לגבי עדכונים ושיפורים למשך חודש.
- סיוע ברישום חשבון מפתח.
- שלושה חודשים של תמיכה לאחר השקה לתיקוני באגים קריטיים.
טעויות פיתוח טיפוסיות
- אי שימוש בשיטות async ב-Service Worker — מוביל לאובדן אירועים.
- סגירה לא נכונה של ports — דליפת זיכרון.
- התעלמות ממגבלות CSP של אתרי היעד — חסימת סקריפטים.
- קריאות תכופות מדי ל-
// Content script -> Background chrome.runtime.sendMessage( { type: 'FETCH_DATA', url: window.location.href }, (response) => console.log('Got:', response) ); // Background (service worker) chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.type === 'FETCH_DATA') { fetch(message.url) .then(r => r.json()) .then(data => sendResponse({ data })); return true; // сигнал, что ответ будет асинхронным } });— ירידה בביצועים. - אי טיפול בשגיאות בבקשות fetch — קריסות.
אנו לוקחים בחשבון את הניואנסים האלה ומתכננים את התוסף נכון מההתחלה.
דונו בפרויקט שלכם איתנו. קבלו ייעוץ — נעריך את המשימה ונציע פתרון תוך יום עסקים אחד. הזמינו פיתוח תוסף Chrome עכשיו.







