Como vejo o navegador perfeito

Recentemente, houve muitos artigos sobre as deficiências do software moderno, enquanto ninguém está tentando oferecer suas soluções para mudar a situação. Este artigo é a resposta para alguns artigos sobre isso, além de sonhar com um navegador perfeito. Como podemos redesenhar o navegador, sua interface do usuário, métodos de interação com sites, melhorar protocolos e a experiência do usuário em geral. Se você tiver algum, mesmo os pensamentos mais ousados ​​sobre isso, sugiro discuti-los e talvez estabelecer as bases para criar o navegador perfeito. Por fim, mais cedo ou mais tarde, isso precisará ser feito, pois a situação no mercado de navegadores no momento não é nada agradável. E não é um problema que outros navegadores sejam muito complexos e difíceis de acompanhar - podemos seguir nosso próprio caminho, implementar apenas as partes necessárias dos padrões e, ao mesmo tempo, introduzir nossas próprias extensões não-padrão. Não há necessidade de correr atrás dos outros, deixe os outros correrem atrás de nós. Deixe nosso navegador ser criado para pessoas, e não em nome dos interesses comerciais das empresas de consórcios bons e estranhos, que não são de nenhuma utilidade há muito tempo.



O que deve estar em um navegador ideal?





Pesquisar

Se você criar um novo navegador, a primeira coisa que deve ser é uma pesquisa local em tudo. Por abas abertas, cache, arquivos enviados e toneladas de meta informações dentro. A pesquisa deve ser por índice e por regular, e o usuário deve poder selecionar todas as opções possíveis, incluindo codificações de documentos (por exemplo, uma pesquisa muito boa em Far).

Uma vez, em um dos fóruns, encontrei um conceito interessante do algoritmo. Não houve discussão, então eu fechei rapidamente a guia, mas o conceito em si se instalou na minha cabeça. Depois de pensar sobre isso em segundo plano, decidi compartilhar minhas idéias ... Mas onde? Olhando rapidamente para os fóruns onde normalmente morava - não encontrei nada parecido. Os motores de busca também nada, mas isso não é surpreendente - os fóruns não são indexados instantaneamente. Comecei a vasculhar o histórico do navegador - não encontrei nada, mas isso não é surpreendente, já que é grande, é inconveniente de usar, eu poderia ter perdido alguma coisa. Redescobri quase todas as páginas - não encontrei nada parecido. Comecei a procurar mensagens pelo correio, em mensageiros, até perguntando às pessoas - sem resultado. Eu já estava começando a pensar que era controlado por répteis, conceitos inspiradores, como decidi usar a última ferramenta: pesquisar nos arquivos de cache do navegador. E quase instantaneamente ele encontrou o lugar que procurava. Aconteceu que, como ninguém respondeu ao tópico do fórum, o autor pensou que ele havia escrito estupidez, sentiu vergonha e simplesmente excluiu o tópico. E eu estava procurando por esse tópico remoto por um longo tempo e não consegui encontrar, me enrolando.

Outra vez, eu precisei atualizar um arquivo de vídeo. O arquivo foi chamado 1.mp4 (acho que muitos desses arquivos têm muito). Foi de algum valor para mim, mas infelizmente acabou sendo quebrado. Onde eu baixei? Tive que pesquisar novamente as palavras-chave que estavam no próprio vídeo.

Sessões

Quando você tenta descobrir um novo tópico, dezenas de guias se abrem sozinhas. Link após link e temos uma leitura por vários dias. Além disso, cada guia é algo importante que precisa ser lido. O que fazemos? Especialmente quando tudo isso se acumula cada vez mais?

Você pode simplesmente fechar tudo o que vê e confiar na história, dizem eles no futuro, se necessário, será encontrado. Ou despeje todas as guias nos favoritos. Ou mesmo salvar / imprimir páginas não é muito conveniente, mas as informações exatas encontradas nunca serão perdidas (no entanto, as informações sobre como salvar informações serão gravadas posteriormente).

Ou talvez salvar a sessão inteira como um projeto? Dê a eles nomes significativos, como “Eu estava procurando um modelo de barco”, “Aprendendo a programar” e ligue / desligue conforme necessário? Agora, cada navegador possui um perfil ou mecanismo de sessão, mas geralmente está oculto, o que dificulta a localização e ainda mais difícil de usar. Talvez o único navegador em que esse mecanismo esteja bem implementado seja o navegador Edge nas versões mais recentes. Com todas as deficiências deste navegador, esse mecanismo é feito o mais conveniente possível e permite que você não acumule guias, mas é conveniente classificá-las. Obviamente, não há limite para a perfeição, mas ter pelo menos essa opção é uma obrigação. Melhor ainda, seja capaz de salvar essas sessões juntamente com o cache / conteúdo das páginas. Não da maneira que os navegadores fazem agora, salvando o cache de alguma forma binária, mas para abrir 100 guias em um novo tópico, salve-as em algum formato legível por outros dispositivos (.html / .pdf) e faça o upload para o seu telefone , onde é fácil de ler, talvez longe da civilização.

Privacidade

O usuário deve decidir quais informações com o site ele deseja compartilhar. Não devo procurar opções diferentes de agente do usuário, essa funcionalidade deve ser incorporada ao próprio navegador. Por exemplo, o mecanismo de pesquisa do Google.com.br funciona bem se você se apresentar como um link, mas uma pesquisa instantânea desagradável que consome o texto de entrada não aparece.

Eu quero ser capaz de:

* defina a largura e a altura da tela (qualquer uma, pelo menos 50000x50000 pixels)
* profundidade de cor, independentemente das configurações atuais
* adicione o site a confiável, para que seus cookies não azedem quando você clica em "limpar tudo"
* substitua as fontes na página, fornecendo ao site a lista de fontes que deseja
* forneça um User-Agent arbitrário, talvez até aleatório, retirado de um grande arquivo de opções ou vinculado a um site específico
* escolha o idioma do conteúdo e veja o que é transmitido ao servidor, e não apenas o "idioma preferido", que ainda é desconhecido o que se desdobra
* número e sequência de cabeçalhos, incluindo emulação de bugs conhecidos de outros navegadores

E, em geral, tudo o que pode ser impresso deve ser capaz de mudar. Eu quero ter essa oportunidade.

O engraçado é que os navegadores antigos têm várias configurações para isso. Por exemplo, navegadores como links, w3m e netsurf podem não apenas desativar o Referrer / User-Agent, mas também oferecem muitas opções interessantes diferentes, nas quais é possível ajustar o comportamento do navegador, como ele preencherá esses campos. Embora apenas versões futuras do Firefox aprendam a fazer isso, e apenas parcialmente, sem fornecer 100% de proteção ao usuário, sem opções, definindo estritamente o comportamento apenas sob determinadas condições (no entanto, falaremos sobre configurações e condições do site).

Navios voadores

Durante muito tempo, o MSIE não apoiou a posição: fixo, pelo qual foi repreendido. E, como mostra a prática, é bom não ter apoiado. É verdade que isso não impediu as pessoas e elas o emularam através do JS com menus de salto, que sobreviveram até hoje em milhões de sites.

Hoje, elementos sobrepostos são usados ​​para tudo de útil: janelas de login em tela cheia que aparecem durante a navegação e não podem ser removidas (facebook), assistentes pop-up que se tornam bots de bate-papo, mensagens em tela cheia sobre promoções e presentes, como ganhei algo , às vezes eles apenas me mostram anúncios (por si só, sem anúncios, mas sem um botão fechar), pop-ups transparentes que me impedem de clicar na página (pornhub) e a apoteose: eles me dizem que tenho que desativar o AdBlock, o que não tenho.

Você já tentou imprimir alguma página? Mas costumo "imprimir" o PDF e quero derrotar aqueles que fazem extensões pop-up como "usamos cookies" ou "aqui notícias de última hora" em algum lugar acima ou abaixo da tela. Bem, ou apenas um menu fixo na parte superior e um rodapé simples na parte inferior. Não, bem, na tela ainda não parece nada, você pode rolar a página e ler de alguma forma o que eles estão bloqueando. Você sabia que essa sujeira é impressa em todas as páginas? E impresso em cima do texto? E que você não pode raspar o papel, embora seja uma caçada, porque essa sujeira bloqueia parte do conteúdo que não pode ser lido de nenhuma maneira? Até agora, eu tenho que quebrar estilos ou excluir alguns menus separados por meio do elemento inspector / ublock, somente depois disso eu posso "imprimir" a página. Isso é um pouco chato. Mas se houvesse elementos controláveis ​​simples, isso nem aconteceria!

