Autor: Alan D Moore (http://www.alandmoore.com, correo electrónico me_at_alandmoore_dot_com)
Colaboradores:
AdmBrowser es un navegador específicamente para su uso en los quioscos web. Se basa en Pyqt5 y Qtwebengine (cromo/parpadeo), y está diseñado para hacer que el bloqueo sea muy simple e indoloro.
Originalmente se concibió para su uso en terminales de catálogo de la biblioteca, cuando quedó claro que los navegadores con listas de características cada vez mayores como Firefox y Chrome eran demasiado trabajo para bloquear correctamente y completamente. También fue diseñado para ser fácilmente configurable utilizando un archivo de texto simple que se puede editar a mano en un terminal sobre SSH a través de una WAN lenta, por lo que no hay bases de datos, XML o binarios locos aquí.
AdmBrowser es una bifurcación de WCGBrowser, con estas diferencias clave:
Muchas características que estaban en WCGBrowser están rotas o no están disponibles simplemente porque Qtwebengine hace las cosas de manera diferente a Qtwebkit.
Debería funcionar en cualquier plataforma, pero solo se ha probado en Arch Linux, Debian y Ubuntu.
El archivo admbrowser.yaml incluido muestra una configuración de ejemplo documentada. Para usarlo, cópielo a /etc/admbrowser.yaml, ~/.admbrowser.yaml, o especifíquelo con el interruptor -c (-config-file). Puede hacer el ejecutable admbrowser.py, o lanzarlo con Python, como así:
Python admbrowser.py
Como mínimo, debe especificar un START_URL utilizando el archivo de configuración o el conmutador -l, o de lo contrario el navegador no es de gran uso. La configuración avanzada probablemente se realice mejor en el archivo de configuración, pero muchas características básicas se pueden habilitar o deshabilitar en la línea de comando usando estos conmutadores:
| Cambiar | Descripción |
|---|---|
| --ddebug_log | Enviar salida de depuración al archivo especificado |
| --tamaño | Establezca el tamaño de la ventana inicial como "<Width> x <cight>" (por ejemplo, "800X600"), "Max" para maximizar o "completo" para la pantalla completa. |
| --proxy_server | Establezca el host y el puerto del servidor proxy, en el formulario <gest>: <port> |
| -C,--config-archivo | Especificar un archivo de configuración para usar |
| -d, -desbug | Proporcionar salida de depuración a stdout |
| -e, -Allow_external | Permita que el navegador abra contenido en programas externos a través de MIME Type |
| -g, -Allow_plugins | Permita el uso de complementos como flash, java, etc. |
| -h, --help | Mostrar ayuda rápida en la sintaxis de la línea de comando |
| -i,-Icon-Theme | El tema del icono para usar. Tendrá que instalar estos temas usted mismo |
| -l, -url | La "ubicación de inicio" para el navegador. Esta es la URL inicial que se cargará y dónde volverá cuando se reinicie. |
| -n,--no-navegación | Apague el panel de navegación (atrás, hacia adelante, el hogar, los atajos, etc.). |
| -P, --popups | Habilite la creación de nuevas ventanas cuando se hace clic en un enlace que se abre en una nueva ventana, o JavaScript intenta abrir una ventana |
| -t, -TimeOut | El tiempo de espera del monitor de inactividad. Después de esto, muchos segundos de inactividad, restablezca el navegador |
| -u, -User | Establezca el nombre de usuario predeterminado que se enviará cuando un sitio solicita autenticación |
| -W, - -password | Establezca la contraseña predeterminada que se enviará cuando un sitio solicita autenticación |
| -z, -zoom | El factor de zoom predeterminado para el contenido. 0 ignora esto. 1 es predeterminado, 2 sería de doble tamaño, 0.5 sería medio tamaño, etc. |
Admbrowser también acepta los argumentos de línea de comandos QT incorporados, que proporcionan algunas anulaciones de bajo nivel. La documentación de estos interruptores se puede encontrar en https://doc.qt.io/qt-5/qapplication.html#qapplication.
El archivo de configuración de la muestra se comenta completamente y debería ser bastante fácil de configurar si solo lo lee. En caso de que solo desee comenzar desde cero, estas son las opciones de configuración actuales disponibles para la aplicación.
| Nombre de opción | Valor predeterminado | Explicación |
|---|---|---|
| now_external_content | FALSO | Si permitir o no contenido no HTML, por ejemplo, archivos PDF. Si esto es cierto, debe especificar un controlador de contenido para el tipo MIME o un error 404, "Error de red" o la página en blanco probablemente se mostrará al usuario. |
| Permangrugins | FALSO | Si es cierto, habilita el uso de complementos como flash, java, etc. |
| PETH_POPUPS | FALSO | Ya sea para permitir o no la navegación que requiere abrir una nueva ventana del navegador, como las llamadas o enlaces de ventana JavaScript.open () con un objetivo de "_blank". Si es falso, la navegación será ignorada. Si es cierto, se creará una nueva ventana como se esperaba. |
| force_js_confirm | "preguntar" | Si se establece en "Aceptar" o "Denegar", anulará los cuadros de diálogo JavaScript We We-Surre-You-Want-To-Exit con la respuesta especificada, si se establece en "Ask" (el valor predeterminado) le preguntará al usuario cada vez. |
| supress_alerts | FALSO | Si es verdadero, bloquea las alertas emergentes de JavaScript de aparecer, o las muestra cuando falsa. |
| Permatir_printing | FALSO | Habilite la impresión de páginas web desde el menú contextual o la barra de herramientas. |
| print_settings | (vacío) | Especifique la configuración predeterminada de la impresora, consulte a continuación. |
| default_password | (vacío) | Contraseña predeterminada para enviar cuando las páginas solicitan autenticación |
| default_user | (vacío) | nombre de usuario predeterminado para enviar cuando las páginas solicitan autenticación |
| icon_theme | (QT5 predeterminado) | Tema de icono para usar para los íconos de navegación |
| navegación | Verdadero | Muestre la barra de navegación en la parte superior (retroceso/avance/recarga/marcadores/renuncia) |
| navegación_layout | (vea abajo) | Establece el diseño de la barra de navegación. Vea la explicación detallada a continuación. |
| Network_down_html | (vacío) | Actualmente, la ruta completa a un archivo que contiene HTML que se mostrará cuando la página START_URL no se puede cargar, lo que probablemente indica algún tipo de error de red. |
| Page_Unavailable_html | (vacío) | Actualmente, la ruta completa a un archivo que contiene HTML que se mostrará cuando una página no se puede cargar, ya sea porque no está accesible o bloqueado por restricciones de seguridad. |
| Privacy_mode | Verdadero | Habilitar o deshabilitar el modo de navegación privada |
| usuario_agent | (QT5 predeterminado) | Anula la cadena de agente de usuario predeterminada. |
| proxy_server | (vacío) | Establece la cadena del servidor proxy para el proxy HTTP. Toma el host del formulario: puerto, o simplemente host si desea usar el puerto predeterminado de 8080. |
| quit_button_mode | reiniciar | Al igual que TimeOut_Mode, solo esta es la acción tomada cuando se presiona el botón de abandono (las mismas opciones) |
| quit_button_text | "Estoy y terminado" | Texto para mostrar en el botón Salir/Restablecer. Puede incluir un indicador acelerador (&). |
| screSaver_url | Acerca de: en blanco | La URL para visitar cuando está inactivo. Solo importa cuando TimeOut_Mode es "ScreenSaver" y "TimeOut" es distinto de cero. |
| ssl_mode | estricto | Define cómo el navegador maneja los errores de certificado SSL. "Strict" simplemente dará un error y evitará el acceso a la URL problemática. "Ignorar" ignorará silenciosamente los errores y permitirá el acceso. |
| start_url | Acerca de: en blanco | La URL inicial |
| hoja de estilo | (vacío) | Nombre de archivo de una hoja de estilo QSS-format para usar para diseñar la ventana de la aplicación. Ver archivo de ejemplo. |
| se acabó el tiempo | 0 | Número de segundos de inactividad antes de que el navegador se cierra o se restablece. Un valor de 0 deshabilita la función. |
| TIMEOUT_MODE | reiniciar | La acción realizada en el tiempo de espera de inactividad. Los valores se pueden "restablecer" (para volver a la URL de inicio y borrar el historial), "Cerrar" (para cerrar el programa) o "ScreenSaver" (para mostrar el screensaver_url mientras está inactivo) |
| lista blanca | (vacío) | Una lista de dominios o hosts web para permitir el acceso (ver más abajo). |
| Window_icon | (vacío) | La ruta completa del archivo de icono se mostrará mediante el administrador de la ventana. |
| Window_Size | "Max" | Haga que la ventana sea predeterminada a este tamaño. Puede ser <width> x <cight> (por ejemplo, "800x600"), "máximo" para maximizar o "completo" para pantalla completa. |
| Window_title | "Navegador" | Un título de ventana personalizado para mostrar el administrador de la ventana. |
| zoom_factor | 1.0 | La cantidad de zoom aplicada a las páginas. .5 es medio tamaño, 2.0 es de doble tamaño, etc. |
Los marcadores se crean en una lista Yaml llamada "Marcadores" con este formato:
Marcadores:
1:
Nombre: "Nombre del marcador"
URL: "http: //bookmark.url/"
Descripción: "Una breve descripción del marcador, para la información sobre herramientas"
2:
Nombre: "Otro nombre de marcador":
URL: "http://example.com/some_bookmark"
Descripción: "Una breve descripción de este marcador"
Los nombres de los marcadores pueden incluir un ampersand para especificar una clave de acelerador. También puede especificar entradas de marcadores como así:
Marcadores:
"Nombre del marcador":
URL: "http: //bookmark.url/"
Descripción: "Una breve descripción del marcador, para la información sobre herramientas"
Esto es más compacto, pero la desventaja es que no tiene control sobre el orden de los marcadores (se ordenan por clave, por lo que será alfabético por su nombre). Este modo es realmente para la compatibilidad con versiones anteriores, pero si tiene muchos marcadores que desea alfabetizar y quiere guardar algo de escritura, este puede ser el camino a seguir.
Si está permitiendo que se inicie el contenido externo, la matriz "Content_handlers" le permite especificar en qué programas se abrirá el contenido externo por el tipo MIME. La sintaxis se ve así:
content_handlers: "Aplicación/PDF": "XPDF" "Aplicación/VND.OASIS.OPENDOCUMENT.TEXT": "LibreOffice"
AdmBrowser descargará el archivo a un directorio TEMP y lo pasará como un argumento a cualquier comando que especifique en la segunda columna. Tenga en cuenta esto, ya que en algunos casos es posible que desee escribir un script de envoltura de algún tipo para tratar con algunos tipos de archivos o programas que no se ocupan correctamente de los argumentos.
El parámetro "Navigation_Layout" es una lista de elementos para colocar en la barra de navegación, si se muestra. Puede elegir entre lo siguiente:
La lista se puede especificar en cualquier formato de lista YAML válido, pero recomiendo encerrarlo en aparatos cuadrados y separarse con comas. "Separador" y "espaciador" se pueden usar tantas veces como desee, los otros solo deben usarse una vez cada uno.
La función Whitelist se agrega como una comodidad para ayudar a bloquear su quiosco cuando no tiene un control completo sobre todos los enlaces en sus páginas de quioscos y desean evitar que los usuarios salgan a sitios extraños. No es un firewall o filtro de contenido, y puede no comportarse exactamente como esperas; Entonces, si planea usarlo, lea un poco sobre lo que hace y lo que no hace.
Si no desea usar la función Whitelist, simplemente comentela, deje la lista vacía o le dé un valor de "Falso".
Le das a la lista blanca una lista de dominios o anfitriones , como este:
Whitelist: ["Somyhost.example.com", "Aye-Local-Host", "mydomain.org"]
Cada vez que el usuario hace clic en un enlace o intenta navegar a una página, el nombre de host se extrae de la URL solicitada y se combina con la lista blanca. Si hay una coincidencia, se muestra la página; Si no, se muestra el texto de error.
Algunas cosas son automáticas:
Si solo desea que la lista blanca de las URL START_URL y Bookmark y nada más, puede hacerlo en el archivo de configuración:
Whitelist: verdadero
Al confiar en la lista blanca automática, es importante comprender que la cadena de host completa de estas URL está en la lista blanca. Entonces, por ejemplo, si su inicio_url es "http://example.com", "Ejemplo.com" se agregará a la lista blanca (y por lo tanto, todos los subdominios de Ejemplo.com, como foo.example.com, bar.example.com, etc.). Sin embargo, si especifica "http://www.example.com" como Start_url, "www.example.com" se agrega a la lista blanca. Por lo tanto, "foo.example.com" no sería de la lista blanca.
También tenga en cuenta que si la lista blanca de la URL lo reenvía a otro host, debe especificar ambos hosts en la lista blanca.
El modo de pantalla de pantalla de pantalla es un modo de tiempo de espera especial que le permite mostrar una URL dada solo mientras el navegador está inactivo. Considere una configuración como esta:
start_url: 'http://example.com/kiosk' Tiempo de espera: 1800 TimeOut_mode: 'ScreenSaver' ScreenSaver_url: 'http://example.com/slides'
Esta configuración haría lo siguiente:
ScreenSaver_url podría ser, por ejemplo, un rotador de imágenes, una página con anuncios, un mensaje de bienvenida, etc. Realmente no importa, pero tenga en cuenta que el usuario no puede interactuar con la página de Screensaver, porque tan pronto como tocan un mouse o teclado, el inicio_url se cargará.
AdmBrowser le permitirá establecer un host (nombre o IP) y el número de puerto para un proxy HTTP. Actualmente no es compatible con HTTPS, FTP, Socks o Proxy autenticado. Puede establecer la configuración de proxy una de las tres maneras:
Para establecer el servidor proxy, use el host de formato: puerto, como en estos ejemplos:
proxyserver.mynetwork.local: 3128 Localhost: 8080 192.168.1.1:8880
Si descuida incluir un puerto y simplemente coloque una dirección IP o nombre de host, el puerto 8080 se utilizará de forma predeterminada.
Tenga en cuenta que esta característica puede no funcionar en algún sistema operativo. Actualmente se basa en establecer la variable de entorno HTTP_Proxy (independientemente del método que use para configurarlo), lo que puede no ser respetado en todos los sistemas. Definitivamente funciona en Linux, y probablemente en cualquier sistema similar a UNIX.
AdmBrowser admite la configuración de la configuración predeterminada de la impresora y permite imprimir sin mostrar un cuadro de diálogo. Las opciones se establecen con la variable print_settings. Por ejemplo:
print_settings:
Silencioso: verdadero
Márgenes: [5, 5, 3, 3]
Orientación: "paisaje"
Se admiten las siguientes opciones:
| Nombre de opción | Valor predeterminado | Explicación |
|---|---|---|
| silencioso | FALSO | Cuando sea verdadero, Admbrowser se imprimirá inmediatamente sin mostrar el cuadro de diálogo de impresión. |
| orientación | "retrato" | Especifica la impresión en la orientación de retrato o paisaje. |
| size_unit | "milímetro" | Especifica qué unidad de medida utilizada por las variables Paper_Size y Margen. Puede ser "milímetro", "punto", "pulgada", "pica", "didot", "cicero" o "dispositivopixel". |
| márgenes | (predeterminado de la impresora) | Especifica los márgenes de la impresora como una lista en el formulario: [izquierda, arriba, derecha, abajo]. Ejemplo: [5, 3.5, 6, 2.4]. Las unidades se especifican por la variable size_unit. |
| Paper_Size | (predeterminado de la impresora) | Especifica el tamaño del papel como una lista en el formulario: [ancho, altura]. Ejemplo: [500, 650.5]. Las unidades se especifican por la variable size_unit. |
| resolución | (predeterminado de la impresora) | Especifica la resolución de la impresora en PPI (píxeles por pulgada). |
| modo | "pantalla" | Establece qué resolución usará la impresora, "pantalla": la resolución de la pantalla (el valor predeterminado) o "alto": la resolución máxima de la impresora |
Las siguientes son limitaciones conocidas:
Los siguientes problemas aparecieron con el puerto de Qtwebkit a Qtwebengine:
Si encuentra errores, denunciarlos como un "problema" en la página GitHub del proyecto: http://github.com/alandmoore/admbrowser/issues. Si su "error" es realmente una solicitud de función, consulte a continuación.
Admbrowser puede trabajar en una Raspberry Pi, en teoría, pero no en Raspbian 10 . Admbrowser requiere Qtwebengine, que (a partir de enero de 2020) no está empaquetado para Raspbian 10.
Para usar AdmBrowser, debe utilizar una distribución que proporcione una versión de trabajo de QtWebenGine. A partir de enero de 2020, se han probado varias soluciones con los siguientes resultados (probados en PI 3B+):
| Distribuir | Arco | ¿Obras? | Explicación |
|---|---|---|---|
| OpenSuse Leap 15.1 | brazo | Sí | Parece funcionar sin problemas, aunque algo lento. |
| Ubuntu Mate 20.04 alfa | armhf | Sí | Parece funcionar sin problemas, pero muy lento. Más lento que openSuse. |
| Ubuntu Mate 18.04 | armhf | Casi | Se lanza, pero segfaults a menudo mientras carga páginas. |
| Ubuntu Server 19.10 | brazo | No | Pyqt scripts segfault en la creación de Qapplication si se importa QtwebengineWidgets. |
| Fedberry 27 | ARMV7 | No | SEGV_MAPERERR Al intentar mostrar QwebengineView |
Consulte el número 16 para la discusión continua del soporte de Raspberry Pi.
Las contribuciones son bienvenidas, siempre que sean consistentes con el espíritu y la intención del navegador, es decir, son características útiles en un quiosco, señalización u otra situación de bloqueo, y mantienen el navegador fácil de configurar. También preferiría que los cambios en las características o el comportamiento sean optados (requieren un interruptor para habilitarlos), a menos que no tenga sentido hacerlo de esa manera.
Si está contribuyendo con código, siga estas mejores prácticas:
Si hay características que le gustaría ver compatibles con este proyecto, tiene tres opciones para verlas implementadas:
Admbrowser se publica bajo los términos de GNU GPL V3.