المؤلف: Alan D Moore (http://www.alandmoore.com ، البريد الإلكتروني ME_AT_ALANDMOORE_DOT_COM)
المساهمين:
Admbrowser هو متصفح خصيصًا للاستخدام على أكشاك الويب. يعتمد على PYQT5 و QTWebEngine (Chromium/Blink) ، وهو مصمم لجعل القفل بسيطًا للغاية وغير مؤلم.
تم تصوره في الأصل لاستخدامه في محطات كتالوج المكتبة ، عندما أصبح من الواضح أن المتصفحات التي تحتوي على قوائم ميزة متزايدة باستمرار مثل Firefox و Chrome كانت الكثير من العمل التي لا يمكن قفلها بشكل صحيح وكامل. تم تصميمه أيضًا ليكون قابلاً للتكوين بسهولة باستخدام ملف نصي بسيط يمكن تحريره يدويًا في محطة عبر SSH عبر WAN البطيء ، لذلك لا توجد قواعد بيانات أو XML أو الثنائيات المجنونة هنا.
Admbrowser هو شوكة Wcgbrowser ، مع هذه الاختلافات الرئيسية:
العديد من الميزات التي كانت في WCGBrowser مكسورة أو غير متوفرة ببساطة لأن QTWebEngine تفعل الأشياء بشكل مختلف عن QTWebKit.
يجب أن تعمل على أي منصة ، ولكن تم اختبارها فقط على Arch Linux و Debian و Ubuntu.
يعرض ملف admbrowser.yaml تضمين تكوين مثال موثق. لاستخدامه ، انسخه إلى /etc/admbrowser.yaml ، ~/.admbrowser.yaml ، أو حدده بمفتاح -C (--config). يمكنك جعل Admbrowser.py قابلة للتنفيذ ، أو تشغيله باستخدام Python ، مثل ذلك:
Python admbrowser.py
على الأقل ، تحتاج إلى تحديد start_url باستخدام إما ملف التكوين أو مفتاح -L ، وإلا فإن المتصفح لا يستخدم كثيرًا. من الأفضل القيام بالتكوين المتقدم في ملف التكوين ، ولكن يمكن تمكين العديد من الميزات الأساسية أو تعطيلها في سطر الأوامر باستخدام هذه المفاتيح:
| يُحوّل | وصف |
|---|---|
| --Debug_log | إرسال إخراج تصحيح إلى ملف محدد |
| --مقاس | اضبط حجم النافذة الأولي على أنه "<didth> x <shight>" (على سبيل المثال "800x600") ، "Max" للتعظيم ، أو "كامل" للشروط الكاملة. |
| -proxy_server | قم بتعيين مضيف ومنفذ خادم الوكيل ، في النموذج <Sost>: <port> |
| -C ،-ملف | حدد ملف التكوين للاستخدام |
| -D ، -Debug | تقديم ناتج تصحيح الأخطاء إلى stdout |
| -e ، -allow_external | السماح للمتصفح بفتح المحتوى في البرامج الخارجية عبر نوع MIME |
| -g ، -allow_plugins | السماح باستخدام الإضافات مثل Flash ، Java ، إلخ. |
| -H ، -help | عرض مساعدة سريعة على بناء جملة سطر الأوامر |
| -i ،-iCon-theme | موضوع الأيقونة للاستخدام. ستحتاج إلى تثبيت هذه الموضوعات بنفسك |
| -l ، -url | "موقع البدء" للمتصفح. هذا هو عنوان URL الأولي الذي سيتم تحميله ، وحيث سيعود عند إعادة التعيين. |
| -n ،-no-navigation | قم بإيقاف تشغيل لوحة التنقل (الخلف ، إلى الأمام ، المنزل ، الاختصارات ، إلخ). |
| -P ، -popups | تمكين إنشاء نوافذ جديدة عند النقر فوق الرابط الذي يفتح في نافذة جديدة ، أو يحاول JavaScript فتح نافذة |
| -t ، الوقت | مهلة مراقبة عدم النشاط. بعد هذه الثواني العديدة من عدم النشاط ، أعد ضبط المتصفح |
| -u ، -المستخدم | قم بتعيين اسم المستخدم الافتراضي ليتم إرساله عند طلب مصادقة الموقع |
| -W ، -كلمة المرور | قم بتعيين كلمة المرور الافتراضية المراد إرسالها عند طلب مصادقة الموقع |
| -Z ، -Zoom | عامل التكبير الافتراضي للمحتوى. 0 يتجاهل هذا. 1 هو افتراضي ، 2 سيكون حجم مزدوج ، 0.5 سيكون نصف الحجم ، إلخ. |
يقبل Admbrowser أيضًا وسيطات سطر أوامر QT المدمجة ، والتي توفر بعض التجاوزات منخفضة المستوى. يمكن العثور على وثائق هذه المفاتيح على https://doc.qt.io/qt-5/qapplication.html#qapplication.
يتم التعليق بالكامل على ملف تكوين العينة ، ويجب أن يكون من السهل جدًا تكوينه إذا قرأته للتو. في حال كنت ترغب فقط في البدء من نقطة الصفر ، إليك خيارات التكوين الحالية المتاحة للتطبيق.
| اسم الخيار | القيمة الافتراضية | توضيح |
|---|---|---|
| left_external_content | خطأ شنيع | سواء أكان للسماح للمحتوى غير HTML أم لا ، على سبيل المثال ، ملفات PDF. إذا كان هذا صحيحًا ، فأنت بحاجة إلى تحديد معالج المحتوى لنوع MIME أو خطأ 404 ، "خطأ الشبكة" ، أو من المحتمل أن يتم عرض صفحة فارغة للمستخدم. |
| ALMBLING_PLUGINS | خطأ شنيع | إذا كان هذا صحيحًا ، يتيح استخدام الإضافات مثل Flash و Java ، إلخ. |
| left_popups | خطأ شنيع | سواء أكان للسماح للملاحة أو لا يتطلب فتح نافذة متصفح جديدة ، مثل javaScript Window.Open () المكالمات أو الروابط بهدف "_blank". إذا كان خطأ ، سيتم تجاهل التنقل. إذا كان ذلك صحيحًا ، فسيتم إنشاء نافذة جديدة كما هو متوقع. |
| force_js_confirm | "بسأل" | إذا تم تعيينه على "قبول" أو "رفض" ، فسيتخطى أي مربعات حوار JavaScript ، فأنت سلكي ، مع الإجابة المحددة ، إذا تم تعيينها على "Ask" (The Default) سوف تسأل المستخدم في كل مرة. |
| قمع | خطأ شنيع | إذا كان هذا صحيحًا ، فسيحجب تنبيهات JavaScript المنبثقة من الظهور ، أو يظهرها عند خطأ. |
| left_printing | خطأ شنيع | تمكين طباعة صفحات الويب من قائمة السياق أو شريط الأدوات. |
| print_settings | (فارغ) | حدد إعدادات الطابعة الافتراضية ، انظر أدناه. |
| default_password | (فارغ) | كلمة المرور الافتراضية التي يجب إرسالها عند طلب الصفحات مصادقة |
| default_user | (فارغ) | اسم المستخدم الافتراضي لإرساله عند طلب الصفحات المصادقة |
| icon_theme | (QT5 الافتراضي) | موضوع أيقونة لاستخدامه في أيقونات التنقل |
| ملاحة | حقيقي | عرض شريط التنقل في الجزء العلوي (الخلف/إلى الأمام/إعادة التحميل/المرجعية/الإقلاع) |
| navigation_layout | (انظر أدناه) | يضع تخطيط شريط التنقل. انظر التفسير التفصيلي أدناه. |
| network_down_html | (فارغ) | حاليًا _broken المسار الكامل إلى ملف يحتوي على HTML والذي سيتم عرضه عند تحميل صفحة Start_url ، مما يشير على الأرجح إلى نوع من خطأ الشبكة. |
| page_unavailable_html | (فارغ) | حاليًا _Broken المسار الكامل إلى ملف يحتوي على HTML والذي سيتم عرضه عندما لا يمكن تحميل الصفحة ، إما لأنه لا يمكن الوصول إليه أو حظره بواسطة قيود الأمان. |
| privacy_mode | حقيقي | تمكين أو تعطيل وضع التصفح الخاص |
| user_agent | (QT5 الافتراضي) | يتجاوز سلسلة وكيل المستخدم الافتراضية. |
| Proxy_server | (فارغ) | يعين سلسلة خادم الوكيل لوكيل HTTP. يأخذ مضيف النموذج: المنفذ ، أو فقط مضيف إذا كنت ترغب في استخدام المنفذ الافتراضي 8080. |
| quit_button_mode | إعادة ضبط | تمامًا مثل Timeout_Mode ، هذا هو الإجراء الذي تم اتخاذه عند الضغط على زر الإقلاع (نفس الخيارات) |
| quit_button_text | "أنا وانتهى" | رسالة نصية لعرضها على زر الإقلاع/إعادة ضبط. يمكن أن تشمل مؤشر تسريع (&). |
| screensaver_url | حول: فارغة | عنوان URL للزيارة عند الخمول. لا يهم إلا أن TimeOut_Mode هو "Screensaver" و "Timeout" غير صفري. |
| SSL_MODE | حازم | يحدد كيفية معالجة المتصفح أخطاء شهادة SSL. "الصارم" سوف يعطي خطأ ويمنع الوصول إلى عنوان URL الإشكالي. "تجاهل" سوف يتجاهل بصمت الأخطاء ويسمح للوصول. |
| start_url | حول: فارغة | عنوان URL البدء |
| ورقة الأنماط | (فارغ) | اسم الملف لورقة أنماط QSS-Format لاستخدامها لتصميم نافذة التطبيق. انظر مثال ملف. |
| نفذ الوقت | 0 | عدد الثواني من عدم النشاط قبل إغلاق المتصفح أو يعيد ضبط نفسه. قيمة 0 تعطل الميزة. |
| timeout_mode | إعادة ضبط | الإجراء الذي تم تنفيذه على مهلة عدم النشاط. يمكن "إعادة تعيين" القيم (للعودة إلى عنوان URL و Clear History) أو "إغلاق" (لإغلاق البرنامج) أو "Screensaver" (لعرض Screensaver_url أثناء الخمول) |
| القائمة البيضاء | (فارغ) | قائمة بمجالات الويب أو المضيفين للسماح بالوصول إلى (انظر أدناه). |
| window_icon | (فارغ) | المسار الكامل لملف الأيقونة ليتم عرضه من قبل مدير النافذة. |
| Window_size | "الأعلى" | اجعل النافذة افتراضية لهذا الحجم. يمكن أن يكون <didth> x <shight> (على سبيل المثال "800x600") ، "Max" للتعظيم ، أو "كامل" للكامل. |
| window_title | "متصفح" | عنوان نافذة مخصص ليتم عرضه من قبل مدير النافذة. |
| Zoom_Factor | 1.0 | كمية التكبير المطبقة على الصفحات. .5 هو نصف الحجم ، 2.0 هو حجم مزدوج ، إلخ. |
يتم إنشاء الإشارات المرجعية في قائمة YAML تسمى "مرجعية" مع هذا التنسيق:
المرجعية:
1:
الاسم: "الاسم المرجعية"
عنوان URL: "http: //bookmark.url/"
الوصف: "وصف قصير للإشارة المرجعية ، لقطعة الأدوات"
2:
الاسم: "اسم آخر إشارة مرجعية":
عنوان URL: "http://example.com/some_bookmark"
الوصف: "وصف قصير لهذا المرجعية"
يمكن أن تتضمن أسماء المرجعية ampersand لتحديد مفتاح تسريع. يمكنك أيضًا تحديد إدخالات إشارة مرجعية مثل ذلك:
المرجعية:
"الاسم المرجعية":
عنوان URL: "http: //bookmark.url/"
الوصف: "وصف قصير للإشارة المرجعية ، لقطعة الأدوات"
هذا أكثر إحكاما ، ولكن الجانب السلبي هو أنه ليس لديك سيطرة على ترتيب الإشارات المرجعية (يتم طلبها بواسطة المفتاح ، لذلك سيكون أبجديًا بالاسم). هذا الوضع مخصص حقًا للتوافق المتخلف ، ولكن إذا كان لديك الكثير من الإشارات المرجعية التي تريدها الأبجدية وتريد حفظ بعض الكتابة ، فقد يكون هذا هو السبيل للذهاب.
إذا كنت تسمح بإطلاق محتوى خارجي ، فإن صفيف "content_handlers" يتيح لك تحديد البرامج التي سيتم فتح المحتوى الخارجي حسب نوع MIME. يبدو أن بناء الجملة هكذا:
content_handlers: "Application/PDF": "XPDF" "Application/vnd.oasis.opendocument.text": "libreoffice"
ستقوم Admbrowser بتنزيل الملف على دليل مؤقت وتمريره كوسيطة لأي أمر تحدده في العمود الثاني. كن على دراية بهذا ، كما قد ترغب في بعض الحالات في كتابة برنامج نصي من نوع ما للتعامل مع بعض أنواع الملفات أو البرامج التي لا تتعامل بشكل صحيح مع الحجج.
المعلمة "navigation_layout" هي قائمة العناصر التي يجب وضعها على شريط التنقل ، إذا كانت تظهر. يمكنك الاختيار من بين ما يلي:
يمكن تحديد القائمة بتنسيق قائمة YAML صالحة ، لكنني أوصي به في أقواس مربعة وفصل مع الفواصل. يمكن استخدام "فاصل" و "فاصل" عدة مرات كما يحلو لك ، يجب استخدام الآخرين مرة واحدة فقط.
تتم إضافة ميزة القائمة البيضاء كملاحة للمساعدة في حبس كشكك عندما لا يكون لديك سيطرة كاملة على جميع الروابط على صفحات كشكك وتريد منع المستخدمين من الانتقال إلى مواقع غريبة. إنه ليس جدار حماية أو مرشح محتوى ، وقد لا يتصرف بالضبط كيف تتوقعه ؛ لذلك إذا كنت تخطط لاستخدامه ، فيرجى قراءة قليلاً حول ما يفعله وما لا يفعله.
إذا كنت لا ترغب في استخدام ميزة القائمة البيضاء ، فما عليك سوى التعليق عليها ، أو اترك القائمة فارغة ، أو أعطها قيمة "false".
يمكنك إعطاء قائمة النطاقات أو المضيفين القائمة البيضاء ، مثل هذا:
القائمة البيضاء: ["Offhost.example.com" ، "بعض المضيف المحلي" ، "mydomain.org"]
عندما ينقر المستخدم على رابط أو يحاول التنقل بطريقة أخرى إلى صفحة ، يتم استخراج اسم المضيف من عنوان URL المطلوب ومطابقة مع القائمة البيضاء. إذا كانت هناك تطابق ، يتم عرض الصفحة ؛ إذا لم يكن كذلك ، يتم عرض نص الخطأ.
بعض الأشياء تلقائية:
إذا كنت ترغب فقط في إدراك start_url ومرجع عناوين URL ولا شيء آخر ، يمكنك فقط القيام بذلك في ملف التكوين:
القائمة البيضاء: صحيح
عند الاعتماد على القائمة البيضاء التلقائية ، من المهم أن نفهم أن السلسلة المضيفة الكاملة لعناوين URL هذه هي القائمة البيضاء. على سبيل المثال ، إذا كانت start_url الخاصة بك هي "http://example.com" ، "مثال.com" ستتم إضافة إلى القائمة البيضاء (وبالتالي جميع النطاقات الفرعية لـ example.com ، مثل foo.example.com ، bar.example.com ، إلخ). إذا قمت بتحديد "http://www.example.com" باعتباره Start_url ، على الرغم من إضافة "www.example.com" إلى القائمة البيضاء. وهكذا ، لن يتم قائمة "foo.example.com".
لاحظ أيضًا أنه إذا كنت تقوم بإعادة توجيه عنوان URL الذي تقوم بإعادة توجيهك إلى مضيف آخر ، فيجب عليك تحديد كلا المضيفين في القائمة البيضاء.
وضع Screensaver هو وضع مهلة خاص يتيح لك عرض عنوان URL معين فقط بينما يكون المتصفح خاملاً. النظر في تكوين مثل هذا:
start_url: 'http://example.com/kiosk' مهلة: 1800 timeout_mode: 'screensaver' screensaver_url: 'http://example.com/slides'
هذا التكوين سيفعل ما يلي:
يمكن أن يكون ScreenSaver_url ، على سبيل المثال ، دوران الصورة ، صفحة مع إعلانات ، رسالة ترحيب ، وما إلى ذلك. لا يهم حقًا ، ولكن ضع في اعتبارك أن المستخدم لا يمكنه التفاعل فعليًا مع صفحة الشاشة ، لأنه بمجرد لمس الماوس أو لوحة المفاتيح ، سيتم تحميل Start_url.
سيسمح لك Admbrowser بتعيين مضيف (اسم أو IP) ورقم المنفذ لوكيل HTTP. لا يتم دعم HTTPS أو FTP أو Socks أو Proxy المصادق عليه حاليًا. يمكنك تعيين إعدادات الوكيل واحدة من ثلاث طرق:
لتعيين خادم الوكيل ، استخدم مضيف التنسيق: المنفذ ، كما في هذه الأمثلة:
proxyserver.mynetwork.local: 3128 LocalHost: 8080 192.168.1.1:8880
إذا أهملت تضمين منفذ ، ووضع عنوان IP أو اسم المضيف ، فسيتم استخدام المنفذ 8080 افتراضيًا.
لاحظ أن هذه الميزة قد لا تعمل على بعض نظام التشغيل. يعتمد حاليًا على تعيين متغير بيئة HTTP_Proxy (بغض النظر عن الطريقة التي تستخدمها لتكوينها) ، والتي قد لا تحترم على جميع الأنظمة. إنه بالتأكيد يعمل على Linux ، وربما على أي نظام يشبه Unix.
يدعم Admbrowser تكوين إعدادات الطابعة الافتراضية ويسمح للطباعة دون عرض مربع حوار. يتم تعيين الخيارات مع متغير print_settings. على سبيل المثال:
print_settings:
صامت: صحيح
الهوامش: [5 ، 5 ، 3 ، 3]
التوجيه: "المناظر الطبيعية"
الخيارات التالية مدعومة:
| اسم الخيار | القيمة الافتراضية | توضيح |
|---|---|---|
| صامت | خطأ شنيع | عندما يكون صحيحًا ، سيطبع Admbrowser فورًا دون إظهار مربع حوار الطباعة. |
| توجيه | "لَوحَة" | يحدد الطباعة في التوجه صورة أو المناظر الطبيعية. |
| size_unit | "ملليمتر" | يحدد وحدة القياس المستخدمة من قبل متغيرات paper_size والهامش. يمكن أن يكون "ملليمتر" أو "نقطة" أو "بوصة" أو "بيكا" أو "Didot" أو "Cicero" أو "DevicePixel". |
| هوامش | (الطابعة الافتراضية) | يحدد هوامش الطابعة كقائمة في النموذج: [يسار ، أعلى ، يمين ، أسفل]. مثال: [5 ، 3.5 ، 6 ، 2.4]. يتم تحديد الوحدات بواسطة متغير Size_Unit. |
| paper_size | (الطابعة الافتراضية) | يحدد حجم الورق كقائمة في النموذج: [العرض ، الارتفاع]. مثال: [500 ، 650.5]. يتم تحديد الوحدات بواسطة متغير Size_Unit. |
| دقة | (الطابعة الافتراضية) | يحدد دقة الطابعة في PPI (بكسل لكل بوصة). |
| وضع | "شاشة" | يحدد الدقة التي ستستخدمها الطابعة ، "الشاشة": دقة الشاشة (الافتراضية) أو "عالية": الحد الأقصى للطابعة الدقة |
فيما يلي قيود معروفة:
ظهرت المشكلات التالية مع الميناء من QTWebKit إلى QTWebEngine:
إذا وجدت الأخطاء ، فيرجى الإبلاغ عنها على أنها "مشكلة" في صفحة GitHub للمشروع: http://github.com/alandmoore/admbrowser/issues. إذا كان "الخطأ" الخاص بك هو طلب ميزة ، انظر أدناه.
يمكن لـ Admbrowser العمل على Raspberry Pi ، من الناحية النظرية ، ولكن ليس على Raspbian 10 . يتطلب Admbrowser QTWebEngine ، والتي (اعتبارًا من يناير 2020) لا يتم تعبئتها من أجل Raspbian 10.
من أجل استخدام Admbrowser ، تحتاج إلى استخدام توزيع يوفر نسخة عمل من QTWebEngine. اعتبارًا من يناير 2020 ، تم اختبار حلول مختلفة مع النتائج التالية (تم اختبارها على PI 3B+):
| توزيعة | قوس | يعمل؟ | توضيح |
|---|---|---|---|
| Opensuse Leap 15.1 | ARM64 | نعم | يبدو أن العمل لا تشوبه شائبة ، على الرغم من بطيئة إلى حد ما. |
| أوبونتو ماتي 20.04 ألفا | Armhf | نعم | يبدو أن العمل لا تشوبه شائبة ، لكنه بطيء للغاية. أبطأ من Opensuse. |
| أوبونتو ماتي 18.04 | Armhf | بالكاد | إطلاق ، ولكن segfaults في كثير من الأحيان أثناء تحميل الصفحات. |
| خادم Ubuntu 19.10 | ARM64 | لا | PYQT Scripts segfault على إنشاء qapplication إذا تم استيراد QTWebEngineWidgets. |
| FedBerry 27 | ARMV7 | لا | segv_maperr عند محاولة إظهار QWebengineView |
انظر القضية رقم 16 للاطلاع على مناقشة مستمرة لدعم Raspberry Pi.
المساهمات موضع ترحيب ، طالما أنها تتفق مع روح ونية المتصفح-أي أنها ميزات مفيدة في كشك أو لافتات أو غيرها من الموقف ، والحفاظ على المتصفح بسيطًا للتكوين. أفضّل أيضًا أن يتم اختيار التغييرات في الميزات أو السلوك (تتطلب مفتاحًا لتمكينها) ، ما لم يكن من المنطقي فعل ذلك بهذه الطريقة.
إذا كنت تساهم في الكود ، يرجى اتباع أفضل الممارسات:
إذا كانت هناك ميزات ترغب في رؤيتها مدعومة في هذا المشروع ، فلديك ثلاثة خيارات لرؤيتها تنفذها:
يتم إصدار Admbrowser بموجب شروط GNU GPL V3.