Mas dentro do mecanismo do navegador, você pode detectar quando um elemento sobrepõe informações de texto e ... Bem, por exemplo, remova-as em algum lugar ao lado. Ou até quebrar estilos, declarando-os perigosos. Muitas opções. Você pode apresentar a página como camadas e dar ao usuário alguns botões para "cortar" as camadas superiores ou devolvê-las, como foi feito em alguns brinquedos ou editores tridimensionais - quero essa função por anos!

É engraçado, mas uma vez que o IE se recusou a exibir a tag piscar, ele permitiu que o JS movesse a janela do navegador e fizesse pop-ups sem fechar. Hoje, mesmo exibindo texto na barra de status já é difícil, é mais fácil imitá-lo. Agora, proponho fazer algo com blocos sobrepostos ao texto, é possível de alguma forma interromper essa função. E você precisa interromper cada vez mais recursos para que eles não possam ser usados ​​em detrimento deles. Sim, por isso, você pode escrever seu navegador, sem observar os padrões, mas é conveniente para ler texto e, além disso, programar menos.

Instantâneo da página

Ocorre que quando você abre uma página simples com algum texto, às vezes você a esquece e a deixa pendurada nas guias "para mais tarde", "para não esquecer". Como regra, não há nada de especial lá. Por exemplo, eles dizem como cultivar morangos no país e nada que indique problemas.

E, tendo chegado ao computador após algumas horas, você percebe que o MOUSE CURSOR mal está se movendo; TUDO no SWAP é impossível de trabalhar no computador; horrorizado, você abre a lista de processos e amaldiçoa (se você pode esperar o processo ser desenhado). E aqui a guia é fechada apenas com este site inocente.

Para evitar isso, uma vez escrevi um plug-in para o Firefox que, 5 segundos depois de carregar a página (evento onload), substituiu setInterval / setTimeout / requestAnimationFrame por chamadas vazias que não fizeram nada, mas desconectaram as existentes. Basicamente, eu estava feliz. É verdade que todos os tipos de elementos interativos, como desdobramentos de spoilers, também pararam de funcionar, porque não havia mais temporizadores, e a abertura do spoiler lançou um temporizador para animação. Este é um preço alto? Eu tive que abandonar meu plug-in, pois não consegui retornar manipuladores para algum evento, mas se escrevermos nosso navegador, por que não?

Implementação alternativa: após 10 segundos do evento onload, paramos todas as JS, descarregamos o DOM e deixamos apenas as estruturas na memória necessárias para renderizar retângulos com texto, tabelas e figuras. É isso, deixe a aba de fundo ser algo como uma imagem com texto, nada mais. Outra alternativa: renderizamos todo o layout em um processo separado e carregamos apenas as coordenadas do texto e das imagens após a renderização, como no Opera Mini, para que nosso navegador fique um pouco mais seguro.

O mais interessante é que já existe algo semelhante no Opera moderno, mas ele só é ativado ao mudar para a energia da bateria. Quero sempre ter essa opção para sites, especialmente para sites que visito pela primeira vez. Em geral, na essência de todos os navegadores modernos, existem muitas funções úteis, mas elas são codificadas e não podem ser configuradas pelo usuário, e é por isso que os navegadores praticamente perdem um enorme potencial.

Cache de conteúdo localmente

Eu conto a idéia por um milhão de dólares: carregar a página em 0ms. Não, mesmo que o site esteja completamente em nosso cache, ele não abrirá até enviarmos uma solicitação, aguardar o Tempo de Ida e Volta, analisar a resposta e fazer o mesmo com todos os scripts e estilos restantes. E o que impede você de abri-lo IMEDIATAMENTE do cache e validar o conteúdo em segundo plano, enviando solicitações para TODOS os recursos em segundo plano imediatamente, enquanto usa buffer duplo em segundo plano, para atualizar os dados em caso de alterações, redesenhando simplesmente figuras e blocos de texto? Diga o que já estava no IE e foi chamado "Trabalhar offline"? Sim, o IE ainda possui muitas funções interessantes e interessantes, mas, em primeiro lugar, essa função nem sempre funcionava e, em segundo lugar, não conseguiremos atualizar a página e, no meu caso, a página será redesenhada automaticamente à medida que for validada.

Infelizmente, na web moderna, o cache não funciona apenas mal, mas não funciona. Mas o que impede que páginas forçadas sejam salvas no disco? Isso permitiria não apenas abrir o site em caso de sua morte, salvar algum conteúdo útil, mas também monitorar, por exemplo, a dinâmica das mudanças nos preços de mercadorias ou capturar interlocutores que eles mudassem de cargo. Obviamente, você pode salvar as páginas em disco manualmente ... Mas, como regra, você só se lembra disso quando precisa retornar a uma versão antiga, mas não há nenhuma e há pouca esperança de um arquivo da Web. Às vezes, você pode pegar o conteúdo dos mecanismos de pesquisa, mas nem sempre funciona, principalmente se você não o fez imediatamente. Isso seria especialmente útil nos casos em que o conteúdo é facilmente dividido em elementos gerenciados separados, mas mais sobre isso posteriormente.

Obviamente, o cache deve estar na forma de diferenças incrementais (caso contrário, não haverá espaço suficiente para tudo), com análise intelectual de informações não exibidas (não há necessidade de armazenar o código alterado dos contadores), com destaque para as alterações, com a escolha de versões antigas diretamente da barra de endereços. Você pode armazenar as páginas já analisadas como um conjunto de retângulos e suas coordenadas na tela, dessa maneira você pode acelerar a renderização e as imagens podem ser reduzidas e armazenadas como h265, o que é muito melhor do que as imagens jpeg - economizamos espaço. E se já gastamos tanto esforço no cache forçado e no seu enobrecimento, por que não compartilhá-lo com outra pessoa? A interface do usuário é a principal coisa. O recurso não deve ser apenas, mas deve ser conveniente: abrir diferentes versões da página, excluir ou salvar versões, anunciar como um cache público, fazer uma seleção de páginas e descarregar versões locais do site (as páginas visitadas), fazer algo como mht / pdf com links de trabalho, para que possam ser abertos em outros dispositivos, e não apenas eles se instalaram em algum lugar nos repositórios internos do navegador, como acontece em alguns navegadores móveis.

Para acelerar o carregamento da página e proteger-se contra injeções inesperadas de código, vários scripts, como jquery e similares, armazenados em CDNs diferentes, podem ser carregados diretamente do disco local, como a extensão Decentraleyes. O download de fontes e pacotes de ícones será instantâneo. Saiba mais sobre o que já existe: addons.mozilla.org/en-US/firefox/addon/decentraleyes . Obviamente, seria bom injetar seu código, por analogia com o browser.js (não apenas com as mãos dos autores) ou com o Grease Monkey (somente sem trojans), para que você possa alterar / corrigir o código dos sites. Não, não muletas na forma de um plug-in, mas suporte nativo, que não diminuirá a velocidade, como era no Opera. Mas, infelizmente, agora simplesmente não existem ferramentas convenientes para corrigir o código do site. Richard Stallman chama isso de sites "tivoizatsii", mas isso será escrito na seção assinaturas de código.

Adicionamos aqui um sitemap.xml hipotético, que determina a afinidade de artigos, páginas para cache proativo, um link para um rastreador para troca de conteúdo p2p ... E obtemos um site auto-replicante que pode ser salvo e usado localmente, suportando qualquer carga e o conteúdo do qual não morre. nunca. No entanto, falaremos sobre isso, bem como sobre sites distribuídos.

Assinatura de código

Muitos de nós não pensam, mas pessoas diferentes podem executar código no navegador, escrito sob várias, incluindo licenças não gratuitas. E não o fato de o usuário concordar com essas licenças. É como fazer sexo sem consentimento prévio. Em princípio, na maioria dos casos, nada de ruim vai acontecer, mas pode haver nuances. Richard Stallman escreveu um excelente artigo “Javascript Trap”, com base no qual a extensão LibreJS foi escrita: en.wikipedia.org/wiki/GNU_LibreJS - este é o ponto de partida para interpretar Javascript em nosso navegador!

