Автор: Алан Д. Мур (http://www.alandmoore.com, e-mail me_at_alandmoore_dot_com)
Участники:
Admbrowser - это браузер, специально предназначенное для использования в веб -киосках. Он основан на PYQT5 и QTWEBENGINE (Chromium/Blink) и предназначен для того, чтобы сделать блокировку очень простой и безболезненной.
Первоначально он был задумано для использования в терминалах каталога библиотеки, когда стало ясно, что браузеры с постоянно растущими списками функций, таких как Firefox и Chrome, были слишком много работы, чтобы записать правильно и полностью заблокировать. Он также был разработан, чтобы его легко настраивать с использованием простого текстового файла, который может быть отредактирован вручную в терминале над SSH через медленный ван, поэтому здесь нет баз данных, XML или сумасшедших двоичных файлов.
Admbrowser - вилка Wcgbrowrowser, с этими ключевыми различиями:
Многие особенности, которые были в 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 | Отправить вывод отладки в указанный файл |
| --размер | Установите начальный размер окна как «<sidth> x <Height>» (например, «800x600»), «макс» для максимизации или «полного» для полноэкранного. |
| -Прокси_Server | Установите хост и порт прокси -сервера в форме <Хост>: <порт> |
| -c,-config-file | Укажите файл конфигурации для использования |
| -Д, -дебуг | Обеспечить вывод отладки в Stdout |
| -e, -allow_external | Позвольте браузеру открывать контент во внешних программах через тип MIME |
| -g, -allow_plugins | Разрешить использование плагинов, таких как Flash, Java и т. Д. |
| -h, -help | Показать быструю помощь в синтаксисе командной строки |
| -i,-ИКОН-ТЕМА | Тема значка для использования. Вам нужно будет установить эти темы самостоятельно |
| -l, -url | «Начало место» для браузера. Это начальный URL, который он загрузит, и куда он вернется при сбросе. |
| -n,----навигация | Выключите навигационную панель (назад, вперед, дома, ярлыков и т. Д.). |
| -p, - -popups | Включите создание новых окон, когда нажимается ссылка, которая открывается в новом окне, или JavaScript пытается открыть окно |
| -t, -timeout | Тайм -аут для монитора бездействия. После столько секунд бездействия сбросить браузер |
| -u, -User | Установите имя пользователя по умолчанию, чтобы отправить, когда сайт запрашивает аутентификацию |
| -W, - -пасвин | Установите пароль по умолчанию, чтобы отправить, когда сайт запрашивает аутентификацию |
| -z, --zoom | Коэффициент увеличения по умолчанию для контента. 0 игнорирует это. 1 по умолчанию, 2 будет двойным размером, 0,5 будет половина размера и т. Д. |
Admbrowser также принимает встроенные аргументы командной строки QT, которые обеспечивают некоторые низкоуровневые переопределения. Документация этих коммутаторов можно найти по адресу https://doc.qt.io/qt-5/qapplication.html#qapplication.
Образец файла конфигурации полностью прокомментирован и должен быть довольно легко настроить, если вы только что прочитали его. Если вы просто хотите начать с нуля, вот текущие параметры конфигурации, доступные для приложения.
| Имя опции | Значение по умолчанию | Объяснение |
|---|---|---|
| ALLIGHT_EXTERNAL_CONTENT | ЛОЖЬ | Разрешить ли не HTML-контент, например, PDF-файлы. Если это правда, вам необходимо указать обработчик контента для типа MIME или ошибку 404, «сетевая ошибка», или пустая страница, вероятно, будет отображаться пользователю. |
| Alling_plugins | ЛОЖЬ | Если это правда, позволяет использовать плагины, такие как Flash, Java и т. Д. |
| Alling_popups | ЛОЖЬ | Независимо от того, разрешает ли навигацию, которая требует открытия нового окна браузера, например, javaScript window.open () вызовы или ссылки с целью «_blank». Если ложь, навигация будет игнорирована. Если это правда, будет создано новое окно, как и ожидалось. |
| force_js_confirm | "просить" | Если установить для «принять» или «отрицание», будет переоценить любой JavaScript. |
| Suppress_alerts | ЛОЖЬ | Если это правда, блокирует всплывающие оповещения JavaScript от появления или показывает их, когда они ложны. |
| Alling_printing | ЛОЖЬ | Включить печать веб -страниц из контекстного меню или панели инструментов. |
| print_settings | (пустой) | Укажите настройки принтера по умолчанию, см. Ниже. |
| default_password | (пустой) | Пароль по умолчанию для отправки при аутентификации запроса страниц |
| default_user | (пустой) | Имя пользователя по умолчанию для отправки, когда аутентификация запроса страниц запроса |
| icon_theme | (QT5 по умолчанию) | Тема значков для использования для навигационных значков |
| навигация | Истинный | Отображение навигационной панели вверху (Back/Forward/Reload/Bookmarks/quit) |
| navigation_layout | (см. ниже) | Устанавливает макет навигационной панели. Смотрите подробное объяснение ниже. |
| network_down_html | (пустой) | В настоящее время_BROKED Полный путь к файлу, содержащему HTML, который будет отображаться, когда страница start_url не может быть загружена, что, вероятно, указывает на какую -то сетевую ошибку. |
| page_unavailable_html | (пустой) | В настоящее время_ проклят полный путь к файлу, содержащему HTML, который будет отображаться, когда страница не может быть загружена, либо потому, что он не доступен или заблокирован ограничениями безопасности. |
| privacy_mode | Истинный | Включить или отключить режим частного просмотра |
| user_agent | (QT5 по умолчанию) | Переопределяет строку агента пользователя по умолчанию. |
| proxy_server | (пустой) | Устанавливает строку Proxy Server для HTTP Proxy. Принимает хост формы: порт или просто хост, если вы хотите использовать порт по умолчанию 8080. |
| quit_button_mode | перезагрузить | Так же, как timeout_mode, только это действие, предпринятое при нажатии кнопки «Отказаться» (те же параметры) |
| quit_button_text | "Я и закончен" | Текст для отображения на кнопке «Отказаться»/сброс. Может включать индикатор акселератора (&). |
| Screensaver_url | О: пусто | URL -адрес посетить, когда холостое время. Важно только тогда, когда Timeout_Mode - это «заставка», а «Тайм -аут» - это ненулевое. |
| ssl_mode | строгий | Определяет, как браузер обрабатывает ошибки сертификата SSL. «Строгие» просто даст ошибку и предотвратит доступ к проблемному URL. «Игнорировать» молча игнорирует ошибки и разрешит доступ. |
| start_url | О: пусто | Начальный URL |
| таблица стиля | (пустой) | Имя файла таблицы стилей-формата QSS для стиля окна приложения. См. Пример файла. |
| тайм -аут | 0 | Количество секунд бездействия до закрытия браузера или сбрасывается. Значение 0 отключает функцию. |
| timeout_mode | перезагрузить | Действие выполнено на тайм -аут бездействия. Значения могут быть «сбросить» (чтобы вернуться к URL -URL и прояснить историю), «закрыть» (чтобы закрыть программу) или «заставка» (для отображения Screensaver_url во время холостого хода) |
| белый список | (пустой) | Список веб -доменов или хостов, чтобы разрешить доступ (см. Ниже). |
| window_icon | (пустой) | Полный путь файла значка, который будет показан диспетчере Window. |
| window_size | "Макс" | Сделайте окно по умолчанию такого размера. Может быть <wish> x <высота> (например, «800x600»), «макс» для максимизации или «полного» для полноэкранного. |
| window_title | "Браузер" | Пользовательский заголовок окна, который будет показан менеджером Window. |
| Zoom_factor | 1.0 | Сумма масштабирования применяется на страницах. .5 - это половина размера, 2,0 - двойной размер и т. Д. |
Закладки созданы в списке YAML под названием «Закладки» с этим форматом:
закладки:
1:
Название: «Название закладки»
URL: "http: //bookmark.url/"
Описание: «Краткое описание закладки, для подъема инструментов»
2:
Название: «Еще одно имя закладки»:
URL: "http://example.com/some_bookmark"
Описание: «Краткое описание этой закладки»
Названия закладок могут включать Ampersand для указания ключа акселератора. Вы также можете указать записи закладки, как SO:
закладки:
"Название закладки":
URL: "http: //bookmark.url/"
Описание: «Краткое описание закладки, для подъема инструментов»
Это более компактно, но недостатком является то, что вы не контролируете порядок закладок (они заказываются ключом, поэтому он будет алфавитно по имени). Этот режим действительно для обратной совместимости, но если у вас есть много закладок, которые вы хотите алфавит, и хотите сохранить некоторую набор, это может быть путь.
Если вы позволяете запустить внешний контент, массив "content_handlers" позволяет указать, в каких программах внешний контент откроется типом MIME. Синтаксис выглядит так:
content_handlers: "Приложение/PDF": "xpdf" "Application/vnd.oasis.opendocument.text": "libreoffice"
Admbrowser загрузит файл в каталог Temp и передает его в качестве аргумента любой команде, которую вы указали во втором столбце. Имейте в виду это, так как в некоторых случаях вы можете написать какой -то сценарий обертки, чтобы справиться с некоторыми типами файлов или программ, которые не имеют должного обращения с аргументами.
Параметр «navigation_layout» - это список элементов, которые можно разместить на панели навигации, если он показывает. Вы можете выбрать следующее:
Список может быть указан в любом действительном формате списка YAML, но я рекомендую приложить его в квадратные брекеты и разделить запятыми. «Разделитель» и «проставка» могут использоваться столько раз, сколько вы хотите, остальные должны использоваться только один раз.
Функция белого списка добавляется в качестве удобства, чтобы помочь заблокировать ваш киоск, если у вас нет полного контроля над всеми ссылками на страницах киоска и хотите не дать пользователям не обращаться на странные сайты. Это не брандмауэр или фильтр контента, и он может не вести себя точно, как вы ожидаете; Поэтому, если вы планируете его использовать, пожалуйста, прочитайте немного о том, что он делает, а что он не делает.
Если вы не хотите использовать функцию белого списка, просто прокомментируйте ее, оставьте список пустым или дайте ему значение «false».
Вы даете белому списку список доменов или хостов , например:
Whitelist: ["somehost.example.com", "Some-Local-Host", "mydomain.org"]
Всякий раз, когда пользователь нажимает на ссылку или иным образом пытается перейти на страницу, имя хоста извлекается из запрошенного URL -адреса и сопоставлено с белым списком. Если есть совпадение, отображается страница; Если нет, то отображается текст ошибки.
Некоторые вещи автоматические:
Если вы просто хотите белый список URL -адреса start_url и закладки и ничего другого, вы можете просто сделать это в файле конфигурации:
Белый список: правда
Полагаясь на автоматический белый список, важно понимать, что полная цепочка хоста этих URL -адресов - белая списка. Так, например, если ваш start_url - это «http://example.com», «example.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 может быть, например, ротатором изображения, страницей с рекламой, приветственным сообщением и т. Д. Это на самом деле не имеет значения, но имейте в виду, что пользователь не может на самом деле взаимодействовать с страницей Screensaver, потому что, как только они касаются мыши или клавиатуры, start_url загрузится.
Admbrowser позволит вам установить хост (имя или IP) и номер порта для HTTP -прокси. HTTPS, FTP, носки или аутентифицированный прокси в настоящее время не поддерживаются. Вы можете установить настройки прокси по одному из трех способов:
Чтобы установить прокси -сервер, используйте хост формата: порт, как в этих примерах:
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]
Ориентация: "Пейзаж"
Поддерживаются следующие варианты:
| Имя опции | Значение по умолчанию | Объяснение |
|---|---|---|
| тихий | ЛОЖЬ | Когда True, Admbrowser сразу же печатает, не показывая диалоговое окно печати. |
| ориентация | "портрет" | Определяет печать в портретной или ландшафтной ориентации. |
| size_unit | "миллиметр" | Указывает, какую единицу меры используется с переменными Paper_size и маржи. Может быть «миллиметром», «точка», «дюйм», «pica», «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 | Да | Кажется, работает безупречно, хотя и несколько медленно. |
| Ubuntu Mate 20.04 Альфа | Армф | Да | Кажется, работает безупречно, но очень медленно. Медленнее, чем OpenSuse. |
| Ubuntu Mate 18.04 | Армф | Почти | Запускает, но сегфульты часто при загрузке страниц. |
| Ubuntu Server 19.10 | ARM64 | Нет | Pyqt Scripts Segfault по созданию QApplication, если QtwebengineWidgets импортируется. |
| FedBerry 27 | ARMV7 | Нет | Segv_maperr при попытке показать qwebengineview |
См. Выпуск № 16 для постоянного обсуждения поддержки Raspberry Pi.
Вклады приветствуются, если они соответствуют духу и намерению браузера, то есть они являются функциями, полезными в киоске, вывесках или другой ситуации с блокировкой, и сохраняют браузер простым для настройки. Я также предпочел бы, чтобы изменения в функциях или поведении были приняты (требуется переключатель, чтобы включить их), если только не имеет смысла делать это таким образом.
Если вы вносите код, пожалуйста, следуйте этим лучшим практикам:
Если есть функции, которые вы хотели бы увидеть в этом проекте, у вас есть три варианта, чтобы увидеть их реализованные:
Admbrowser выпускается в соответствии с условиями GNU GPL V3.