
Recientemente, ha habido muchos artículos sobre las deficiencias del software moderno, mientras que nadie está tratando de ofrecer sus soluciones para cambiar la situación. Este artículo es la respuesta a algunos artículos sobre esto, así como también sueña con un navegador perfecto. ¿Cómo podríamos rediseñar el navegador, su interfaz de usuario, los métodos de interacción con los sitios, mejorar los protocolos y la experiencia del usuario en general? Si tiene alguna, incluso las ideas más atrevidas sobre esto, sugiero discutirlas y tal vez sentar las bases para crear el navegador perfecto. En última instancia, tarde o temprano esto tendrá que hacerse, ya que la situación en el mercado de los navegadores en este momento no es para nada alegre. Y no es un problema que otros navegadores sean muy complejos y difíciles de alcanzar: podemos seguir nuestro propio camino, implementar solo las partes necesarias de los estándares y, al mismo tiempo, podemos introducir nuestras propias extensiones no estándar. No es necesario correr detrás de otros, dejar que otros corran detrás de nosotros. Deje que nuestro navegador sea creado para personas, y no en nombre de los intereses comerciales de corporaciones de consorcios buenos y extraños, que no han sido de ninguna utilidad durante mucho tiempo.

¿Qué debería estar en un navegador ideal?
Buscar
Si crea un nuevo navegador, lo primero que debería ser es una búsqueda local de todo. Por pestañas abiertas, caché, archivos cargados y toneladas de meta información dentro. La búsqueda debe ser tanto por índice como por regular, y el usuario debe poder seleccionar todas las opciones posibles, incluidas las codificaciones de documentos (por ejemplo, una muy buena búsqueda en Far).
Una vez, en uno de los foros, encontré un concepto interesante del algoritmo. No hubo discusión, así que cerré rápidamente la pestaña, pero el concepto en sí se acomodó en mi cabeza. Después de pensarlo de fondo, decidí compartir mis ideas ... ¿Pero dónde? Mirando rápidamente los foros donde solía vivir, no encontré nada parecido. Los motores de búsqueda tampoco son nada, pero esto no es sorprendente: los foros no se indexan instantáneamente. Comencé a hurgar en el historial del navegador: no encontré nada, pero esto no es sorprendente, ya que es grande, es incómodo de usar, podría haber perdido algo. Redescubrí casi todas las páginas, no encontré nada parecido. Empecé a buscar mensajes en el correo, en mensajeros, incluso preguntando a la gente, sin resultado. Ya estaba empezando a pensar que estaba controlado por reptilianos, conceptos inspiradores, cómo decidí usar la última herramienta: buscar en los archivos de caché del navegador. Y casi al instante encontró el lugar que estaba buscando. Resultó que como nadie respondió el tema del foro, el autor pensó que había escrito estupidez, se sintió avergonzado y simplemente borró el hilo. Y estuve buscando este tema remoto durante mucho tiempo y no pude encontrarlo, terminando.
En otra ocasión necesitaba actualizar un archivo de video. El archivo se llamaba 1.mp4 (creo que muchos de estos archivos tienen mucho). Fue de algún valor para mí, pero desafortunadamente resultó estar roto. ¿Dónde lo descargué? Tuve que volver a buscar las palabras clave que estaban en el video.
Sesiones
Cuando intentas descubrir un nuevo tema, docenas de pestañas se abren solas. Enlace tras enlace y tenemos una lectura de varios días. Además, cada pestaña es algo importante que debe leerse. Que hacemos ¿Especialmente cuando todo esto se acumula más y más?
Puedes cerrar todo lo que ves y confiar en la historia, dicen en el futuro, si es necesario, se encontrará. O volcar todas las pestañas en los marcadores. O incluso guardar / imprimir páginas no es muy conveniente, pero la información exacta encontrada nunca se perderá (sin embargo, la información sobre cómo guardar información se escribirá más adelante).
¿O tal vez guardar toda la sesión como un proyecto? ¿Darles nombres significativos como "Estaba buscando un modelo de barco", "Aprender a programar" y activar / desactivar según sea necesario? Cada navegador ahora tiene un mecanismo de perfil o sesión, pero a menudo está oculto de alguna manera, lo que hace que sea difícil de encontrar e incluso más difícil de usar. Quizás el único navegador donde dicho mecanismo está bien implementado es el navegador Edge en sus últimas versiones. Con todas las deficiencias de este navegador, este mecanismo se hace lo más conveniente posible y le permite no acumular pestañas, pero es conveniente ordenarlas. Por supuesto, no hay límite para la perfección, pero tener al menos esa opción es imprescindible. Mejor aún, pueda guardar tales sesiones junto con el caché / contenido de las páginas. Simplemente no de la forma en que lo hacen los navegadores ahora, guardando el caché en alguna forma binaria, pero para abrir 100 pestañas sobre un nuevo tema, guárdelas en algún formato que otros dispositivos puedan leer (.html / .pdf) y cárguelas en su teléfono , donde es fácil de leer, quizás lejos de la civilización.
Privacidad
El usuario debe decidir qué información con el sitio desea compartir. No debería buscar diferentes conmutadores de User-Agent, dicha funcionalidad debería integrarse en el navegador. Por ejemplo, el motor de búsqueda Google.com funciona bien si se presenta como los enlaces, pero no aparece una búsqueda instantánea desagradable que come el texto de entrada.
Quiero poder:
* establecer el ancho y la altura de la pantalla (cualquiera, al menos 50000x50000 píxeles)
* profundidad de color, independientemente de la configuración actual
* agregue el sitio de confianza para que sus cookies no se agrien cuando haga clic en "borrar todo"
* reemplace las fuentes en la página, mientras proporciona al sitio la lista de fuentes que desea
* proporcionar un Agente de usuario arbitrario, tal vez incluso uno aleatorio, tomado de un gran archivo de opciones o vinculado a un sitio específico
* elija el idioma del contenido y vea qué se transmite al servidor, y no solo el "idioma preferido", que aún se desconoce qué se desarrollará
* número y secuencia de encabezados, incluida la emulación de errores conocidos de otros navegadores
Y, en general, todo lo que se puede tomar con las huellas digitales debe poder cambiar. Quiero tener esta oportunidad
Lo curioso es que los navegadores antiguos tienen un montón de configuraciones para esto. Por ejemplo, los navegadores como enlaces, w3m y netsurf no solo le permiten deshabilitar el Referente / Agente de usuario, sino que también proporcionan muchas opciones interesantes diferentes donde puede ajustar el comportamiento del navegador, cómo rellenará estos campos. Si bien solo las versiones futuras de Firefox aprenderán a hacer esto, y solo parcialmente, sin brindar una protección del usuario del 100%, sin ninguna opción, definiendo estrictamente el comportamiento solo bajo ciertas condiciones (sin embargo, hablaremos sobre la configuración y las condiciones del sitio).
Barcos voladores
Durante mucho tiempo, MSIE no apoyó la posición: fija, por lo que fue regañado. Y como muestra la práctica, es bueno que no lo haya apoyado. Es cierto que esto no detuvo a las personas y lo emularon a través de JS con menús de salto, que han sobrevivido hasta el día de hoy en millones de sitios.
Hoy en día, los elementos superpuestos se usan para todo lo útil: ventanas de inicio de sesión en pantalla completa que aparecen mientras se navega y no se pueden eliminar (facebook), asistentes emergentes que resultan ser bots de chat, mensajes en pantalla completa sobre promociones y regalos, cómo gané algo , a veces solo me muestran anuncios (sin anuncios, pero sin un botón de cierre), ventanas emergentes transparentes que me impiden hacer clic en la página (pornhub) y la apoteosis: me dicen que tengo que desactivar AdBlock, que no tengo.
¿Has intentado imprimir alguna página? Pero a menudo "imprimo" el PDF y quiero vencer a aquellos que hacen extensiones emergentes como "usamos cookies" o "aquí noticias de última hora" en algún lugar encima o debajo de la pantalla. Bueno, o simplemente un menú fijo en la parte superior y un simple pie de página en la parte inferior. No, bueno, en la pantalla todavía no se ve nada, puedes desplazarte por la página y leer de alguna manera lo que están bloqueando. ¿Sabes que esta basura está impresa en cada página? ¿E impreso en la parte superior del texto? ¿Y que no puedes raspar el papel, aunque es una cacería, porque esta basura bloquea parte del contenido que no se puede leer de ninguna manera? Hasta ahora, tengo que romper estilos o eliminar algunos menús separados a través del elemento inspector / ublock, solo después de eso puedo "imprimir" la página. Esto es algo molesto. Pero si hubiera elementos controlables simples, ¡esto ni siquiera sucedería!
Pero dentro del motor del navegador puede detectar cuándo un elemento se superpone a la información de texto y ... Bueno, por ejemplo, eliminarlo en algún lado. O incluso romper estilos, declarándolos peligrosos. Muchas opciones Puede presentar la página como capas y darle al usuario un par de botones para "cortar" las capas superiores o devolverlas, como se hizo en algunos juguetes o editores tridimensionales. ¡Quiero esta función por años!
Es divertido, pero una vez que IE se negó a mostrar la etiqueta de parpadeo, permitió que JS moviera la ventana del navegador y creara ventanas emergentes que no se cerraran. Hoy, incluso mostrar texto en la barra de estado ya es difícil, es más fácil emularlo. Ahora propongo hacer algo con bloques superpuestos de texto, es posible interrumpir de alguna manera esta función. Y debe romper cada vez más funciones para que no se puedan utilizar en detrimento de ellas. Sí, por el bien de esto, puede escribir su navegador, aunque sin observar los estándares, pero es conveniente para leer texto y, además, programar menos.
Instantánea de página
Sucede que cuando abres una página simple con texto, a veces te olvidas de ella y la dejas colgada en las pestañas, "para más tarde", "para no olvidar". Como regla, no hay nada especial allí. Por ejemplo, cuentan cómo cultivar fresas en el país y nada que presagie problemas.
Y después de llegar a la computadora después de algunas horas, observa que el CURSOR DEL RATÓN apenas se mueve, TODO en SWAP es IMPOSIBLE trabajar con la computadora, con horror, abre la lista de procesos y maldice (si puede esperar a que se dibuje el proceso). Y aquí la pestaña se cierra solo con este sitio inocente.
Para evitar esto, una vez escribí un complemento para Firefox que, 5 segundos después de cargar la página (evento de carga), reemplazó setInterval / setTimeout / requestAnimationFrame con llamadas vacías que no hicieron nada, pero desconectó las existentes. Básicamente, fui feliz. Es cierto que todo tipo de elementos interactivos, como el despliegue de spoilers, también dejaron de funcionar, porque no había más temporizadores, y la apertura del spoiler lanzó un temporizador para la animación. ¿Es este un gran precio? Tuve que abandonar mi complemento, ya que no podía devolver controladores para algún evento, pero si escribimos nuestro navegador, ¿por qué no?
Implementación alternativa: después de 10 segundos desde el evento de carga, detenemos todo el JS, descargamos el DOM y dejamos solo aquellas estructuras en memoria que son necesarias para renderizar rectángulos con texto, tablas e imágenes. Eso es todo, deja que la pestaña de fondo sea algo así como una imagen con texto, nada más. Otra alternativa: renderizamos todo el diseño en un proceso separado, y solo cargamos las coordenadas del texto y las imágenes después del renderizado, como lo fue en Opera Mini, por lo que nuestro navegador estará un poco más seguro.
Lo más interesante es que ya hay algo similar en la Opera moderna, pero se enciende solo cuando se cambia a la batería. Quiero tener siempre esta opción para los sitios, especialmente para los sitios que visito por primera vez. En general, en las entrañas de todos los navegadores modernos hay muchas funciones útiles, pero están codificadas y no pueden ser configuradas por el usuario, por lo que los navegadores prácticamente pierden un enorme potencial.
Caché de contenido localmente
Le cuento la idea por un millón de dólares: cargar la página en 0 ms. No, incluso si el sitio está completamente en nuestro caché, no se abrirá hasta que enviemos una solicitud, esperemos el tiempo de ida y vuelta, analice la respuesta y luego haga lo mismo con todos los scripts y estilos restantes. ¿Y qué le impide abrirlo INMEDIATAMENTE desde el caché y validar el contenido en segundo plano, enviando solicitudes a TODOS los recursos en segundo plano de inmediato, mientras usa doble búfer en segundo plano, para actualizar los datos en caso de cambios, simplemente redibujando imágenes y bloques de texto? ¿Diga lo que ya estaba en IE y se llamaba "Trabajar sin conexión"? Sí, IE todavía tiene muchas funciones agradables e interesantes, pero en primer lugar, esta función no siempre funcionó, y en segundo lugar, no podremos actualizar la página, y en mi caso la página se redibujará automáticamente a medida que se valida.
Desafortunadamente, en la web moderna, el almacenamiento en caché no solo funciona mal, sino que no funciona en absoluto. Pero, ¿qué impide que las páginas forzadas se guarden en el disco? Esto permitiría no solo abrir el sitio en caso de su muerte, guardar algún contenido útil, sino también monitorear, por ejemplo, la dinámica de los cambios en los precios de los bienes o atrapar a los interlocutores que hayan cambiado sus publicaciones. Por supuesto, puede guardar páginas en el disco manualmente ... Pero, por regla general, solo recuerda esto cuando necesita volver a alguna versión anterior, pero no hay ninguna y hay pocas esperanzas de un archivo web. A veces puede recoger contenido de los motores de búsqueda, pero no siempre funciona, especialmente si no lo hizo de inmediato. Esto sería especialmente útil en casos en los que el contenido se divide fácilmente en elementos administrados por separado, pero más sobre eso más adelante.
Por supuesto, el almacenamiento en caché debe ser en forma de diferencias incrementales (de lo contrario no habrá suficiente espacio para todo), con análisis intelectual de la información no mostrada (no es necesario almacenar el código cambiante de los contadores), con cambios resaltados, con la elección de versiones antiguas directamente desde la barra de direcciones. Puede almacenar páginas ya analizadas como un conjunto de rectángulos y sus coordenadas en la pantalla, de esta manera puede acelerar el procesamiento, y las imágenes se pueden reducir y almacenar como h265, que es mucho mejor que las imágenes jpeg: ahorramos espacio. Y si ya hemos gastado tanto esfuerzo en el caché forzado y su ennoblecimiento, ¿por qué no compartirlo con alguien más? La interfaz de usuario es lo principal. La función no solo debería ser, sino que debería ser conveniente de usar: abrir diferentes versiones de la página, eliminar o guardar versiones de páginas, anunciarlas como caché pública, hacer una selección de páginas y descargar versiones locales del sitio (las páginas que se visitaron), hacer algo como mht / pdf con enlaces de trabajo para que puedan abrirse en otros dispositivos, y no solo se instalaron en algún lugar de los repositorios internos del navegador, como sucede en algunos navegadores móviles.
Para acelerar la carga de la página y protegerse contra las inyecciones de código inesperadas, se pueden cargar varios scripts, como jquery y similares, almacenados en diferentes CDN, directamente desde el disco local, como lo hace la extensión Decentraleyes. La descarga de fuentes y paquetes de iconos será instantánea. Obtenga más información sobre lo que ya existe:
addons.mozilla.org/en-US/firefox/addon/decentraleyes . Por supuesto, sería bueno hacer inyecciones de su código, por analogía con browser.js (solo no con las manos de los autores) o Grease Monkey (solo sin troyanos), para que pueda cambiar / corregir el código de los sitios. No, no muletas en forma de complemento, sino soporte nativo, que no se ralentizará, como una vez estuvo en Opera. Pero, por desgracia, ahora simplemente no hay herramientas convenientes para parchear el código del sitio. Richard Stallman llama a estos sitios "tivoizatsii", pero esto se escribirá en la sección sobre firmas de código.
Agregamos aquí un hipotético sitemap.xml, que determina la afinidad de los artículos, páginas para el almacenamiento en caché proactivo, un enlace a un rastreador para el intercambio de contenido p2p ... Y obtenemos un sitio autorreplicante que se puede guardar y usar localmente, que resistirá cualquier carga y el contenido del cual no morirá nunca Sin embargo, hablaremos de esto, así como de los sitios distribuidos.
Firma de código
Muchos de nosotros no pensamos, pero diferentes personas pueden ejecutar código en el navegador, escrito bajo varias licencias, incluidas las no gratuitas. Y no el hecho de que el usuario esté de acuerdo con estas licencias. Es como tener relaciones sexuales sin consentimiento previo. En principio, en la mayoría de los casos, no pasará nada malo, pero puede haber matices. Richard Stallman escribió un excelente artículo "Javascript Trap", basado en la escritura de la extensión LibreJS:
en.wikipedia.org/wiki/GNU_LibreJS : ¡este es el punto de partida para interpretar Javascript en nuestro navegador!
Si la indicación de la licencia fuera parte del estándar, la vida sería un poco más fácil, pero no lo es. Si los autores del código lo firmaron con su clave pública, entonces al menos podría confiar en varios autores, pero tampoco hay eso. Todo lo que queda es hacer un hash de los scripts, incluidos los más pequeños cosidos en la página y pedirle al usuario que "permita esto". ejecutar cada uno de ellos, manteniendo una base de datos de scripts permitidos o prohibidos. Algo como antivirus. También busque "virus" mediante firmas, pero en lugar de un analizador heurístico, lo que indica una licencia y preguntas para el usuario. Basado en tales hashes, no solo puede protegerse del código malicioso, sino también construir un sistema de versiones.
¡Cree una infraestructura donde solo se ejecutará el código en el que confía! Después de todo, ¿estás cansado de luchar contra los scripts que dan vuelta al texto y te piden que deshabilites Adblock? Lo deshabilitaría, pero no tengo Adblock, ni la confianza de que mañana no me pedirán que haga una donación o me suscriba a alguna estafa.Si no está familiarizado con el notable trabajo de Richard Stallman, le recomiendo leer: www.gnu.org/philosophy/javascript-trap.ru.html (en ruso).Calificación del sitio web / anti-rating
Algunos navegadores, como Opera, por alguna razón intentaron arreglar cada sitio con sus manos, haciendo parches inyectando código personalizado. Y una vez que se cansaron de eso, todos sabemos el resultado. Aunque estaban justificadamente orgullosos de sus logros, que se confirmaron en varios puzomerki, realizando pruebas para cumplir con el estándar.Pero uno podría ir hacia otro lado: en lugar de parchear algo, escribirle a alguien un correo electrónico, usar conexiones personales y todo eso, uno podría mostrar el texto del parche directamente en la parte superior de la página con las palabras "el autor de este sitio no cumple con el estándar, lo siguiente el código podría arreglar este sitio ". ¿Un reto solo para IE? Sin emulación, en lugar de una gran ventana emergente roja sobre la idoneidad del autor (por supuesto, sin bloquear el contenido). Muchos usuarios, por supuesto, ignorarán esto, pero alguien puede preguntarles a los autores del sitio: "¿Por qué hay tanto rojo aquí?" Y los propietarios del sitio contarán cómo ahorraron dinero en los programadores. O dígale al cliente que sería necesario poner "Google Khroma normal", por lo que es más probable que el cliente los abandone. Si dicho sitio muestra algo como "location.href = 'http://google.com/',ven a nosotros de nuevo ”- esto es aún mejor, no te metas con esas personas.Puede ir más allá: ¿la imagen de la página se muestra como 100x100, pero en realidad 500x500? Ventana emergente roja con un mensaje de que el autor no puede cambiar el tamaño de las imágenes. ¿Una imagen con gráficos fotorrealistas reducida en PNG? Ventana emergente roja que el autor no entiende los formatos de archivo. ¿La página no tiene un enlace a la página principal? Una ventana emergente roja con un mensaje de que el autor del sitio no realizó la navegación normal.Por supuesto, las ventanas emergentes rojas no siempre se pueden mostrar. Por ejemplo, si una imagen PNG puede optimizarse mejor mediante optipng, entonces puede mostrar solo una pequeña advertencia roja, como deducen sus bloqueadores de anuncios. Varios optimizadores de CDN ya hacen algo similar, que comprimen las imágenes y minimizan el código, e incluso intentan filtrar las inyecciones SQL en la entrada. Pero toda esta alegría será solo si el autor pagó dinero y conectó los servicios correspondientes, ¿y qué debe hacer un usuario simple? Y un usuario simple puede simplemente negarse a usar un sitio de baja calidad, y su navegador debería ayudarlo en esto.Ya, el informe del bloqueador de anuncios, que muestra números digitales, puede considerarse una especie de sitio anti calificación. Cuanto más anti-rating, peor el sitio y el autor tendrían que hacer algo al respecto. Para algunos valores, simplemente puede mostrar advertencias de que visitar este sitio puede ser indeseable. Además, creo que el navegador debería compartir sus hallazgos con la comunidad. Puede crear una calificación global para cada sitio, aferrándose a los codiciados dígitos de cada enlace, para no ir accidentalmente a algún lugar donde el usuario esté esperando una "mala experiencia". Por supuesto, todo no puede ser automatizado. Por lo tanto, puede crear varias clasificaciones, algunas de las cuales serán dirigidas por personas vivas, verificando manualmente el código, verificando sus licencias y la calidad del código, la calidad del sitio en su conjunto. Por supuesto, el mecanismo debe estar descentralizado y no controlado por individuos específicos.Deje que el usuario decida qué suscripción se suscribirá.Configuraciones individuales del sitio
Cada sitio o grupo de sitios debe tener su propia configuración individual, similar a cómo se podría configurar en la antigua Opera (hasta 12 versiones inclusive). Solo este mecanismo puede mejorarse.Primero, identifique los sitios no solo por dominio o subdominio, sino también por expresión regular en el dominio. O por la dirección IP recibida de este dominio. Por ejemplo, no quiero ejecutar scripts en sitios / recursos de Yandex (vea las razones a continuación), podría encontrar listas de bloques de direcciones IP propiedad de Yandex e interrumpir suavemente la ejecución de código no confiable. Es simple y facil. Pero en este momento tengo que limitarme a prohibir dominios individuales (¡no los conozco todos!), Ingresar todos los rangos de direcciones en un firewall, lo cual es extremadamente inconveniente, o elevar mi servidor DNS con las direcciones para la máscara * yandex *, que yo haciendo en este momento.En segundo lugar, para no producir una entidad, puede crear perfiles básicos, como "sitio de confianza", "sitio normal", "sitio incorrecto", "para sitios de Vasyan", "para Aliexpress" y asignar su configuración a este o aquel sitio . Y dependiendo del perfil, se enviará su User-Agent, la secuencia y el contenido de los encabezados, soporte o carga no compatible de estilos, fuentes, scripts y todo lo demás que se puede configurar. Incluso para determinar si es posible interceptar el clic derecho del mouse, con qué precisión iniciar los temporizadores o si reproducir animaciones y sonidos (para algún propósito desconocido, una solicitud de MIDI aparece en AliExpress). También puede proporcionar configuraciones que cambien aleatoriamente, como valores aleatorios de User-Agent de una lista grande o un proxy arbitrario para un sitio en particular (más sobre esto más adelante).Copiar y pegar
Parece que ¿cuál podría ser la función más básica en los programas que muestran texto? ¡Trabaja con selección de texto / copia / pegado, por supuesto!Por desgracia, incluso con una simple selección, los problemas ya comienzan. ¿Has intentado resaltar el enlace? ¿En un navegador, en correo, en mensajería instantánea? Y como es En algún lugar, el enlace comienza a arrastrarse, en algún lugar donde haga clic en él, incluso si no soltó el botón, y en algún lugar debe apuntar al espacio milimétrico para poder seleccionarlo. Seleccionar imágenes es una lotería separada, a veces esto no se puede hacer en absoluto, excepto presionando la combinación secreta de hackers CTRL + A. Un paso a la derecha e izquierda, y hemos seleccionado toda la página, y no el párrafo al que apuntamos.O el texto puede no destacarse en absoluto, creando la ilusión de un botón roto del mouse. Incluso si apuntamos y pudimos seleccionar el texto, no es un hecho que cuando hacemos clic con el botón derecho no recibamos una advertencia como "El texto de esta página está bien protegido". O nada aparecerá en absoluto, ya que los navegadores han aprendido a interrumpir dichos scripts automáticamente. O la solicitud de enviar un informe sobre un error tipográfico encontrado en la página no saldrá. Mientras leo un texto, a menudo lo selecciono con un mouse para facilitar la percepción, y esa locura me enfurece increíblemente.El inserto es aún peor. ¿Se guardará o no el formato? A veces depende de si usas una tecla de acceso rápido o una "rueda" - comportamiento diferente, para una acción aparentemente única. ¿Habrá huecos en lo que se inserta en aplicaciones de terceros si no hubiera espacios entre los bloques? Y a veces no podrá deshacerse del formato: pegue el texto copiado dentro de la página, por ejemplo, dentro de la letra escrita, y el párrafo escrito de repente se pone en negrita y / o se convierte en una cita.Último chirrido de la moda: reemplazar el contenido del portapapeles. Copiaste el texto sobre los gatos, lo pegaste a regañadientes en el chat y ... Rastrillaron la prohibición, ya que junto con el texto deseado, se insertó un anuncio del recurso, de donde era la copia. Por supuesto, debe ser cuidadoso y cuidadoso, ver qué y dónde está enviando ... Pero, por otro lado, ¿por qué mis herramientas para ver el texto se permiten comportarse de esta manera?Almacenamiento distribuido
El almacenamiento en caché local del contenido del que hablamos anteriormente es solo una parte de las necesidades de un usuario web moderno. La segunda parte importante del problema es el almacenamiento en caché de contenido en el servidor, en el camino hacia el cliente en diferentes CDN y similares. De hecho, los sitios pequeños pueden enfrentar el hecho de que se necesita demasiado tráfico para entregar archivos esencialmente estáticos. Una y otra vez. Y prácticamente no tienen más remedio que alimentar a CloudFlare para que proporcione su caché distribuida.CloudFlare tiene una interesante tecnología RailGun: www.cloudflare.com/website-optimization/railgun- Esta es una muleta genial que le permite almacenar en caché no almacenable en caché, con la ayuda de la cual no solo almacenan en caché versiones antiguas de páginas, sino que también hacen diferencias con ellas y envían la diferencia ya reconstruida de sus servidores. Por lo tanto, resulta que puede actualizar la página con solo 1 paquete de datos de 400 bytes (el número se toma de la descripción), y el servidor original puede alojar incluso en el teléfono (de hecho, esto no es así). Pero para tal cosa tiene que pagar, desde $ 200 por mes, que es un dinero muy importante para sitios pequeños.Ah, y si fuera posible dividir el contenido en pequeños elementos manejables ... Pero sí, más sobre eso más adelante. Si bien hay muletas como diff y cloudflare con su Railgun.Pero el sistema de archivos dividido IPFS ya existe. Y existe ZeroNet, que ahora mismo, listo para usar, le permite alojar sitios web de manera distribuida. ¡Puede intentar descargar el cliente y buscar en esta red inusual, que no necesita servidores!Sin embargo, no hay nada nuevo aquí. Hace unos 15 años, los sitios web populares tenían su propio cliente de escritorio (y a veces más de uno) y un poco de distribución de torrents en el kit. Y hoy existe de una forma u otra, por ejemplo, la aplicación WikiTaxi, que le permite mantener Wikipedia en su bolsillo. Y también recuerdo algo como AportExpress, dentro del cual había un motor de plantillas completo y plantillas de Aport nativas del servidor, que recopilaba páginas en el cliente.Redes mejoradas
¿Te imaginas que a veces las personas acceden a la red a través de diferentes módems GSM, donde la baja velocidad se ve afectada por malas condiciones de recepción de señal / malas condiciones de contrato? Y hay sitios como imgur.com/a/XJmb7 donde hay cosas muy hermosas, pero el peso de la página en sí, incluidos todos los gráficos, supera las decenas de megabytes. El único problema es que esas páginas no se pueden ver con esa conexión.Hoy, el navegador está tratando de cargar todas las imágenes al mismo tiempo, ralentizando la carga de cada una de ellas (para esto todavía hacen un montón de subdominios para evitar los límites en el número de conexiones). Después de un tiempo, se produce un tiempo de espera y el servidor simplemente cierra la conexión, dejándonos con imágenes rotas, que son buenas, si es que están abiertas. Si presiona F5, por un momento habrá un dibujo (cancelando la descarga y mostrando lo que ya se ha cargado), y luego la descarga se realizará desde el principio, sin reanudar imágenes individuales. ¿Y a menudo notó que el navegador "descarga" la página o el archivo primero a una velocidad de 50 kb / s, luego a 20 kb / sy luego a 3 kb / s? Esto significa que, por algún motivo, la velocidad de descarga real fue igual a 0 bytes / seg, y desconectarse y comenzar de nuevo está lleno de grandes dificultades,incluso si técnicamente es posible descargar el archivo.¡Pero el servidor web puede generar archivos torrent para estadísticas y distribuirlos en modo automático, lo que permitirá descargar archivos y eliminar la carga del canal de red! En esencia, un archivo torrent es solo una lista de sumas de verificación que le permiten descargar un archivo desde una ubicación arbitraria y verificar la exactitud de lo descargado. Por lo tanto, incluso las imágenes incompletas se pueden desinflar fácilmente, incluso con el quinto intento, para resolver con precisión el problema del control de versiones y la validación de caché.Y dado que le damos al cliente metadatos sobre los archivos, podemos diseñar toda la página como "una gran distribución" en forma de un paquete de datos, dentro del cual se encuentra información sobre la página, así como archivos de imagen, estilos, páginas vinculadas y otros referencias (incluidas otras "distribuciones"), una especie de pequeño mapa del sitio binario. Esto le permitirá almacenar en caché / pre-cachear mejor los sitios, cargar todos los recursos más rápido, sin esperar a que la página o los scripts se carguen por completo, e incluso optimizar los sitios para personas con discapacidades al ofrecerles navegación de página avanzada. O no descargue ningún elemento a la vez, por ejemplo, iconos de Apple en la media pantalla o muchos videos.Desafortunadamente, los desarrolladores modernos están tratando de lidiar con estos problemas a su manera, sin proporcionar configuraciones e implementar todo esto con sus propias manos, es decir. "Cómo va". Por ejemplo, subir imágenes / videos a través de un montón de JS, muchos dominios y procesamiento de desplazamiento de página, por lo que ya no es posible desplazar rápidamente la página a la "décima página", lo que me enfurece mucho. Afortunadamente, algunos proveedores importantes como Xiaomi comenzaron a luchar contra esto, preguntándose cada vez: "¿Quieres reproducir el video? ¡Se puede cobrar una tarifa adicional por esto! ”, Pero hasta ahora es imposible establecer una prohibición automática de tales desgracias, y todavía hay muchas maneras de evitar al desarrollador.Si ya hemos tocado sitios interminables con desplazamiento sin fin, nos gustaría señalar: no hay nada que impida al usuario mostrar el esqueleto vacío de todo el feed gigante para que pueda navegar fácilmente y cargar el contenido dinámicamente. Pero nadie lo hace.Descargando sitios
Digamos que encontré un sitio con manuales de cultivo de fresas. Admiré, me entusiasmé con la idea, fui a la cabaña y ... Y al encontrarme con problemas, me di cuenta de que tenía que convertir cada página a PDF, y solo entonces ir a la cabaña. ¿Por qué en pdf? Sí, porque las páginas modernas ni siquiera quieren guardarse correctamente por cierto, y lo que queda por mostrar cuando se abre el HTML local y dónde se bloquea Cookie solo se puede adivinar.
Pero en los viejos tiempos, podía tomar Teleport Pro y bombear todo el sitio con fresas, verterlo en mi teléfono e ir tranquilamente a la cabaña. Se bombearán todas las imágenes, se vincularán todos los enlaces, casi todo funcionará. Incluso había sitios con sitios cargados, algo indispensable para aprender en esos años, ¡así como motores de búsqueda en JS que funcionaban directamente en el navegador!
Pero, ¿qué pasará hoy si trato de hacerlo? Estoy esperando el descubrimiento de que en los sitios web modernos las páginas son dinámicas, cada página tiene mil URL, y descargo fácilmente tres páginas 10,000 veces, las enlazo cuidadosamente, y cuando navego a la página deseada, ni siquiera la obtendré si se descarga (por la ruta de 50 enlaces, que tendré que seguir exactamente igual que la mecedora).
¿Y si realmente quieres? En este caso, tomamos y escribimos un analizador de sitio hoy, seleccionamos el contenido (por clientes habituales o xpath), de alguna manera lo volvemos a vincular usando scripts caseros, adjuntamos un índice de mierda y palos, tal vez incluso un simple motor de búsqueda. Todo esto lleva desde 1 día hasta que te aburres. Simplemente puede guardar el texto en Word y jurar por el hecho de que todo está insertado en rojo Impact y el marcado va hasta tal punto que es imposible mirarlo. Puede encender la grabadora de video y desplazarse por las páginas, una opción menos costosa en el tiempo, aunque dicho registro pesará mucho, pero en nuestro tiempo es de poca preocupación.
En este punto, tendría que escribir que en un navegador ideal necesito la función de bombear sitios, para que luego pueda transferir fácilmente contenido a un teléfono o cualquier otro dispositivo * independiente *. Pero teniendo en cuenta lo anterior, por desgracia, esto es imposible. Pero si nuestro contenido se dividiera en pequeños elementos manejables ... Pero, por desgracia. Por lo tanto, un navegador moderno, además de todo lo anterior, debería poder analizar no solo estos mismos elementos, sino también almacenarlos en una base de datos local, versión y ser una especie de pequeño CMS.
Y no piense que los sitios modernos, en principio, no se pueden desinflar. Por el contrario, la estática vuelve a estar de moda, incluso hay proyectos interesantes y populares como
github.com/jekyll/jekyll para generar estadísticas. Entonces, ¿por qué no entregar la "fuente" del sitio?
Descargo de responsabilidad: Teleport Pro se usa aquí solo como el software más conocido para sitios de bombeo, nunca es una publicidad o nostalgia, personalmente no me gustó debido a un montón de archivos temporales y la incapacidad de analizar correctamente JavaScript. Mi elección fueron otros rockeros, no tan conocidos, como webzip, que aunque requerían muchos recursos, insertaban anuncios en las páginas, pero bombeaban el contenido correcta y completamente.
Contenido multimedia
Al igual que los pequeños elementos administrados que se convierten en un monolito incontrolable, los autores del sitio crean herramientas primitivas para ver contenido multimedia. En pocas palabras, cada primer sitio intenta mostrarme un video a través de su reproductor web único. Único allí, por supuesto, son el logotipo y las fallas técnicas.
No, una vez también me jacté de que podía escribir un reproductor web genial en un instante, ¡y lo haría en solo 20 líneas! ¡Soy genial, puedo hacer cualquier cosa! Con la edad, comencé a hacer preguntas:
1. ¿Cómo torcer el brillo / contraste en esto? ¿Y la normalización dinámica?
2. ¿Cómo cambiar a pantalla completa? ¿Y si no hay botón, porque olvidaron dibujarlo?
3. ¿Cómo acelerar una conferencia aburrida en 3 horas?
4. ¿Cómo torcer un ecualizador? Los profesores apenas son audibles, incluso si desenroscas los altavoces
5. ¿Cómo cortaría esa pieza y se la enviaría a un amigo?
6. ¿Cómo volvería rápidamente, durante un par de segundos, sin apuntar con el mouse a una pequeña tira?
7. ¿Cómo hacer que entregue más de 15 fps?
Algunos proveedores ya están tratando de resolver este problema. El problema está en la forma de productos primitivos caseros con características básicas. Por ejemplo, en Opera puedes "pelar" el reproductor de la página y administrarlo por separado. Existe youtube-dl, que le permite no solo descargar videos de un conjunto de servicios, sino también obtener un enlace para que pueda colocarlo en un reproductor normal, al menos en VLC. También hay StreamLink y MPV, pruébalo, seguro que te gustará más que los jugadores normales.
Pero podemos ir más allá aplicando todos los principios anteriores a multimedia. Si algo quiere perder, le preguntamos al usuario, luego lo descargamos, lo almacenamos en caché localmente, lo decodificamos y lo mostramos, como en cualquier otro navegador. Pero como entendemos que el navegador no es una aplicación multimedia y no puede satisfacer todas las solicitudes, podemos mostrar un botón cercano que lanzará un reproductor normal con el contenido que se muestra. Confiemos en los profesionales y fanáticos que han pasado muchas horas de sus vidas en esto. Las personas que viven música o video, y no quienes se ven obligados a adjuntar un reproductor al sitio por 20 dólares por hora.
Para que la conexión a la fuente de video no se interrumpa y el video no se descargue nuevamente, podemos abrir un servidor proxy local, como lo hacen los clientes torrent, con el reempaquetado de la transmisión de video sobre la marcha, que usamos para distribuir el video a una aplicación externa, y cuando llega la solicitud - parte del caché, y parte se alimentará en tiempo real, de acuerdo con las solicitudes de la aplicación y las capacidades del sitio. Del mismo modo, cualquier video / audio se puede guardar fácilmente como un archivo, incluso si originalmente era una transmisión en vivo o scripts de origen de medios generados dinámicamente y los archivos como tales ni siquiera existían. Y no necesita buscar enlaces directos en algún lugar de las páginas, luchar contra redireccionamientos o incluir artillería pesada en forma de grabación de video desde la pantalla: el navegador debe ser para el usuario, y el usuario tendrá éxito, nadie lo molestará. Lo más difícil aquí es, tal vez, una inyección en el proceso Flash. Pero su ciclo de vida termina, porque con demasiada frecuencia no debe actualizarse.
Filtrar contenido inapropiado
Si las palabras sobre el filtrado de contenido no deseado generalmente le vienen a la mente solo pornografía o publicidad intrusiva, pero se ha enfrentado a un problema en casi cualquier sitio cuando sería mejor no ver este o aquel contenido. Recuerde cómo se arrastró a través de diferentes sitios, obteniendo kilómetros de resultados de búsqueda con resultados similares. ¿O no del mismo tipo, pero trataste de encontrar algo diferente entre el conjunto de datos?
Por ejemplo, en un sitio con trabajo / freelance, a menudo puede ver que alguien necesita escribir un ensayo, pero usted no lo hace, así como no escribe en JS o PHP, pero a menudo saca y arroja todos esos proyectos de los resultados de búsqueda es simplemente imposible, además de depender de categorías, normalmente nadie las indica. ¿O está viendo una fuente de noticias y, después del accidente de otro avión, no sabe a dónde ir desde las noticias sobre el avión, especialmente si había familiares allí y le duele? Algunas personas obtuvieron algunas expresiones de moda y famosas, o incluso solo tendencias, como hilanderos o Pokémon, como resultado de lo cual incluso los complementos especiales del navegador parecían simplemente no ver esto. ¿Y quién no querría agregar algunos "amigos" a la lista negra para que nunca más vuelvan a ver sus publicaciones? Y todavía no veo las noticias sobre el rinoceronte que vomita con su publicidad descarada, cubierta por pruebas de programas de código abierto y ayuda gratuita para la comunidad ...
Lo curioso es que casi cualquier cliente de correo electrónico tiene filtros ricos para ordenar / eliminar automáticamente el correo basura, pero casi ningún sitio web tiene esa funcionalidad. Si nuestro contenido se cortara en pequeños elementos manejables, entonces podríamos filtrar / resaltar para no perder nuestro tiempo en algo que claramente no nos interesa. Y no tendría que escribir analizadores para algunos sitios que eliminaron el 90% del contenido y me proporcionaron una compresión en la forma del 10% restante en el formato que necesitaba. Y no 10 elementos por página. Al menos
1000 piezas . Sería posible usar lectores RSS, pero RSS / Atom está lejos de todas partes, especialmente no es suficiente en los resultados de búsqueda.
Pequeños artículos manejables
Entonces, ¿cuáles son estos elementos pequeños y manejables del sitio mencionados anteriormente? Para que sea más fácil de entender, imaginemos un archivo json estático con alguna información. O XML, o la base de datos SQLite, o un archivo XLS, o un motor de texto CSV, o algo que aún no ha nacido, pero que es necesariamente binario, comprimido y nanotecnológico ... Y dentro hay pequeñas piezas de información. Pequeños porque son unidades lógicas indivisibles. Puede ser un enlace en el panel de navegación, un fragmento de la descripción del producto, el producto en sí con todas las propiedades, un comentario del usuario o incluso un artículo completo. También pueden ser algunos widgets del sitio separados: campo de búsqueda, cesta de pedidos, campo de inicio de sesión / razlogin.
Gestionado porque, a diferencia de un monolito con ceguera sólida, podemos gestionar dichos datos: identificar el correcto, ordenarlo, generarlo en orden directo e inverso, filtrarlo o decorarlo con nuestros datos, creando meshas que hicieron mucho ruido a su debido tiempo. Casi todos los sitios tienen una base de datos que administra SQL. Detrás de SQL está la teoría relacional, el álgebra relacional y muchos, muchos métodos de gestión de la información. Y un poco más abajo, mostraré cómo se podría gestionar la información y qué pocos autores de sitios nos dan, si es que lo hacen.
Por ejemplo, estoy tratando de encontrar un nuevo trabajo genial en el campo de demoscene. Voy a
pouet.net , pincho Prods, y luego ... Por un lado, solo quiero un trabajo genial, así que clasifico el trabajo por el número de lois. En primer lugar, veo mi fr-041 favorito: escombros, así como otras obras que he visto más de una vez. ¡Pero quiero algo fresco! Lo entiendo significa que en la fecha de lanzamiento, aquí solo está fresco. ¿Pero cuál es el mejor? ¿Cómo combinaría 2 clasificaciones? ¿O al menos hacer una selección por el período de tiempo del formulario "para los últimos seis meses" y solo luego ordenarlo? Por desgracia, no me dieron las herramientas para hacer esto. Pero cada uno de los trabajos podría representarse en nuestro archivo JSON como un elemento de la matriz de trabajos, según el esquema de datos, nuestro navegador podría dibujar controles que sean independientes de los autores del sitio, donde haríamos selecciones para nuestro placer.
Otro ejemplo: todos sabemos que la búsqueda es mejor que Google simplemente no existe. Pero a veces se considera tan inteligente que arroja frases enteras de la consulta de búsqueda, las traduce a diferentes idiomas y muestra lo que considera más útil. No necesito eso. ¿Dónde está la casilla de verificación "deja de ser inteligente, yo estoy a cargo aquí"? Anteriormente, consistía en la disposición correcta de citas y ventajas, y ahora se encuentra en
bing.com : una búsqueda más primitiva se activa de inmediato, pero busca exactamente lo que necesito y no se vuelve inteligente, no ignora mis palabras clave, no ignora las condiciones de la solicitud. Si encuentra algo, pero si no lo hace, lo dirá honestamente, sin tratar de encontrar algo de sí mismo. En ese caso, si recibiéramos pequeños elementos manejables, podríamos fácilmente combinar los resultados de búsqueda de ambos motores de búsqueda en una sola fuente de búsqueda, para esto solo necesitaríamos conectar 2 del mismo tipo de matriz.
Muy a menudo, los resultados de búsqueda en sitios individuales están llenos de spam o anuncios similares, o simplemente descripciones torcidas de algo. Por ejemplo, una blusa puede tener 20 opciones de color: tendré que desplazarme por todo esto con mis ojos. Y en el mejor de los casos, solo puedo eliminar del problema algunas categorías de productos o mostrar anuncios de alguien, pero esto es extremadamente inconveniente y, a menudo, dicha funcionalidad simplemente no se proporciona. Si tenemos pequeños elementos manejables, puedo filtrar al vendedor negligente o incluso seleccionar inmediatamente la ropa del color deseado.
Volver a ordenar de nuevo. Al igual que en la búsqueda de hermosas escenas, cuando se buscan productos en tiendas en línea, a menudo son interesantes varios parámetros, pero puede ordenar los resultados de la selección solo por uno. Si es posible. Esto afecta incluso a los pisos comerciales más grandes. Si devolvieran datos sin procesar, entonces sería muy fácil de manipular. En la práctica, debe abrir 50 páginas y comparar manualmente las descripciones de los productos, lanzar monedas y esperar que la compra sea exitosa. No hay esquemas fraudulentos cuando un peine por $ 1 se agrega al lote como accesorio, pero de hecho el costo mínimo es de $ 10. Hay más métodos interesantes. Cuando compré mi primera tableta, realicé descripciones de 15,000 productos y paquetes de ellos con clientes habituales en busca de las palabras clave que necesitaba, fue muy lento, pero encontré mi amor (era U9GT2).
Pero volvamos a nuestras fresas. O más bien, al sitio con manuales sobre el cultivo de fresas.
Imagine que la instrucción para cultivar fresas es un recurso (todavía en forma de un archivo json, por simplicidad), que se puede solicitar por separado, dentro del cual hay un marcado semántico (nos dirá a qué páginas se refiere y el tipo de enlaces). Sin navegación, los mejores consejos o comentarios de otros usuarios, solo contenido puro. Bueno, por encima, comentarios y sugerencias en algún lugar cercano, por supuesto, también puede haber, pero lo principal es que esto no tiene la forma de un monolito, puede identificar con precisión los tipos de datos requeridos. Por supuesto, se agregarán anuncios y scripts aquí, pero más sobre eso más adelante. Por ahora, creemos que tenemos contenido puro, directamente desde la base de datos (o incluso desde el editor de contenido). Esto es fácil de desinflar, plegar, indexar, sin mencionar la facilidad de almacenamiento en caché y entrega de contenido. Dichos elementos se pueden usar para el almacenamiento previo en caché tanto en CDN como en el navegador, creando paquetes masivos con contenido para una compresión y carga eficientes (para no tirar de cada botón por separado por 50 bytes), para versionar y archivar. Dichos datos pueden retorcerse y girarse en un navegador durante mucho tiempo sin ninguna carga en el servidor, reproducirse durante mucho tiempo con clases y diferentes selecciones. Lo curioso es que esta es exactamente la forma en que se almacena en las bases de datos dentro del CMS de gestión. Pero todo esto se alimenta a través de un "monolitizador", que imprime los datos en HTML monolítico, con lo cual es muy difícil trabajar.
Puede realizar muchas funciones interesantes con estos datos a mano. Por ejemplo, puede analizar publicaciones en foros, almacenarlas en caché y luego ver publicaciones eliminadas.
¿Dónde están esos elementos pequeños? ¿Qué hay ya allí?
Es difícil de creer, pero los intentos de separar el contenido de su presentación han existido durante bastante tiempo. La primera señal fue RSS, que hace un excelente trabajo al entregar fragmentos. Yandex.market requiere la descarga de tiendas en un formato XML especial que contiene precios, imágenes, información sobre el fabricante e incluso la entrega. Otros sitios tienen sus propios formatos de carga, por ejemplo, Google Merchant utiliza RSS2.0 ligeramente modificado, pero en general estos formatos pueden leerse y representarse hoy.
Si profundizas en los sueños, es decir, todo tipo de opengrades y microformatos, y mucho se ha agregado a HTML5, pero lamentablemente, confiar en esto es difícil hoy en día. Por otro lado, muchos sitios ya contienen marcado semántico, por lo que negarse a leerlo es estúpido.
Uno podría intercambiar XML o JSON puro con un montón de campos con nombre y semi-estandarizados. Incluso puede intercambiar las bases de datos en formato SQLite o generar pequeñas selecciones en él. Lo principal es que debe haber datos limpios, sin ningún código (más sobre eso más adelante).
¿Dónde conseguir la felicidad?
Al principio, hasta que los desarrolladores entiendan las ventajas de la nueva forma de interacción, nosotros mismos necesitaremos obtener nuestra propia felicidad. En pocas palabras, sugiero analizar los sitios y extraer de ellos aquellas entidades que necesitamos. Puede hacer esto con xpath, selectores CSS modernos o buenas expresiones regulares. Sí, para cada sitio en Internet deberá escribir su propio analizador. A primera vista, este es un trabajo titánico con un resultado inalcanzable, pero ¿es así?
Hasta la fecha, hay varios proyectos que se especializan en analizar sitios. Algunos, como Octoparse, casi no requieren conocimiento, los bloques necesarios se seleccionan con el mouse. Además del plan para "rastrear" el sitio también se llena con el mouse. Esto significa que el umbral de entrada para la "programación" será extremadamente bajo, incluso una ama de casa puede hacer su propio analizador si lo desea. Si el analizador es de baja calidad o deja de funcionar, el navegador simplemente mostrará la página como está, hasta que otra persona escriba un nuevo analizador.
También hay proyectos más cercanos que están trabajando hoy. Por ejemplo, esta es la función Vista instantánea en Telegram. La gente ya ha escrito muchos analizadores que omiten los sitios famosos y solo se analiza el contenido limpio. Y cuando alguien publica un enlace a dicho sitio en Telegram, aparece el botón atesorado Vista instantánea. Si lo presiona, solo llegará contenido puro, sin anuncios y otra basura. Solo se necesitarán unos pocos kilobytes de tráfico y memoria para descargar, en lugar de megabytes de tráfico y gigabytes de memoria, como sería el caso con el navegador.
La descarga de una cantidad tan pequeña de datos ocurre instantáneamente, de ahí el nombre de la función: Vista instantánea. Si un analizador se descompone, es decir, un rastreador de errores y una comunidad lista para escribir un nuevo analizador, que será manejado por un editor conveniente. Entonces, si alguien no puede creer en la posibilidad de tal idea, hasta que él mismo vea con sus propios ojos, bienvenido.Es cierto que nuestra tarea será un poco más complicada, ya que además de mostrar el texto de los artículos, también debemos mostrar los feeds con artículos, navegar por las secciones del sitio (artículos, un foro y una tienda; todo esto no debe ser molestado en un solo feed). Es necesario no solo extraer lo que se necesita de la página, sino también decidir qué tablas organizar. Por ejemplo, me gusta mucho leer comentarios, y si solo se saca la noticia principal o el artículo, el valor del recurso será menor para mí. Por ejemplo, solía ver Youtube a través de SkyTube y encontrar muchos comentarios nuevos e interesantes, pero al cambiar a NewPipe me quedé sin ellos. El mismo conjunto de analizadores que youtube-dl sufre de esto. Y aquí está cómo clasificar el contenido resultante en estantes: esta es una gran pregunta, no todas las amas de casa podrán diseñar la estructura de la base de datos. La pregunta más grande escómo navegar por dicho contenido. ¿Cuál es el principal y qué es el subsidiario? De alguna manera, hace muchos años, ya escribí un analizador universal con heurística, por lo que cortó el contenido principal, dejando solo comentarios, porque pensé que los comentarios son lo principal.Es aún más difícil entender qué hacer con los datos recibidos, cómo mostrarlos. Aquí solo se me ocurren métodos existentes: plantillas HTML, PHP y SQL. Y si los navegadores en NodeJS ya están funcionando, ¿por qué no agregar PHP al navegador para una de las funciones? No soy un fanático de este lenguaje, pero el umbral para ingresarlo es mínimo, y cuando no sea posible hacerlo con algunas plantillas simples, las personas podrán programar en él (o en cualquier otro idioma, ver más abajo). Algo así como esta generación de páginas me recuerda al antiguo Aport Express, un pequeño programa del motor de búsqueda Aport, que se ocupó en la tarea de mostrar los resultados de búsqueda directamente en el cliente, reduciendo el tráfico en el acceso telefónico utilizado en ese momento. Si alguien quiere sumergirse en la historia, puede leer en web.archive.org/web/20010124043000/http: //www2.aport.ru: 80 / aexpress /, y descargue en web.archive.org/web/20040627182348/http : //www.romangranovsky.narod.ru: 80 / aexpress.exeBanners y rastreadores
No, el anuncio en sí ya no me molesta: a lo largo de los años de presencia en la red, desarrollé ceguera de pancartas, que consiste en el hecho de que simplemente no veo bloques en "lugares destacados", así como bloques que están escritos en una fuente no estándar o simplemente en mayúsculas A veces se trata de lo ridículo: he estado buscando los botones "registrarse", "descargar" o "nuevo tema" durante mucho tiempo, ya que se hacen grandes y notorios, pero simplemente no los noto. A veces hasta que me envían una captura de pantalla con un botón dentro de un círculo. Y no se trata de tráfico o velocidad. Hoy en día, este es un problema de seguridad, porque en primer lugar, la publicidad de banner es un código ** ejecutable **, lo que significa que no solo es una filtración de datos personales para la llamada "orientación" y seguimiento de todo, sino que de hecho es solo un agujero de seguridada través del cual puedes llenar un sploit o solo un minero. Si antes era posible decir "no vayas a sitios pornográficos y todo estará bien", ahora el "sitio pornográfico" está integrado en casi todos los sitios, en cada página.Pero los rastreadores me causan un dolor particular, además, los activos que trabajan constantemente en la página. Puedo tomar Yandex.Metrica como un ejemplo de esa basura; todo fue insoportablemente lento. Valió la pena prohibir todos los dominios de Yandex y mi vida estuvo llena de felicidad, ya que los sitios de repente dejaron de frenar e incluso dejé de pensar en actualizar el hierro. La prohibición del dominio Yandex es lo primero que hago cuando configuro un sistema para alguien. Las personas no pierden nada, pero la velocidad de navegación aumenta en un orden de magnitud.La solución es muy simple: la capacidad de especificar "dominios amigables" para el sitio y desactivar las solicitudes a todo lo demás. De esta forma, puede cortar anuncios utilizando la Política de solicitud o equivalente, que, a diferencia de los cortadores con forma de AdBlock, funcionará en casi todos los sitios, no requerirá suscripciones y ayudará incluso si el sitio ha sido pirateado y se le ha colocado un montón de código malicioso.Escuché gritos allí que cortar publicidad reduce los ingresos de los autores. No olvide que durante mucho tiempo nadie paga para mostrar pancartas. No tiene sentido mostrar anuncios _me_, solo gasta mi tráfico y el tráfico del servidor, pero no traerá un centavo a los autores. Pero solo puede enojarme. En un momento, escribí un conjunto de utilidades para sitios particularmente distinguidos.Si soporta la recopilación / filtración de datos personales y el usuario está enojado al mismo tiempo, le recomendaría instalar algo como la maravillosa extensión AdNauseam. Probablemente la única extensión para bloquear anuncios que fue prohibida por Google. La esencia de esta extensión es muy simple: hace clic en cada elemento para ser bloqueado en modo oculto, es decir sin mostrarle nada al usuario. Los anunciantes obtienen sus clics tan esperados, todo lo que quieran. Y si hace clic en cada banner, los datos personales filtrados se mezclarán con un montón de basura, ya que no se corresponderán con las preferencias reales del usuario. La orientación y el seguimiento se vuelven inútiles. Muy buena extensión. Y una idea brillante.Publicidad (perfil objetivo)
Condenar? Sugerir! Sí, condeno la práctica de recopilar datos específicos, especialmente con la ayuda de la vigilancia y trucos similares (para mí). ¿Por qué no ingresar los datos de orientación directamente en el navegador? Te contaré todo sobre mí, no necesito vigilancia ni virus:Sexo: masculinoEdad: 55 añosEducación: secundaria especialPasatiempos: fisting, bdsm, transexual, dispositivos de castidad, control de respiración con máscara de gasResidencia: Klyuchi (un asentamiento) en Ust -Kamchatsky Distrito de Kamchatka KraiÚltimo cheque en la tienda: 28 rublos (barra de pan)Condición financiera: sin dinero, vivo en la asignación y en mi jardín personalActitud para liberar productos:Escribo críticas negativas sobre ellos, pongo Coca-Cola.Perfil en las redes sociales: no hay y no habráTarjeta de crédito: no hay y no estaréesperando las ofertas que puedo usar, teniendo en cuenta mi perfil.Entiendo muy bien que los editores necesitan ganar dinero y sobrevivir en nuestros tiempos difíciles comprando otro avión o villa, pero también necesitan comprender a los usuarios que están molestos por la publicidad que de todos modos les resulta inaccesible. También entiendo perfectamente que toda la publicidad no se puede cortar, por lo tanto, estoy a favor de la publicidad dirigida, cuyo perfil es fácil de proporcionar. Y sin pancartas.También me gustaría un mecanismo de calificación de usuarios para anuncios filtrados. Por ejemplo, abro un video en Youtube, el canal de mi amado Creosan, y en algún momento el mismo Creosan comienza a hablar sobre algunos casinos allí. Me encantaría resaltar el área con publicidad y publicar los datos en esta área como "publicidad" para que más adelante, otros usuarios puedan omitir fácilmente dicha publicidad. A veces, la publicidad se encuentra en el texto de los propios artículos, y los artículos en su conjunto son publicidad encubierta. Es muy desagradable para mí leer tales artículos, por lo tanto, con mucho gusto los marcaría como "publicidad".Soporte incorporado de proxy / VPN
Desafortunadamente, algunas personas estúpidas deciden por mí si puedo usar este o aquel servicio, y lo hacen sobre la base del país en el que nací / vivo. Y no solo sitios (una mirada triste hacia Google Play). Por ejemplo, puedo usar Spotify solo si vivo en EE. UU., Pero puedo usar el servicio Advcash si NO vivo en EE. UU. Por supuesto, si tiene mala suerte al nacer, entonces no es necesario vegetarse en un país atrasado, en teoría puede ir al país correcto, pero no sé cómo vivir en 2 países al mismo tiempo.Solución: mecanismo VPN incorporado, y debe estar completamente configurado para cada sitio por separado. Para alguien, solo seré alemán, para alguien estadounidense, y haré compras en el país por el que se ofrecen precios más bajos.¿Por qué no comprar una VPN normal y usarla? ¿Por qué arrastrarlo todo al navegador? Luego, que solo el navegador puede separar un sitio de otro, separando cada pestaña. Si enrutamos todo el tráfico a través de la VPN del sistema, tendremos que cambiar constantemente o, a veces, detectar desconexiones y prohibiciones si nos olvidamos de hacer esto.Complementos
A veces aparece contenido cortado en mosaicos. Por ejemplo, pueden ser mapas satelitales o fotografías. En principio, se puede elegir desde el navegador hoy, pero ¿qué sigue? Mirar como fichas individuales es inconveniente. Para pegar? Que y como Por supuesto, puedo escribir un archivo de fuerza bruta que comparará los bordes de los mosaicos y buscar opciones para pegar sin problemas, pero aquí puede cometer un error, y si el navegador además almacena información sobre dónde y qué mosaico era relativo a otros mosaicos, el pegado será rápido y impecable! ¡Puede adjuntar una exportación conveniente de mosaicos directamente desde el caché o la página actual!Y no quiero inventar e ingresar inicios de sesión / contraseñas en cada sitio, en su lugar me gustaría especificar alguna semilla aleatoria, a partir de la cual se generarían tanto inicios de sesión como contraseñas para un sitio específico. Por ejemplo, especifico la línea "soMeRanDOooo0MStr11nng" y cuando voy a example.com, estas 2 líneas se concatenan y crean un UID basado en el cual puede generar cualquier cosa, incluidos los inicios de sesión / contraseñas (y aún mejor, toda la información personal restante para que fue posible registrarse con un solo clic y no pensar en qué otros nombres hay excepto Sergey sin usar fakenamegenerator). Y la capacidad de manipular estas contraseñas en bugmenot. Por cierto, ¡ese generador ya está en Safari!En otras palabras, el navegador debe proporcionar un mecanismo de complemento flexible. Además, los complementos deben estar dentro del navegador para que pueda conectar casi todas las partes del navegador, y no como inyecciones JS después de cargar páginas o botones dentro de la barra de herramientas. Por supuesto, quiero escribir complementos en C, los compromisos en la velocidad de procesamiento de la página son simplemente inaceptables.Partes del navegador como servicios
Casi todos los navegadores tienen una utilidad para descargar archivos. Esto es lo que ocurre con una interfaz torcida que descarga archivos a un directorio incomprensible, no sabe cómo reanudarlos y luego también dice que se han detectado virus dentro del archivo. Pero esto es, y lo más importante, es parte del navegador, lo que significa que usa cookies y otros atributos de sesión. Esto significa que al iniciar sesión en un sitio, ya no necesitaremos seleccionar cookies para colocarlas en wget o curl. El navegador en sí mismo puede actuar como tal utilidad, totalmente compatible con la sesión actual. Y esto significa que inicialmente podemos desarrollar tanto el subsistema de red como un curl improvisado con una sola base de código y una conectividad deficiente con el código del navegador principal, pero más sobre eso más adelante.Casi todos los navegadores tienen una lista de archivos primitiva que puede mostrar el contenido de los directorios locales. Lo hace torcidamente, pero a menudo es mucho mejor que nada. Pero la vieja ópera fue capaz de buscar archivos entre usuarios e incluso tenía una aplicación con un refrigerador para dibujar. Sí, los chicos realmente hicieron el futuro. Y lo alcanzaron un poco.El navegador puede tener un cliente de correo electrónico que sería bueno usar desde la línea de comandos, con un historial detallado. Esto permitiría automatizar muchas tareas, desde acumular spam hasta enviar recordatorios. Se pueden tomar recordatorios del servicio RSS incorporado.Navegador de partes
Escribir un navegador completo es una tarea bastante complicada. Además, muchas cosas, como la descarga de archivos, un lector de RSS o un cliente de correo electrónico, ni siquiera se me ocurren cuando muchas personas escuchan la palabra "navegador". Como mínimo, estas aplicaciones pueden escribirse por separado, pueden ser en forma de aplicaciones completas, pueden ser en forma de enlaces sobre las existentes, o tal vez incluso como soluciones temporales de un par de cientos de líneas en algún lenguaje de secuencias de comandos.Las redes también se pueden mover a un demonio separado. Cerca de allí, puede sacar una resolución de DNS con una lista negra de dominios incorporada y una actualización automática de las listas negras, un subsistema para almacenar en caché el contenido y muchas otras cosas. Incluso el renderizado se puede llevar a un proceso separado, como lo fue en Opera Mini (y lo que se puede hacer usando fuentes fusionadas, ya que este código ni siquiera entra directamente en el proyecto, sino que será un "complemento" de terceros, la pureza de la licencia también se conserva). github.com/browsh-org/browsh : aquí el motor furefox se procesa en algún lugar de vpsk, y el ya procesado se le envía en forma de texto y pseudo-gráficos de texto: se ve muy bien, incluso puede ver el videoAl principio, todo esto se puede implementar como microservicios independientes, con un desarrollador escribiendo en java, otro en python y el tercero en Ruby y no necesitan pelear, eligiendo una pila de tecnología. Después de todo, todos están familiarizados con la situación de que alguien no puede imaginar un navegador Java debido a los frenos, alguien le tiene miedo a Sishku por miedo a las vulnerabilidades, y alguien quiere probar la moda ¿Ir y agitarse por él? Aquí, todos podrán elegir una pequeña parte para sí mismos y responder estrictamente, solo será necesario acordar un protocolo de comunicación. Y si algunas partes funcionan mal, al final simplemente se pueden reemplazar. O tome y adapte las soluciones existentes para una integración más estrecha, como se hizo en el navegador Arachne.Incluso el renderizador puede realizarse en un proceso separado y solo transmitir información para su visualización. Al principio, puede tomar el código existente de w3m / links / netsurf, luego aquellos que lo deseen pueden adjuntar modos conmutables desde Gecko / Servo / Blink.Por supuesto, se supone que debe escribir una gran cantidad de complementos. Los marcadores, incluidos los que se sincronizan a través de las nubes o los servicios de recomendación, las pestañas de varios niveles con vistas previas y la finalización automática de formularios basados en redes neuronales, son todo lo que desea. Tal vez alguien tenga a mano la fuente de descargas de archivos multiproceso (o alguien haya visto algo así en un github), ¿quién puede comenzar a portar este código a una nueva plataforma en este momento?Y, por supuesto, aquí puedes seguir el viejo principio: deja que cada programa haga una cosa, pero hazlo bien. El navegador es un conjunto muy complejo de programas que funcionan con la red y, por lo tanto, la complejidad de todo el sistema. Entonces, ¿puede ser fácil dividir nuestro navegador en la cantidad máxima de partes, asegurando la calidad y confiabilidad de cada una de ellas?Complementos como características garantizadas
Algunos complementos pueden ser predeterminados en la instalación. Por ejemplo, complementos para proporcionar pestañas, descargar archivos, un complemento para la barra de direcciones con autocompletar, pompones y dragones, y similares, que ya está en cualquier navegador. Pero propongo ir un poco más lejos e incluir un poco más en la entrega predeterminada. Por supuesto, este es un camino resbaladizo que puede llevarnos a Bloatware, pero en mi opinión, no debe tener miedo de experimentar (por supuesto, no cómo lo hace Mozilla, que incluye extensiones de Holey de diferentes programas de afiliados sin la posibilidad de desconexión).
Por ejemplo, ¿recuerdas en IE6 un botón tan oscuro como Discutir? Apareció después de instalar MS-office, casi nunca funcionó, ya que necesitaba SharePoint del lado del servidor para su trabajo. Pero la cosa fue genial: cuando hiciste clic, se abrió una barra de herramientas, a través de la cual podías agregar comentarios a la página, todavía había una sala de chat con forma de árbol (aunque ya lo recuerdo todo mal, pero no pude googlearlo), y funcionó con cualquier página. Imagínense: comentarios en cualquier sitio, sin moderación de los autores, donde puede expresar todo lo que piensa con audacia y directamente en persona sobre cualquier sitio. Creo que dicho complemento era simplemente una necesidad en el paquete de nuestro navegador.
Otro ejemplo: muchos sitios abren los mapas de Google Maps o Yandex en la página de instrucciones de manejo, y esto se considera una buena práctica, nadie hace preguntas de privacidad y, además, no le pregunta al usuario si quiero que una organización de terceros sepa qué objetos ¿Te interesa la ciudad? Dichos elementos se pueden cortar y reemplazar con tarjetas OSM o incluso tarjetas de depósito locales. Nadie se molesta en descargar el volcado OSM completo y hacer mapas locales, uno o dos gigabytes en el disco hoy en día no significa casi nada.
Resumen
Aquí está mi visión de un navegador perfecto. Por supuesto, lejos de todo se ha escrito: los temas de replicación, los formularios multinivel y la protección de datos del usuario no están cubiertos, no hay nada sobre el modelo de negocio o las formas de atraer patrocinadores para el proyecto. Y se necesitan patrocinadores, porque pocas personas traerán algo útil para hacer un volumen de trabajo de forma gratuita. No hay una descripción de cómo protegerse de los intereses del patrocinador, porque en la salida podemos obtener otro Firefox con complementos de telemetría que informan sobre la desconexión de la telemetría.
Pero en esta etapa, lo más importante para crear el navegador perfecto son las personas. Escriba sus ideas, pensamientos y, si puede ayudar al proyecto con código o diseños, no dude en ofrecer su ayuda. De particular interés es la crítica de las ideas y pensamientos anteriores. Quizás, si no yo personalmente, alguien que haya leído este texto podrá escribir un buen navegador. Comencé a escribir este artículo hace un año, como respuesta a otros temas, iba a organizar el crowdfunding, pero el bullicio de la vida me distraía, porque lo publico tal como está, para que otras personas lo piensen.
Este texto está disponible bajo la licencia de dominio público y puede distribuirlo libremente en cualquier lugar. Quizás de esta manera nosotros (las personas en general) podamos obtener un navegador que sea al menos un poco más conveniente de usar.