Se a indicação da licença fizesse parte do padrão, a vida seria um pouco mais fácil, mas não é. Se os autores do código o assinaram com sua chave pública, eu poderia pelo menos confiar em vários autores, mas também não existe. Tudo o que resta é misturar os scripts, incluindo os menores, costurados na página e pedir ao usuário para "permitir isso"? para executar cada um deles, mantendo um banco de dados de scripts permitidos ou proibidos. Algo como antivírus. Procure também “vírus” por assinaturas, mas em vez de um analisador heurístico - indicando uma licença e perguntas para o usuário. Com base nesses hashes, você pode não apenas se proteger de códigos maliciosos, mas também criar um sistema de versão. Crie uma infraestrutura onde apenas o código em que você confia será executado! Afinal, você está cansado de combater scripts que entregam texto e pedem para desativar o Adblock? Eu o desativaria, mas não tenho o Adblock, nem a confiança de que amanhã eles não me pedirão para fazer uma doação ou assinar alguma farsa.

Se você não conhece o notável trabalho de Richard Stallman, recomendo a leitura: www.gnu.org/philosophy/javascript-trap.ru.html (em russo).

Classificação / anti-classificação do site

Alguns navegadores, como o Opera, por algum motivo tentaram consertar cada site com as mãos, fazendo correções injetando código personalizado. E uma vez que eles se cansaram, todos sabemos o resultado. Embora eles estivessem justificadamente orgulhosos de suas realizações, que foram confirmadas em vários puzomerki, realizando testes de conformidade com o padrão.

Mas é possível seguir o caminho inverso: em vez de corrigir algo, escrever um email para alguém, usar conexões pessoais e tudo mais, é possível exibir o texto do patch diretamente na parte superior da página com as palavras “o autor deste site não adere ao padrão, o seguinte código pode corrigir este site. " Empurrado apenas desafio IE? Sem emulação, em vez disso, um grande pop-up vermelho sobre a adequação do autor (é claro, sem bloquear o conteúdo). Muitos usuários, é claro, ignoram isso, mas alguém pode fazer aos autores do site a pergunta: "Por que há tanto vermelho aqui?" E os proprietários do site dirão como eles economizaram dinheiro com os programadores. Ou diga ao cliente que seria necessário colocar o "Google Khroma normal", por causa do qual o cliente tem mais chances de deixá-lo. Se um site desse tipo exibir algo como "location.href = 'http://google.com/',venha até nós novamente ”- isso é ainda melhor, não mexa com essas pessoas.

Você pode ir além: a imagem na página é exibida como 100x100, mas na verdade 500x500? Pop-up vermelho com uma mensagem de que o autor não pode redimensionar as fotos. Uma imagem com gráficos fotorrealistas encolhidos em PNG? Pop-up vermelho de que o autor não entende os formatos de arquivo. A página não possui um link para a página principal? Um pop-up vermelho com uma mensagem informando que o autor do site não fez a navegação normal.

Obviamente, os pop-ups vermelhos nem sempre podem ser exibidos. Por exemplo, se uma imagem PNG puder ser melhor otimizada através da opção de opção, você poderá exibir apenas um pequeno aviso em vermelho, como deduzem seus bloqueadores de anúncios. Vários otimizadores de CDN já fazem algo semelhante, que comprime as imagens e reduz o código, e até tenta filtrar as injeções de SQL na entrada. Mas toda essa alegria será apenas se o autor pagar dinheiro e conectar os serviços correspondentes, e o que um usuário simples deve fazer? E um usuário simples pode simplesmente se recusar a usar um site de baixa qualidade, e seu navegador deve ajudá-lo nisso.

O relatório do bloqueador de anúncios, que exibe números digitais, já pode ser considerado um tipo de site anti-rating. Quanto mais anti-classificação, pior o site e o autor teriam que fazer algo a respeito. Para alguns valores, você pode simplesmente exibir avisos de que visitar este site pode ser indesejável. Além disso, acredito que o navegador deve compartilhar suas descobertas com a comunidade. Você pode criar uma classificação global para cada site, agarrando-se aos dígitos desejados de cada link, para não ir acidentalmente para algum lugar onde o usuário esteja aguardando uma "má experiência". Obviamente, tudo não pode ser automatizado. Portanto, você pode criar várias classificações, algumas das quais serão lideradas por pessoas vivas, verificando manualmente o código, verificando suas licenças e a qualidade do código, a qualidade do site como um todo. Obviamente, o mecanismo deve ser descentralizado e não controlado por indivíduos específicos.Deixe o usuário decidir qual assinatura será assinada.

Configurações individuais do site

Cada site ou grupo de sites deve ter suas próprias configurações individuais, semelhante à forma como ele pode ser configurado no Opera antigo (até 12 versões, inclusive). Somente esse mecanismo pode ser aprimorado.

Primeiro, identifique sites não apenas por domínio ou subdomínio, mas também por expressões regulares no domínio. Ou pelo endereço IP recebido deste domínio. Por exemplo, não quero executar scripts em sites / recursos do Yandex (veja os motivos abaixo), encontrei listas de blocos de endereços IP de propriedade do Yandex e interrompi suavemente a execução de código não confiável. É simples e fácil. Mas, no momento, sou obrigado a me limitar a banir domínios individuais (não conheço todos eles!), Inserir todos os intervalos de endereços em um firewall, o que é extremamente inconveniente, ou aumentar meu servidor DNS com os endereços da máscara * yandex *, que eu fazendo no momento.

Em segundo lugar, para não produzir uma entidade, você pode criar perfis básicos, como “site confiável”, “site regular”, “site ruim”, “para sites da Vasyan”, “para Aliexpress” e atribuir suas configurações a este ou aquele site . E, dependendo do perfil, o seu User-Agent será enviado, a sequência e o conteúdo dos cabeçalhos, o suporte ou o carregamento não suportado de estilos, fontes, scripts e tudo mais que pode ser configurado. Mesmo para determinar se é possível interceptar o clique direito do mouse, com que precisão iniciar temporizadores ou se reproduzir animações e sons (para algum propósito desconhecido, uma solicitação de MIDI aparece no AliExpress). Você também pode fornecer configurações que mudam aleatoriamente, como valores aleatórios do User Agent de uma lista grande ou um proxy arbitrário para um site específico (mais sobre isso posteriormente).

Copie e cole

Parece que qual poderia ser a função mais básica em programas que exibem texto? Trabalhe com a seleção / cópia / colagem de texto, é claro!

Infelizmente, mesmo com uma seleção simples, os problemas já começam. Você já tentou destacar o link? Em um navegador, no correio, no IM? E como é isso? Em algum lugar, o link começa a arrastar, em algum lugar em que você clica nele, mesmo que você não tenha soltado o botão, e em algum lugar em que você precisa apontar para o espaço em milímetros para poder selecioná-lo. Selecionar imagens é uma loteria separada, às vezes isso não pode ser feito, exceto pressionando a combinação secreta de hackers CTRL + A. Um passo para a direita e para a esquerda - e selecionamos a página inteira, e não o parágrafo que pretendemos.

Ou o texto pode não se destacar, criando a ilusão de um botão do mouse quebrado. Mesmo se mirássemos e pudéssemos selecionar o texto, não é fato que, quando clicamos com o botão direito do mouse, não recebemos um aviso legal como "O texto desta página está protegido de maneira legal". Ou nada aparecerá, pois os navegadores aprenderam a interromper esses scripts automaticamente. Ou a solicitação para enviar um relatório sobre um erro de digitação encontrado na página não será publicada. Durante a leitura de um texto, costumo selecioná-lo com o mouse para facilitar a percepção, e essa sujeira me enfurece incrivelmente.

A inserção é ainda pior. A formatação será salva ou não? Às vezes, depende se você usa uma tecla de atalho ou uma "roda" - comportamento diferente, para uma ação aparentemente única. Haverá lacunas no que é inserido em aplicativos de terceiros se não houver espaços entre os blocos? E às vezes você não se livra da formatação: cola o texto copiado na página, por exemplo, na letra digitada, e o parágrafo digitado fica subitamente em negrito e / ou se transforma em uma citação.

Último chiado da moda: substitua o conteúdo da área de transferência. Você copiou o texto sobre os gatos, colou-o com relutância no bate-papo e ... Eles fizeram a proibição, pois junto com o texto desejado, um anúncio do recurso foi inserido, de onde a cópia era. É claro que você precisa ser cuidadoso e cuidadoso, observe o que e para onde está enviando ... Mas, por outro lado, por que minhas ferramentas para visualizar texto permitem que elas se comportem dessa maneira?

Armazenamento distribuído

