Autor: Alan D Moore (http://www.alandmoore.com, e-mail me_at_alandmoore_dot_com)
Colaboradores:
AdmBrowser é um navegador especificamente para uso em quiosques da Web. É baseado no PYQT5 e QTWebEngine (cromo/pisca) e foi projetado para tornar o bloqueio muito simples e indolor.
Ele foi originalmente concebido para uso em terminais de catálogo de bibliotecas, quando ficou claro que os navegadores com listas de recursos cada vez maiores como Firefox e Chrome eram muito trabalho para travar corretamente e completamente. Ele também foi projetado para ser facilmente configurável usando um arquivo de texto simples que pode ser editado manualmente em um terminal sobre SSH em uma WAN lenta, para que nenhum banco de dados, XML ou binários loucos aqui.
AdmBrowser é um garfo de WCGBrowser, com estas diferenças importantes:
Muitos recursos que estavam no WCGBrowser estão quebrados ou indisponíveis simplesmente porque o qtwebengine faz as coisas de maneira diferente do Qtwebkit.
Ele deve funcionar em qualquer plataforma, mas só foi testado no Arch Linux, Debian e Ubuntu.
O arquivo AdmBrowser.yaml incluído mostra uma configuração de exemplo documentada. Para usá-lo, copie-o para /etc/admbrowser.yaml, ~/.admbrowser.yaml ou especifique-o com o comutador -c (--Config-File). Você pode fazer o AdmBrowser.py executável ou iniciá -lo usando Python, como assim:
python AdmBrowser.py
No mínimo, você precisa especificar um start_url usando o arquivo de configuração ou o comutador -l, ou então o navegador não é muito uso. A configuração avançada é provavelmente melhor feita no arquivo de configuração, mas muitos recursos básicos podem ser ativados ou desativados na linha de comando usando estes switches:
| Trocar | Descrição |
|---|---|
| --DEBUG_LOG | Enviar saída de depuração para o arquivo especificado |
| --tamanho | Defina o tamanho inicial da janela como "<wdth> x <tight>" (por exemplo "800x600"), "max" para maximizar ou "completo" para tela cheia. |
| --proxy_server | Defina o host e a porta do servidor proxy, no formulário <dost>: <sot> |
| -C,--CONFIG-FILE | Especifique um arquivo de configuração para usar |
| -d, - -debug | Forneça saída de depuração ao stdout |
| -e, --arlow_external | Permita que o navegador abra o conteúdo em programas externos por meio do tipo MIME |
| -g, --arlow_plugins | Deixe o uso de plugins como flash, java, etc. |
| -h, --help | Mostre ajuda rápida na sintaxe da linha de comando |
| -I, --iCon-Theme | O tema do ícone a ser usado. Você precisará instalar esses temas |
| -l, --url | O "Localização de Iniciar" para o navegador. Este é o URL inicial que ele carregará e onde retornará quando redefinir. |
| -n,--não-navegação | Desligue o painel de navegação (para trás, para a frente, casa, atalhos, etc.). |
| -p, --Popups | Habilite a criação de novas janelas quando um link é clicado que abre em uma nova janela, ou JavaScript tenta abrir uma janela |
| -t, - -timeout | O tempo limite para o monitor de inatividade. Depois disso muitos segundos de inatividade, redefina o navegador |
| -u, --user | Defina o nome de usuário padrão a ser enviado quando um site solicitar autenticação |
| -w, - -assassword | Defina a senha padrão a ser enviada quando um site solicitar autenticação |
| -z, --zoom | O fator de zoom padrão para o conteúdo. 0 ignora isso. 1 é padrão, 2 seria de tamanho duplo, 0,5 seria meio tamanho, etc. |
O AdmBrowser também aceita os argumentos internos da linha de comando QT, que fornecem algumas substituições de baixo nível. A documentação desses comutadores pode ser encontrada em https://doc.qt.io/qt-5/qapplication.html#qapplication.
O arquivo de configuração de amostra é totalmente comentado e deve ser muito fácil de configurar se você acabou de ler. Caso você queira apenas começar do zero, aqui estão as opções de configuração atuais disponíveis para o aplicativo.
| Nome da opção | Valor padrão | Explicação |
|---|---|---|
| allow_external_content | Falso | Seja ou não permitir conteúdo não-HTML, por exemplo, arquivos PDF. Se isso for verdade, você precisará especificar um manipulador de conteúdo para o tipo MIME ou um erro 404, "erro de rede" ou a página em branco provavelmente será exibida para o usuário. |
| allow_plugins | Falso | Se verdadeiro, permite o uso de plugins como flash, java, etc. |
| allow_popups | Falso | Se você deve ou não permitir a navegação que requer a abertura de uma nova janela do navegador, como javascript window.open () chamadas ou links com um alvo de "_blank". Se falso, a navegação será ignorada. Se for verdade, uma nova janela será criada conforme o esperado. |
| force_js_confirm | "perguntar" | Se definido como "aceitar" ou "negar", substituirá qualquer JavaScript, você é curado, você quer que seja a caixa de diálogo com a resposta especificada, se definido como "Ask" (o padrão) solicitará o usuário a cada vez. |
| supressão_alerts | Falso | Se verdadeiro, bloqueia os alertas de pop -up javascript de aparecer ou os mostra quando falsos. |
| allow_printing | Falso | Ative a impressão de páginas da Web no menu de contexto ou na barra de ferramentas. |
| print_settings | (vazio) | Especifique as configurações de impressora padrão, veja abaixo. |
| default_password | (vazio) | Senha padrão para enviar quando as páginas solicitam autenticação |
| default_user | (vazio) | Nome de usuário padrão para enviar quando as páginas solicitam autenticação |
| icon_theme | (Padrão QT5) | Tema do ícone a ser usado para ícones de navegação |
| navegação | Verdadeiro | Exiba a barra de navegação no topo (traseiro/avanço/recarregar/marcadores/desistir) |
| Navigation_layout | (Veja abaixo) | Define o layout da barra de navegação. Veja a explicação detalhada abaixo. |
| Network_down_html | (vazio) | Atualmente, o caminho completo para um arquivo contendo HTML que será exibido quando a página start_url não puder ser carregada, o que provavelmente indica algum tipo de erro de rede. |
| page_unavailable_html | (vazio) | Atualmente, o caminho completo para um arquivo que contém HTML que será exibido quando uma página não puder ser carregada, porque não é acessível ou bloqueada por restrições de segurança. |
| privacy_mode | Verdadeiro | Ativar ou desativar o modo de navegação privado |
| user_agent | (Padrão QT5) | Substitui a sequência de agente do usuário padrão. |
| proxy_server | (vazio) | Define a sequência do servidor proxy para o proxy HTTP. Assume o host do formulário: porta ou apenas host se você deseja usar a porta padrão do 8080. |
| Quit_button_mode | reiniciar | Assim como timeout_mode, apenas esta é a ação tomada quando o botão de desvio é pressionado (mesmas opções) |
| Quit_button_text | "Estou e terminei" | Texto para exibir no botão Quit/Redefinir. Pode incluir um indicador de acelerador (&). |
| Screensaver_url | Sobre: Blank | O URL para visitar quando ocioso. Somente importa quando o timeout_mode é "protetor de tela" e "timeout" é diferente de zero. |
| ssl_mode | estrito | Define como o navegador lida com erros de certificado SSL. "Strict" apenas dará um erro e impedirá o acesso ao URL problemático. "Ignorar" ignorará silenciosamente os erros e permitirá o acesso. |
| start_url | Sobre: Blank | O URL inicial |
| folha de estilo | (vazio) | Nome do arquivo de uma folha de estilo QSS-formato a ser usada para estilizar a janela do aplicativo. Veja o arquivo de exemplo. |
| tempo esgotado | 0 | Número de segundos de inatividade antes que o navegador feche ou se redefine. Um valor de 0 desativa o recurso. |
| timeout_mode | reiniciar | A ação realizada no tempo limite da inatividade. Os valores podem ser "redefinidos" (para retornar ao URL inicial e à história limpa), "fechar" (para fechar o programa) ou "protetor de tela" (para exibir o Screensaver_url enquanto ocioso) |
| Lista de permissões | (vazio) | Uma lista de domínios ou hosts da Web para permitir o acesso a (veja abaixo). |
| window_icon | (vazio) | O caminho completo do arquivo de ícone a ser mostrado pelo gerenciador de janelas. |
| window_size | "Max" | Faça a janela padrão para esse tamanho. Pode ser <warth> x <tight> (por exemplo, "800x600"), "max" para maximizar ou "completo" para tela cheia. |
| window_title | "Navegador" | Um título de janela personalizado a ser mostrado pelo gerenciador de janelas. |
| zoom_factor | 1.0 | A quantidade de zoom aplicada às páginas. .5 é metade do tamanho, 2,0 é de tamanho duplo, etc. |
Os favoritos são criados em uma lista da YAML chamada "Bookmarks" com este formato:
Marcadores:
1:
Nome: "Nome do marcador"
URL: "http: //bookmark.url/"
Descrição: "Uma breve descrição do marcador, para a dica de ferramenta"
2:
Nome: "Outro nome de marcador":
URL: "http://example.com/some_bookmark"
Descrição: "Uma breve descrição deste marcador"
Os nomes de marcadores podem incluir um ampers e especificar uma chave do acelerador. Você também pode especificar entradas de marcadores como assim:
Marcadores:
"Nome do marcador":
URL: "http: //bookmark.url/"
Descrição: "Uma breve descrição do marcador, para a dica de ferramenta"
Isso é mais compacto, mas a desvantagem é que você não tem controle sobre a ordem dos favoritos (eles são ordenados pela chave, por isso será alfabético pelo nome). Esse modo é realmente para compatibilidade com versões anteriores, mas se você tiver muitos favoritos que deseja alfabetizados e deseja salvar algumas digitação, esse pode ser o caminho a percorrer.
Se você está permitindo que o conteúdo externo seja lançado, a matriz "content_handlers" permite especificar em quais programas o conteúdo externo será aberto pelo tipo MIME. A sintaxe se parece com a seguinte:
Content_Handlers: "Aplicativo/PDF": "XPDF" "Application/vnd.oasis.opendocument.text": "LibreOffice"
O AdmBrowser baixará o arquivo para um diretório temp e o passará como um argumento para qualquer comando que você especificar na segunda coluna. Esteja ciente disso, pois, em alguns casos, você pode escrever um script de wrapper de algum tipo para lidar com alguns tipos de arquivos ou programas que não lidam corretamente com argumentos.
O parâmetro "Navigation_Layout" é uma lista de itens a serem colocados na barra de navegação, se estiver aparecendo. Você pode escolher entre o seguinte:
A lista pode ser especificada em qualquer formato de lista YAML válido, mas eu recomendo envolvê -lo em aparelhos quadrados e se separar com vírgulas. "Separator" e "Spacer" podem ser usados quantas vezes desejar, os outros devem ser usados apenas uma vez cada.
O recurso da lista de permissões é adicionada como uma conveniência para ajudar a bloquear o quiosque quando você não tem controle completo sobre todos os links nas suas páginas de quiosque e deseja impedir que os usuários vá para sites estranhos. Não é um firewall ou filtro de conteúdo e pode não se comportar exatamente como você espera; Portanto, se você planeja usá -lo, leia um pouco sobre o que ele faz e o que não faz.
Se você não quiser usar o recurso de Whitelist, basta comentar, deixe a lista vazia ou dê um valor de "false".
Você dá à lista de permissões uma lista de domínios ou hosts , assim:
Whitelist: ["Anohost.example.com", "Alguns locais-hospedeiros", "MyDomain.org"]
Sempre que o usuário clica em um link ou tenta navegar para uma página, o nome do host é extraído do URL solicitado e correspondente à lista de permissões. Se houver uma correspondência, a página será exibida; Caso contrário, o texto do erro é mostrado.
Algumas coisas são automáticas:
Se você deseja apenas a lista de permissões dos URLs Start_URL e de marcadores e nada mais, basta fazer isso no arquivo de configuração:
Lista de permissões: Verdadeiro
Ao confiar na lista de permissões automáticas, é importante entender que a corda completa do host desses URLs está em permissões. Por exemplo, se o seu start_url for "http://example.com", "exemplo.com" será adicionado à lista de permissões (e, portanto, todos os subdomínios do exemplo.com, como foo.example.com, bar.example.com, etc.). Se você especificar "http://www.example.com" como o start_url, "www.example.com" é adicionado à lista de permissões. Assim, "foo.example.com" não estaria na lista de permissões.
Observe também que, se você permite uma lista de uma lista de uma lista de um que o encaminhe para outro host, precisará especificar os dois hosts na lista de permissões.
O modo protetor de tela é um modo de tempo limite especial que permite exibir um determinado URL apenas enquanto o navegador estiver ocioso. Considere uma configuração como esta:
start_url: 'http://example.com/kiosk' Tempo limite: 1800 timeout_mode: 'Screensaver' Screensaver_url: 'http://example.com/slides'
Esta configuração faria o seguinte:
O Screensaver_url pode ser, por exemplo, um rotador de imagem, uma página com anúncios, uma mensagem de boas -vindas, etc. Isso realmente não importa, mas lembre -se de que o usuário não pode realmente interagir com a página de tela, porque assim que tocar um mouse ou teclado, o start_url carregará.
O AdmBrowser permitirá que você defina um host (nome ou IP) e número da porta para um proxy HTTP. HTTPS, FTP, meias ou proxy autenticado não são suportados no momento. Você pode definir as configurações de proxy de uma das três maneiras:
Para definir o servidor proxy, use o host do formato: Port, como nesses exemplos:
proxyServer.mynetwork.local: 3128 LocalHost: 8080 192.168.1.1:8880
Se você deixar de incluir uma porta e apenas colocar um endereço IP ou nome de host, a porta 8080 será usada por padrão.
Observe que esse recurso pode não funcionar em algum sistema operacional. Atualmente, ele depende da definição da variável de ambiente HTTP_Proxy (independentemente do método que você usa para configurá -lo), que pode não ser respeitado em todos os sistemas. Definitivamente, funciona no Linux e provavelmente em qualquer sistema semelhante ao UNIX.
O AdmBrowser suporta a configuração das configurações de impressora padrão e permite a impressão sem mostrar uma caixa de diálogo. As opções são definidas com a variável print_settings. Por exemplo:
print_settings:
Silencioso: Verdadeiro
margens: [5, 5, 3, 3]
Orientação: "Paisagem"
As seguintes opções são suportadas:
| Nome da opção | Valor padrão | Explicação |
|---|---|---|
| silencioso | Falso | Quando verdadeiro, o AdmBrowser imprimirá imediatamente sem mostrar a caixa de diálogo de impressão. |
| orientação | "retrato" | Especifica a impressão na orientação de retrato ou paisagem. |
| size_unit | "milímetro" | Especifica qual unidade de medida usada pelas variáveis Paper_size e Margin. Pode ser "milímetro", "ponto", "polegada", "pica", "didot", "cicero" ou "devicePixel". |
| margens | (Padrão da impressora) | Especifica as margens da impressora como uma lista no formulário: [esquerda, superior, direita, inferior]. Exemplo: [5, 3,5, 6, 2.4]. As unidades são especificadas pela variável size_unit. |
| paper_size | (Padrão da impressora) | Especifica o tamanho do papel como uma lista no formulário: [largura, altura]. Exemplo: [500, 650.5]. As unidades são especificadas pela variável size_unit. |
| resolução | (Padrão da impressora) | Especifica a resolução da impressora no PPI (pixels por polegada). |
| modo | "tela" | Define qual resolução a impressora usará, "tela": a resolução da tela (o padrão) ou "alta": a resolução máxima da impressora |
Os seguintes são limitações conhecidas:
As questões a seguir apareceram com a porta de Qtwebkit para Qtwebengine:
Se você encontrar bugs, informe -os como um "problema" na página do Github do projeto: http://github.com/alandmoore/admbrowser/issues. Se o seu "bug" é realmente uma solicitação de recurso, veja abaixo.
Admbrowser pode trabalhar em um Raspberry Pi, em teoria, mas não no Raspbian 10 . O AdmBrowser requer Qtwebengine, que (em janeiro de 2020) não é embalado para o Raspbian 10.
Para usar o AdmBrowser, você precisa usar uma distribuição que forneça uma versão em funcionamento do QTWebEngine. Em janeiro de 2020, várias soluções foram testadas com os seguintes resultados (testados no PI 3b+):
| Distro | Arco | Funciona? | Explicação |
|---|---|---|---|
| OpenSUSE PELANDO 15.1 | ARM64 | Sim | Parece funcionar perfeitamente, embora um pouco lento. |
| Ubuntu mate 20.04 alfa | ARMHF | Sim | Parece funcionar perfeitamente, mas muito lento. Mais lento que o OpenSuse. |
| Ubuntu Mate 18.04 | ARMHF | Quase | Lança, mas segfaults frequentemente enquanto carregava páginas. |
| Ubuntu Server 19.10 | ARM64 | Não | Os scripts pyqt segfault na criação de qapplication se o qtwebenginewidgets for importado. |
| Fedberry 27 | ARMV7 | Não | Segv_maperr ao tentar mostrar QWebengineView |
Consulte a edição 16 para discussão contínua do suporte do Raspberry Pi.
As contribuições são bem-vindas, desde que sejam consistentes com o espírito e a intenção do navegador-ou seja, são recursos úteis em um quiosque, sinalização ou outra situação de bloqueio e mantenha o navegador simples de configurar. Eu também preferiria que as alterações nos recursos ou comportamento sejam optadas (requerem uma chave para ativá-las), a menos que não faça sentido fazê-lo dessa maneira.
Se você estiver contribuindo com o código, siga estas melhores práticas:
Se houver recursos que você gostaria de ver suportados neste projeto, você terá três opções para vê -los implementados:
O AdmBrowser é liberado sob os termos do GNU GPL V3.