O cache local do conteúdo sobre o qual falamos anteriormente é apenas parte das necessidades de um usuário moderno da web. A segunda parte importante do problema é o armazenamento em cache de conteúdo no servidor, a caminho do cliente em diferentes CDNs e similares. De fato, sites pequenos podem ser confrontados com o fato de que é preciso muito tráfego para entregar arquivos essencialmente estáticos. Tudo de novo e de novo. E eles praticamente não têm outra opção a não ser alimentar o CloudFlare, que ri de modo que ele forneça seu cache distribuído.

O próprio CloudFlare possui uma tecnologia RailGun interessante: www.cloudflare.com/website-optimization/railgun- Esta é uma muleta bacana que permite armazenar em cache não armazenável em cache, com a ajuda de que eles não apenas armazenam em cache versões antigas de páginas, mas também fazem diffs com elas e enviam a diferença já reconstruída de seus servidores. Portanto, você pode atualizar a página com apenas 1 pacote de dados de 400 bytes (o número é retirado da descrição) e o servidor original pode hospedar até mesmo no telefone (na verdade, isso não é verdade). Mas, para isso, você precisa pagar US $ 200 por mês, o que é um dinheiro muito substancial para sites pequenos.

Ah, e se fosse possível dividir o conteúdo em pequenos elementos gerenciáveis ​​... Mas sim, mais sobre isso mais tarde. Embora existam muletas como diff e cloudflare com sua Railgun.

Mas o sistema de arquivos IPFS dividido já existe. E existe o ZeroNet, que agora, pronto para uso, permite hospedar sites de maneira distribuída. Você pode tentar fazer o download do cliente e procurar nessa rede incomum, que não precisa de servidores!

No entanto, não há nada de novo aqui. Cerca de 15 anos atrás, sites populares tinham seu próprio cliente de desktop (e às vezes mais de um) e uma distribuição de torrent no kit. E hoje existe de uma forma ou de outra, por exemplo, o aplicativo WikiTaxi, que permite manter a Wikipedia no seu bolso. E também me lembro de algo como o AportExpress, no qual havia um mecanismo de modelo completo e modelos nativos do Aport do servidor, que coletavam páginas no cliente.

Rede aprimorada

Você pode imaginar que às vezes as pessoas acessam a rede através de diferentes modems GSM, onde a velocidade já baixa é cortada pelas más condições de recepção do sinal / más condições do contrato? E existem sites como imgur.com/a/XJmb7 onde há coisas muito bonitas, mas o peso da página em si, incluindo todos os gráficos, excede dezenas de megabytes. O único problema é que essas páginas não podem ser visualizadas com essa conexão.

Hoje, o navegador está tentando carregar todas as imagens ao mesmo tempo, diminuindo o carregamento de cada uma delas (por isso ainda fazem um monte de subdomínios para contornar os limites do número de conexões). Depois de algum tempo, ocorre um tempo limite e o servidor simplesmente fecha a conexão, deixando-nos com imagens quebradas, o que é bom se estiver aberto de alguma forma. Se você pressionar F5, por um momento haverá um desenho (cancelando o download e exibindo o que já foi carregado) e o download continuará desde o início, sem retomar imagens individuais. E você sempre notou que o navegador "baixa" a página ou o arquivo primeiro a uma velocidade de 50kb / s, depois a 20kb / s e depois a 3kb / s? Isso significa que, por algum motivo, a velocidade real de download se tornou igual a 0 bytes / s, e desconectar e iniciar novamente é repleto de grandes dificuldades,mesmo que seja possível fazer o download técnico do arquivo.

Mas o servidor da web pode gerar arquivos torrent para estática e distribuí-los no modo automático, o que permitirá baixar arquivos e remover a carga do canal de rede! Na sua essência, um arquivo torrent é apenas uma lista de somas de verificação que permitem baixar um arquivo de um local arbitrário e verificar a correção do download. Assim, mesmo imagens incompletas podem ser facilmente esvaziadas, mesmo com a 5ª tentativa, para resolver com precisão o problema de controle de versão e validação de cache.

E como fornecemos metadados ao cliente sobre arquivos, podemos projetar a página inteira como "uma grande distribuição" na forma de um único pacote de dados, dentro do qual serão exibidas informações sobre a página, além de arquivos de imagem, estilos, páginas vinculadas e outros referências (incluindo outras "distribuições"), uma espécie de pequeno mapa de site binário. Isso permitirá que você armazene em cache / pré-cache melhor os sites, carregue todos os recursos mais rapidamente, sem esperar que a página ou os scripts sejam totalmente carregados, e até otimize sites para pessoas com deficiência, oferecendo-lhes navegação avançada na página. Ou não baixe nenhum elemento de uma vez, por exemplo, ícones da Apple na meia tela ou em muitos vídeos.

Infelizmente, os desenvolvedores modernos estão tentando lidar com esses problemas à sua maneira, sem fornecer configurações e implementar tudo isso com suas próprias mãos, ou seja, "Como vai." Por exemplo, o upload de fotos e vídeos através de um monte de JS, muitos domínios e processamento de rolagem de páginas, motivo pelo qual não é mais possível rolar a página rapidamente para a “décima página”, o que me deixa muito furioso. Felizmente, alguns grandes fornecedores, como a Xiaomi, começaram a combater isso, perguntando cada vez: “Deseja reproduzir o vídeo? Uma taxa adicional pode ser cobrada por isso! ”, Mas até agora é impossível estabelecer uma proibição automática de tais desgraças, e ainda existem muitas maneiras de contornar o desenvolvedor.

Se já tocamos em sites sem fim com rolagem sem fim, gostaríamos de observar: não há nada que impeça o usuário de mostrar o esqueleto vazio de todo o feed gigante para que ele possa navegar facilmente e carregar o conteúdo dinamicamente. Mas ninguém faz isso.

Sites para download

Digamos que eu encontrei um site com manuais de cultivo de morango. Admirei, fiquei animado com a ideia, fui ao chalé e ... E, tendo encontrado problemas, percebi que tinha que converter cada página em PDF e só então ir para o chalé. Por que em pdf? Sim, porque as páginas modernas nem mesmo querem ser salvas corretamente a propósito, e o que resta a ser exibido quando o HTML local é aberto e onde ele está amontoado, o Cookie só pode ser adivinhado.

Mas antigamente, eu podia pegar o Teleport Pro e bombear todo o site com morangos, derramar no meu telefone e ir com calma para a cabana! Todas as imagens serão divulgadas, todos os links serão vinculados, quase tudo funcionará. Havia até sites com sites já carregados - algo indispensável para aprender naqueles anos, além de mecanismos de pesquisa em JS que funcionavam exatamente no navegador!

Mas o que acontecerá hoje se eu tentar fazer isso? Estou aguardando a descoberta de que, em sites modernos, as páginas são dinâmicas, cada página possui mil URLs e faço download com facilidade de três páginas 10.000 vezes, vinculo-as com cuidado e, quando navego para a página desejada, nem consigo obtê-la (por meio de o caminho dos 50 links, que terei que seguir exatamente o mesmo que a cadeira de balanço).

E se você realmente quer? Nesse caso, pegamos e escrevemos um analisador de site hoje, selecionamos o conteúdo (por regulares ou xpath), de alguma forma o vinculamos usando scripts caseiros, anexamos um índice de merda e paus, talvez até o mecanismo de pesquisa mais simples. Tudo isso leva de 1 dia, até você ficar entediado. Você pode salvar o texto no Word e jurar pelo fato de que tudo está inserido em vermelho Impact e a marcação vai a tal ponto que é impossível olhar para ele. Você pode ligar o gravador de vídeo e rolar pelas páginas - uma opção menos dispendiosa no tempo, embora esse registro pesa muito, mas atualmente é pouco preocupante.

Nesse momento, eu teria que escrever que, em um navegador ideal, preciso da função de bombear sites, para que mais tarde possa transferir conteúdo facilmente para um telefone ou qualquer outro dispositivo * independente *. Mas, considerando o exposto, infelizmente, isso é impossível. Mas se nosso conteúdo fosse dividido em pequenos elementos gerenciáveis ​​... Mas, infelizmente. Portanto, um navegador moderno, além de todos os itens acima, deve ser capaz não apenas de analisar esses mesmos elementos, mas também de armazená-los em um banco de dados local, versão e ser uma espécie de CMS pequeno.

E não pense que sites modernos, em princípio, não possam ser esvaziados. Pelo contrário, a estática entra em moda novamente, existem até projetos interessantes e populares como github.com/jekyll/jekyll para gerar estática. Então, por que não distribuir a "fonte" do site?

Exoneração de responsabilidade: O Teleport Pro é usado aqui apenas como o software mais famoso para sites de bombeamento, nunca é um anúncio ou nostalgia, eu pessoalmente não gostei por causa de um monte de arquivos temporários e pela incapacidade de analisar corretamente o javascript. Minha escolha foram outros roqueiros, não tão conhecidos, como o webzip, que, embora exigissem muitos recursos, inseriram anúncios nas páginas, mas lançaram o conteúdo correta e completamente.

Conteúdo de mídia

Como pequenos elementos gerenciados que se transformam em um monólito incontrolável, os autores do site fazem ferramentas primitivas para visualizar o conteúdo da mídia. Simplificando, todo primeiro site tenta me mostrar um vídeo através de seu exclusivo reprodutor da web. Único lá, é claro, são o logotipo e as falhas.

Não, uma vez eu também me gabava de escrever um flash player legal em um flash, e faria isso em apenas 20 linhas! Eu sou legal, eu posso fazer qualquer coisa! Com a idade, comecei a fazer perguntas:

1. Como distorcer o brilho / contraste nisso? E normalização dinâmica?
2. Como mudar para tela cheia? E se não houver botão, porque eles se esqueceram de desenhá-lo?
3. Como acelerar uma palestra chata em 3 horas?
4. Como girar um equalizador? Os professores quase não são audíveis, mesmo que você desaparafuse os alto-falantes
5. Como eu cortaria esse pedaço e o enviaria a um amigo?
6. Como eu voltaria rapidamente, por alguns segundos, sem apontar o mouse para uma pequena faixa?
7. Como fazê-lo sair mais de 15 qps?

Alguns fornecedores já estão tentando resolver esse problema. O problema está na forma de produtos caseiros primitivos com recursos básicos. Por exemplo, no Opera, você pode "descascar" o player da página e gerenciá-lo separadamente. Existe o youtube-dl, que permite não apenas baixar vídeos de vários serviços, mas também obter um link para que você possa colocá-lo em um player normal, pelo menos no VLC. Há também StreamLink e MPV, tente, com certeza você vai gostar mais do que jogadores comuns.

Mas podemos ir além aplicando todos os princípios acima à multimídia. Se algo quiser perder, pedimos ao usuário, depois o baixamos, armazenamos em cache localmente, decodificamos e exibimos - como em qualquer outro navegador. Porém, como entendemos que o navegador não é um aplicativo multimídia e não pode atender a todas as solicitações, podemos exibir um botão próximo que iniciará um player normal com o conteúdo exibido. Vamos confiar nos profissionais e fãs que passaram muitas horas de suas vidas nisso. Pessoas que vivem música ou vídeo, e não são forçadas a conectar um player ao site por 20 dólares por hora.

Para que a conexão com a fonte de vídeo não seja interrompida e o vídeo não seja baixado novamente, podemos abrir um servidor proxy local, como fazem os clientes de torrent, reembalando o fluxo de vídeo em tempo real, que usamos para distribuir o vídeo para um aplicativo externo e quando a solicitação chega - parte do cache e parte será alimentada em tempo real, de acordo com as solicitações do aplicativo e os recursos do site. Da mesma forma, qualquer vídeo / áudio pode ser facilmente salvo como um arquivo, mesmo que originalmente fosse uma transmissão ao vivo ou scripts e arquivos de origem de mídia gerados dinamicamente e arquivos como tais nem sequer existissem. E você não precisa procurar links diretos em algum lugar nas entranhas das páginas, combater redirecionamentos ou incluir artilharia pesada na forma de gravação de vídeo na tela - o navegador deve ser o usuário e o usuário terá êxito, ninguém o incomodará. A coisa mais difícil aqui é, talvez, uma injeção no processo do Flash. Mas o seu ciclo de vida termina, porque muitas vezes não deve ser atualizado.

Filtrando conteúdo inapropriado

Se as palavras sobre a filtragem de conteúdo indesejado geralmente vêm à mente apenas pornô ou publicidade intrusiva, mas você já enfrentou um problema em praticamente qualquer site, quando seria melhor não ver esse ou aquele conteúdo. Lembre-se de como você rastejou por sites diferentes, obtendo quilômetros de resultados de pesquisa com resultados semelhantes. Ou não do mesmo tipo, mas você tentou encontrar algo diferente entre o conjunto de dados?

Por exemplo, em um site com trabalho / freelance, muitas vezes você pode ver que alguém precisa escrever uma redação, mas você não está fazendo ensaios, assim como não escreve em JS ou PHP, mas geralmente pega e joga todos esses projetos fora dos resultados de pesquisa é simplesmente impossível, além de depender de categorias - normalmente ninguém as indica. Ou você está vendo um feed de notícias e, após a queda de outro avião, não sabe para onde ir das notícias sobre o avião, especialmente se houver parentes lá e isso o machucar? Algumas pessoas tiveram algumas expressões de moda e famosas, ou mesmo apenas tendências, como spinners ou Pokemon, como resultado dos quais até plug-ins especiais de navegador pareciam simplesmente não ver isso. E quem não gostaria de adicionar alguns "amigos" à lista negra para que eles nunca mais vissem suas postagens? E ainda não vê as notícias sobre o rinoceronte vomitando com sua publicidade insolente, coberta por testes de programas de código aberto e ajuda gratuita à comunidade ...

O engraçado é que quase qualquer cliente de email tem filtros avançados para classificar / excluir automaticamente lixo eletrônico, mas quase nenhum site tem essa funcionalidade. Se nosso conteúdo fosse cortado em pequenos elementos gerenciáveis, poderíamos filtrar / destacar para não perder tempo com algo em que claramente não estamos interessados. E eu não precisaria escrever analisadores para alguns sites que excluíram 90% do conteúdo e me deram um aperto na forma dos 10% restantes no formato que eu precisava. E não 10 elementos por página. Pelo menos 1000 peças . Seria possível usar leitores de RSS, mas o RSS / Atom está longe de qualquer lugar, especialmente não é suficiente nos resultados da pesquisa.

Pequenos itens gerenciáveis

Então, quais são esses elementos pequenos e gerenciáveis ​​do site mencionados anteriormente? Para facilitar o entendimento, vamos imaginar um arquivo json estático com algumas informações. Ou XML, ou o banco de dados SQLite, ou um arquivo XLS, ou um mecanismo de texto CSV, ou algo que ainda não nasceu, mas é necessariamente binário, compactado e nanotecnológico ... E por dentro há pequenas informações. Pequenas porque são unidades lógicas indivisíveis. Pode ser um link no painel de navegação, um trecho para a descrição do produto, o próprio produto com todas as propriedades, comentário do usuário ou mesmo todo o artigo. Também pode haver alguns widgets de site separados: campo de pesquisa, cesta de pedidos, campo de login / razlogin.

Gerenciado porque, ao contrário de um monólito cego, podemos gerenciar esses dados: identificar o correto, classificá-lo, produzi-lo na ordem direta e reversa, filtrá-lo ou decorá-lo com nossos dados, criando mashups que faziam muito barulho no devido tempo. Quase todo site possui um banco de dados que gerencia o SQL. Por trás do SQL está a teoria relacional, álgebra relacional e muitos, muitos métodos de gerenciamento de informações. E um pouco mais abaixo, mostrarei como as informações podem ser gerenciadas e quão pouco os autores dos sites nos fornecem, se é que existem.

Por exemplo, estou tentando encontrar um novo trabalho interessante no campo da demoscene. Vou para pouet.net , cutuco Prods e depois ... Por um lado, quero apenas um trabalho legal, então ordeno o trabalho pelo número de lois. Em primeiro lugar, vejo o meu fr-041 favorito: detritos, além de outros trabalhos que já vi mais de uma vez. Mas eu quero algo novo! Eu acho que isso significa na data de lançamento, aqui está apenas uma novidade. Mas qual é o melhor? Como eu combinaria 2 classificações? Ou pelo menos faça uma seleção pelo período de tempo do formulário "nos últimos seis meses" e só depois classifique-o? Infelizmente, não me foram dadas as ferramentas para fazer isso. Mas cada um dos trabalhos pode ser representado em nosso arquivo JSON como um elemento da matriz de trabalhos, com base no esquema de dados, nosso navegador pode desenhar controles independentes dos autores do site, onde faríamos seleções para nosso prazer.

Outro exemplo: todos sabemos que a pesquisa é melhor do que o Google simplesmente não existe. Mas às vezes ele se considera tão inteligente que joga fora frases inteiras da consulta de pesquisa, as traduz para diferentes idiomas e mostra o que considera mais útil. Eu não preciso disso. Onde está a caixa de seleção "pare de ficar esperto, eu estou no comando aqui"? Anteriormente, consistia no arranjo correto de aspas e vantagens, e agora está localizado em bing.com - uma pesquisa mais primitiva é ativada imediatamente, mas procura exatamente o que eu preciso e não é inteligente, não ignora minhas palavras-chave, não ignora as condições da solicitação. Se ele encontrar alguma coisa, mas se não encontrar, ele honestamente dirá isso, sem tentar encontrar algo de si mesmo. Nesse caso, se recebêssemos pequenos elementos gerenciáveis, poderíamos combinar facilmente os resultados de pesquisa de ambos os mecanismos de pesquisa em um único feed de pesquisa. Para isso, precisaríamos conectar apenas 2 do mesmo tipo de matriz.

Muitas vezes, os resultados de pesquisa em sites individuais estão repletos de spam ou anúncios semelhantes ou simplesmente descrições distorcidas de algo. Por exemplo, uma blusa pode ter 20 opções de cores - vou ter que percorrer tudo isso com meus olhos. E, na melhor das hipóteses, só posso remover do problema algumas categorias de mercadorias ou exibir anúncios de alguém, mas isso é extremamente inconveniente e, geralmente, essa funcionalidade simplesmente não é fornecida. Se tivermos pequenos elementos gerenciáveis, posso filtrar o vendedor negligente ou até selecionar imediatamente as roupas da cor desejada.

Voltar para a classificação novamente. Assim como na pesquisa de demonstrações bonitas, ao pesquisar mercadorias em lojas on-line, vários parâmetros costumam ser interessantes, mas você pode classificar os resultados da seleção apenas por um. Se possível. Isso afeta até os maiores pregões. Se eles retornassem dados brutos, seria muito fácil de manipular. Na prática, você precisa abrir 50 páginas e comparar manualmente as descrições dos produtos, lançar moedas e esperar que a compra seja bem-sucedida. Não há esquemas fraudulentos quando um pente de US $ 1 é adicionado ao lote como acessório, mas na verdade o custo mínimo é de US $ 10. Existem métodos mais interessantes. Quando comprei meu primeiro tablet, publiquei descrições de 15.000 produtos e pacotes com produtos regulares em busca das palavras-chave de que eu precisava - era muito lento, mas achei meu amor (era U9GT2).

Mas vamos voltar aos nossos morangos. Ou melhor, para o site com manuais sobre o cultivo de morangos.

Imagine que a instrução para cultivar morangos é um recurso (ainda na forma de um arquivo json, para simplificar), que pode ser solicitado separadamente, dentro do qual há marcação semântica (ele nos dirá a quais páginas se refere e o tipo de links). Sem navegação, dicas das melhores dicas ou comentários de outros usuários - apenas conteúdo puro. Bem, tops, comentários e dicas em algum lugar próximo, é claro, também pode haver, mas o principal é que isso não está na forma de um monólito, é possível identificar com precisão os tipos de dados necessários. Certamente, anúncios e scripts certamente serão adicionados aqui, mas mais sobre isso posteriormente. Por enquanto, acreditamos que temos conteúdo puro, diretamente do banco de dados (ou mesmo do editor de conteúdo). É fácil desinflar, dobrar, indexar, sem mencionar a facilidade de armazenamento em cache e entrega de conteúdo. Esses elementos podem ser usados ​​para pré-armazenar em cache na CDN e no navegador, criando pacotes em massa com conteúdo para compactação e carregamento eficientes (para não pressionar cada botão separadamente por 50 bytes), para versionamento e arquivamento. Esses dados podem ser distorcidos e transformados em um navegador por um longo período sem carga no servidor, reproduzidos por um longo período de tempo com tipos e seleções diferentes. O engraçado é que isso é exatamente do jeito que é armazenado nos bancos de dados dentro do CMS de gerenciamento. Mas tudo isso é transmitido através de um "monolitizador", que imprime os dados em HTML monolítico, o que torna muito difícil trabalhar com isso.

Você pode criar muitos recursos interessantes com esses dados em mãos. Por exemplo, você pode analisar postagens em fóruns, armazená-las em cache e assistir a postagens excluídas.

Onde estão esses elementos pequenos? O que já está lá?

É difícil de acreditar, mas as tentativas de separar o conteúdo de sua apresentação já existem há algum tempo. O primeiro sinal foi o RSS, que faz um excelente trabalho de entrega de trechos. O Yandex.market requer descarregar lojas em um formato XML especial que contém preços, fotos, informações sobre o fabricante e até entrega. Outros sites têm seus próprios formatos de upload, por exemplo, o Google Merchant usa RSS2.0 ligeiramente modificado, mas, em geral, esses formatos podem ser lidos e renderizados hoje.

Se você sonha com sonhos, ou seja, todos os tipos de opengrades e microformatos, e muito foi adicionado ao HTML5, mas, infelizmente, contar com isso hoje é difícil. Por outro lado, muitos sites já contêm marcação semântica, portanto, recusar a leitura é estúpido.

Pode-se trocar XML ou JSON puro com vários campos nomeados e semi-padronizados. Você pode até trocar os próprios bancos de dados no formato SQLite ou gerar pequenas seleções nele. O principal é que deve haver dados limpos, sem nenhum código (mais sobre isso mais tarde).

Onde conseguir felicidade?

A princípio, até que os desenvolvedores entendam as vantagens da nova maneira de interação, nós mesmos precisaremos obter nossa própria felicidade. Simplificando, sugiro analisar sites e retirar deles as entidades que precisamos. Você pode fazer isso com xpath, seletores CSS modernos ou boas expressões regulares antigas. Sim, para cada site na Internet, você precisará escrever seu próprio analisador. À primeira vista, este é um trabalho titânico com um resultado inatingível, mas é?

Até o momento, existem vários projetos especializados em análise de sites. Alguns, como o Octoparse, exigem quase nenhum conhecimento, os blocos necessários são selecionados com o mouse. Além do plano de "rastreamento", o site também é preenchido com o mouse. Isso significa que o limiar de entrada para “programação” será extremamente baixo; até uma dona de casa pode criar seu próprio analisador, se quiser. Se o analisador for de baixa qualidade ou parar de funcionar, o navegador simplesmente exibirá a página como está, até que outra pessoa escreva um novo analisador.

Também há projetos mais próximos que estão trabalhando hoje. Por exemplo, esse é o recurso Instant View no Telegram. As pessoas já escreveram muitos analisadores que ignoram sites famosos e apenas o conteúdo limpo é analisado. E quando alguém publica um link para um site desse tipo no Telegram, o botão estimado Instant View aparece. Se você pressionar, apenas o conteúdo puro chegará, sem anúncios e outros tipos de lixo. Serão necessários apenas alguns kilobytes de tráfego e memória para baixar, em vez de megabytes de tráfego e gigabytes de memória, como seria o caso do navegador.O download de uma quantidade tão pequena de dados ocorre instantaneamente, daí o nome do recurso - Visualização Instantânea. Se um analisador quebrar, ou seja, um rastreador de erros e uma comunidade pronta para escrever um novo analisador, que será tratado por um editor conveniente. Portanto, se alguém não pode acreditar na possibilidade de tal idéia, até que ele mesmo veja com seus próprios olhos - seja bem-vindo.

É verdade que nossa tarefa será um pouco mais complicada, pois além de exibir o texto dos artigos, também precisamos exibir feeds com artigos, navegar por seções do site (artigos, um fórum e uma loja - tudo isso não deve ser perturbado em um único feed). É necessário não apenas extrair o que é necessário da página, mas também decidir em quais tabelas organizá-lo. Por exemplo, gosto muito de ler comentários e, se apenas as principais notícias ou artigos forem retirados, o valor do recurso será menor para mim. Por exemplo, eu costumava assistir ao YouTube pelo SkyTube e encontrar muitos comentários novos e interessantes, mas a mudança para o NewPipe ficou sem eles. O mesmo conjunto de analisadores que o youtube-dl sofre com isso. E aqui está como classificar o conteúdo resultante em prateleiras - essa é uma grande questão, nem toda dona de casa poderá projetar a estrutura do banco de dados. A questão maior écomo navegar por esse conteúdo. Qual é o principal e qual é a subsidiária? De alguma forma, há muitos anos, eu já escrevi um analisador universal com heurísticas, então ele cortou o conteúdo principal, deixando apenas comentários, porque eu achava que os comentários eram a principal coisa.

É ainda mais difícil entender o que fazer com os dados recebidos, como exibi-los. Somente os métodos existentes vêm à mente aqui: modelos HTML, PHP e SQL. E se os navegadores no NodeJS já estão funcionando, por que não adicionar PHP ao navegador para um dos recursos? Eu não sou fã dessa linguagem, mas o limite para inseri-la é mínimo e, onde não será possível fazer alguns modelos simples, as pessoas poderão programar nela (ou em qualquer outra linguagem, veja abaixo). Algo parecido com essa geração de páginas me lembra o antigo Aport Express - um pequeno programa do mecanismo de pesquisa Aport, que estava envolvido na tarefa de exibir os resultados da pesquisa diretamente no cliente, reduzindo o tráfego na conexão discada usada na época. Se alguém quiser mergulhar na história, você pode ler em web.archive.org/web/20010124043000/http: //www2.aport.ru: 80 / aexpress / e faça o download em web.archive.org/web/20040627182348/http : //www.romangranovsky.narod.ru: 80 / aexpress.exe

Banners e rastreadores

Não, o anúncio em si não me incomoda mais: ao longo dos anos de presença na rede, desenvolvi uma cegueira de banner, que consiste no fato de simplesmente não ver blocos em “lugares de destaque”, além de blocos escritos em alguma fonte não padrão ou simplesmente em maiúsculas. Às vezes, isso é ridículo - eu procuro os botões "registrar", "baixar" ou "novo tópico" há muito tempo, pois eles são ampliados e visíveis, mas eu não os noto. Às vezes, até que eles me enviem uma captura de tela com um botão dentro de um círculo. E não é uma questão de tráfego ou velocidade. Hoje, esse é um problema de segurança, porque, em primeiro lugar, a publicidade em banner é um código executável, o que significa que não é apenas um vazamento de dados pessoais para a chamada "segmentação" e rastreamento de tudo, mas, na verdade, é apenas uma brecha na segurança,através do qual você pode preencher uma exploração ou apenas um mineiro. Se anteriormente era possível dizer "não entre em sites pornográficos e tudo ficará bem", agora o "site pornô" está incorporado em quase todos os sites, em todas as páginas.

Mas os rastreadores me dão uma dor particular, além disso, os ativos trabalham constantemente na página. Eu posso usar o Yandex.Metrica como um exemplo dessa sujeira; tudo era insuportavelmente lento com isso. Valeu a pena banir todos os domínios Yandex e minha vida foi cheia de felicidade, pois os sites de repente pararam de frear e eu até parei de pensar em atualizar o ferro. A proibição de domínio Yandex é a primeira coisa que faço quando configuro um sistema para alguém. As pessoas não perdem nada, mas a velocidade de navegação aumenta em uma ordem de magnitude.

A solução é muito simples: a capacidade de especificar "domínios amigáveis" para o site e desativar as solicitações para todo o resto. Assim, você pode cortar anúncios usando a Política de Solicitação ou equivalente, que, diferentemente dos cortadores em forma de AdBlock, funcionará em quase todos os sites, não exigirá assinaturas e ajudará mesmo que o site tenha sido invadido e um monte de código malicioso seja colocado nele.

Ouço gritos de que cortar publicidade reduz a renda dos autores? Não se esqueça que, durante muito tempo, ninguém paga para exibir banners. Não faz sentido exibir anúncios _me_, ele apenas gasta meu tráfego e o tráfego do servidor, mas não trará um centavo aos autores. Mas isso só pode me deixar com raiva. Ao mesmo tempo, escrevi um conjunto de utilitários para sites particularmente distintos.

Se você agüenta a coleta / vazamento de dados pessoais e o usuário fica irritado ao mesmo tempo, recomendo instalar algo como a maravilhosa extensão AdNauseam. Provavelmente, a única extensão para bloquear anúncios banidos pelo Google. A essência desta extensão é muito simples: clica em cada elemento para ser bloqueado no modo oculto, ou seja, sem mostrar nada ao usuário. Os anunciantes recebem seus cliques há muito esperados, como quiserem. E se você clicar em cada banner, os dados pessoais vazados serão misturados com um monte de lixo, pois não corresponderão às preferências reais do usuário. A segmentação e o rastreamento se tornam inúteis. Extensão muito boa. E uma ideia brilhante.

Publicidade (perfil de destino)

Condenar? Sugerir! Sim, condeno a prática de coletar dados direcionados, especialmente com a ajuda de vigilância e truques ruins semelhantes (para mim). Por que não inserir os dados de segmentação diretamente no navegador? Vou contar tudo sobre mim, não preciso de vigilância e vírus:

Gênero: masculino
Idade: 55 anos
Educação: especial secundário
Passatempos: fisting, bdsm, transsexual, dispositivos de castidade, controle da respiração com máscara de gás
Residência: Klyuchi (um assentamento) em Ust -Kamchatsky, distrito de Kamchatka Krai
Última verificação na loja: 28 rublos (forma de pão)
Condição financeira: sem dinheiro, eu vivo com a mesada e no meu jardim pessoal
Atitude para produtos gratuitos:Escrevo críticas negativas sobre eles, coloquei Coca-Cola.
Perfil nas redes sociais: não existe e não haverá
cartão de crédito: não existe e não estará

Ansioso pelas ofertas que posso usar, levando em consideração meu perfil.

Entendo muito bem que os editores precisam, de alguma forma, ganhar dinheiro e sobreviver em nossos tempos difíceis comprando outro avião ou villa, mas também precisam entender os usuários que se incomodam com a publicidade inacessível para eles de qualquer maneira. Também entendo perfeitamente que toda a publicidade não pode ser cortada; portanto, sou a favor da publicidade direcionada, cujo perfil é fácil de fornecer. E sem banners.

Também gostaria de um mecanismo de classificação do usuário para anúncios vazados. Por exemplo, abro um vídeo no Youtube, o canal do meu amado Creosan, e em algum momento o próprio Creosan começa a falar sobre alguns cassinos por lá. Eu ficaria feliz em destacar a área com publicidade e postar os dados nessa área como "publicidade", para que mais tarde outros usuários possam pular esse anúncio facilmente. Às vezes, a publicidade é encontrada no próprio texto dos artigos, e os artigos como um todo são anúncios disfarçados. É muito desagradável para mim ler esses artigos, portanto, eu os marcaria de bom grado como "publicidade".

Suporte integrado a proxy / VPN

Infelizmente, algumas pessoas estúpidas decidem por mim se eu posso usar este ou aquele serviço, e o fazem com base no país em que nasci / vivo. E não apenas sites (um olhar triste para o Google Play). Por exemplo, eu posso usar o Spotify apenas se moro nos EUA, mas posso usar o serviço Advcash se NÃO morar nos EUA. Obviamente, se você teve azar no nascimento, não é necessário vegetá-lo em um país atrasado; em teoria, você pode ir para o país certo, mas não sei viver em dois países ao mesmo tempo.

Solução: mecanismo de VPN embutido e deve ser totalmente configurado para cada site separadamente. Para alguém, serei apenas alemão, para alguém americano, e farei compras no país pelo qual são oferecidos preços mais baixos.

Por que não comprar uma VPN normal e usá-la, por que arrastar tudo para o navegador? Então, apenas o navegador pode separar um site do outro, separando cada guia. Se rotearmos todo o tráfego pela VPN do sistema, precisaremos alternar constantemente ou, às vezes, capturar desconexões e proibições, se esquecermos de fazer isso.

Plugins

Às vezes, o conteúdo cortado em blocos aparece. Por exemplo, pode ser mapas ou fotografias de satélite. Em princípio, ele pode ser escolhido no navegador hoje, mas o que vem a seguir? Observar peças individuais é inconveniente. Para colar? O que e como? Claro, eu posso escrever um arquivo de força bruta que compare as bordas dos ladrilhos e procure opções para colar sem interrupções, mas aqui você pode cometer um erro e, se o navegador salvar adicionalmente informações sobre onde e qual ladrilho era relativo a outros ladrilhos, a colagem será rápida e sem defeito! Você pode anexar uma exportação conveniente de blocos diretamente do cache ou da página atual!

E não quero inventar e inserir logins / senhas em cada site. Em vez disso, gostaria de especificar algumas Seed aleatórias, a partir das quais os logins e senhas de um site específico serão gerados. Por exemplo, eu especifico a linha “soMeRanDOooo0MStr11nng” e, quando vou para o example.com, essas duas linhas concatenam e criam um UID com base no qual você pode gerar qualquer coisa, incluindo logins / senhas (e melhor ainda, todas as informações pessoais restantes para que foi possível registrar com um clique e não pensar em outros nomes, exceto Sergey sem usar o fakenamegenerator). E a capacidade de atrapalhar essas senhas na bugmenot. A propósito, esse gerador já está no Safari!

Em outras palavras, o navegador deve fornecer um mecanismo de plug-in flexível. Além disso, os plugins devem estar dentro do navegador para que você possa conectar quase todas as partes do navegador, e não como injeções de JS após carregar páginas ou botões na barra de ferramentas. Claro, eu quero escrever plugins em C, compromissos na velocidade de processamento da página são simplesmente inaceitáveis.

Peças do navegador como serviços

Quase todo navegador tem um utilitário para baixar arquivos. É o caso de uma interface torta que baixa arquivos para um diretório incompreensível, não sabe como retomar e também diz que vírus foram detectados dentro do arquivo. Mas isso é, e mais importante, faz parte do navegador, o que significa que ele usa cookies e outros atributos da sessão. Isso significa que, ao fazer login em um site, não precisaremos mais escolher cookies para colocá-los no wget ou enrolar. O próprio navegador pode funcionar como um utilitário, suportando totalmente a sessão atual. E isso significa que podemos desenvolver inicialmente o subsistema de rede e uma onda improvisada com uma única base de código e baixa conectividade com o código principal do navegador, mas mais sobre isso mais tarde.

Quase todo navegador tem uma lista de arquivos primitiva que pode exibir o conteúdo dos diretórios de diretório local. Isso é torto, mas geralmente é muito melhor do que nada. Mas a antiga ópera conseguiu atrapalhar arquivos entre os usuários e até teve um aplicativo com uma geladeira na qual desenhar. Sim, os caras realmente fizeram o futuro. E eles o ultrapassaram um pouco.

O navegador pode ter um cliente de email que seria interessante de usar na linha de comando, com um histórico detalhado. Isso permitiria automatizar muitas tarefas, desde a coleta de spam até o envio de lembretes. Os lembretes podem ser obtidos no serviço RSS incorporado.

Navegador de peças

Escrever um navegador inteiro é uma tarefa bastante complicada. Além disso, muitas coisas, como baixar arquivos, um leitor de RSS ou um cliente de e-mail, nem vêm à mente quando ouvem a palavra "navegador". No mínimo, esses aplicativos podem ser escritos separadamente, podem estar na forma de aplicativos completos, podem estar na forma de ligações sobre os existentes, ou talvez até como soluções temporárias de algumas centenas de linhas em alguma linguagem de script.

A rede também pode ser movida para um daemon separado. Nas proximidades, você pode remover um resolvedor de DNS com uma lista negra interna de domínios e atualização automática de listas negras, um subsistema para armazenamento em cache de conteúdo e várias outras coisas. Até a renderização pode ser retirada em um processo separado, como ocorreu no Opera Mini (e o que pode ser feito usando fontes mescladas, pois esse código nem sequer entra no projeto diretamente, mas será um "plug-in" de terceiros, a pureza da licença também é preservada). github.com/browsh-org/browsh - aqui o mecanismo do furefox é renderizado em algum lugar no vpsk e o já renderizado é enviado a você na forma de pseudo-gráficos de texto e texto - parece muito legal, você pode até assistir ao vídeo

No início, tudo isso pode ser implementado como microsserviços independentes, com um desenvolvedor escrevendo em java, outro em python e o terceiro em Ruby, e eles não precisam brigar, escolhendo uma pilha de tecnologia. Afinal, todo mundo está familiarizado com a situação de que alguém não pode imaginar um navegador Java por causa dos freios, alguém tem medo do Sishku por causa do medo de vulnerabilidades e alguém quer experimentar a moda Go e agitar por isso? Aqui, todos poderão escolher uma pequena parte e responder estritamente por ela; será necessário apenas concordar com um protocolo de comunicação. E se algumas peças funcionam mal, no final elas podem simplesmente ser substituídas. Ou pegue e adapte as soluções existentes para uma integração mais estreita, como foi feito no navegador Arachne.

Até o renderizador pode ser executado em um processo separado e transmitir apenas informações para exibição. Inicialmente, você pode simplesmente pegar o código existente em w3m / links / netsurf, e aqueles que desejarem podem anexar modos selecionáveis ​​no Gecko / Servo / Blink.

Obviamente, é suposto escrever um grande número de plugins. Marcadores, incluindo aqueles que são sincronizados através das nuvens ou serviços de recomendação, guias de vários níveis com visualizações e preenchimento automático de formulários baseados em redes neurais, são tudo o que você deseja. Talvez alguém tenha à mão a fonte de downloads de arquivos com vários threads (ou alguém tenha visto algo assim no github), quem pode começar a portar esse código para uma nova plataforma agora?

E, é claro, aqui você pode seguir o antigo princípio: deixe que cada programa faça uma coisa, mas faça bem. O navegador é um conjunto muito complexo de programas que funcionam com a rede e, portanto, a complexidade de todo o sistema. Então, pode ser fácil dividir nosso navegador no número máximo de peças, garantindo a qualidade e a confiabilidade de cada uma delas?

Plugins como recursos garantidos

Alguns plug-ins podem ser padronizados na instalação. Por exemplo, plug-ins para fornecer guias, baixar arquivos, um plug-in para a barra de endereços com preenchimento automático, pompons e dragões e similares, que já estão em qualquer navegador. Mas proponho ir um pouco mais longe e incluir um pouco mais na entrega padrão. Obviamente, esse é um caminho escorregadio que pode nos levar ao Bloatware, mas, na minha opinião, você não deve ter medo de experimentar (é claro, não como a Mozilla faz isso, que inclui extensões ocultas de diferentes programas afiliados sem a possibilidade de desconexão).

Por exemplo, você se lembra no IE6 de um botão tão obscuro como Discutir? Apareceu após a instalação do MS-office, quase nunca funcionou, pois precisava do SharePoint do servidor para seu trabalho. Mas a coisa foi ótima: quando você clicou, uma barra de ferramentas foi aberta, através da qual você podia adicionar comentários à página, ainda havia uma sala de bate-papo em forma de árvore (embora eu já me lembre de tudo, mas não consegui pesquisar no Google) e funcionasse com qualquer página. Imagine: comentários em qualquer site, sem moderação dos autores, onde você pode expressar tudo o que pensa com ousadia e diretamente pessoalmente sobre qualquer site. Acredito que esse plug-in era simplesmente obrigatório no pacote do nosso navegador.

Outro exemplo: muitos sites abrem os mapas do Google Maps ou Yandex na página de instruções de direção, e isso é considerado uma boa prática, ninguém nem faz perguntas de privacidade e, além disso, não pergunta ao usuário se eu quero que uma organização de terceiros saiba quais objetos Você está interessado na cidade? Esses itens podem ser cortados e substituídos por placas OSM ou mesmo placas de repositório local. Ninguém se preocupa em baixar o dump completo do OSM e criar mapas locais, hoje um ou dois gigabytes no disco hoje significam quase nada.

Sumário

Aqui está a minha visão de um navegador perfeito. Obviamente, longe de tudo o que foi escrito: os tópicos de replicação, formulários de vários níveis e proteção de dados do usuário não são abordados, não há nada sobre o modelo de negócios ou maneiras de atrair patrocinadores para o projeto. E são necessários patrocinadores, porque poucas pessoas trarão algo útil para realizar esse volume de trabalho gratuitamente. Não há descrição de como se proteger dos interesses do patrocinador, porque na saída podemos obter outro Firefox com plug-ins de telemetria que informam sobre a desconexão da telemetria.

Mas, nesta fase, a coisa mais importante na criação do navegador perfeito são as pessoas. Escreva suas idéias, pensamentos e, se puder ajudar o projeto com código ou layouts, fique à vontade para oferecer sua ajuda. De particular interesse é a crítica às idéias e pensamentos acima. Talvez, se não eu pessoalmente, alguém que leu este texto será capaz de escrever um bom navegador. Comecei a escrever este artigo há um ano, como resposta a alguns outros tópicos, eu organizaria o crowdfunding, mas a agitação da vida era perturbadora, porque eu o publico como está, para que outras pessoas pensem sobre isso.

Este texto está disponível sob a licença de Domínio Público e você pode distribuí-lo livremente em qualquer lugar. Talvez desta forma nós (pessoas em geral) consigamos obter um navegador que seja pelo menos um pouco mais conveniente de usar.

Source: https://habr.com/ru/post/pt426295/


All Articles