
最近,有许多关于现代软件缺点的文章,而没有人试图提供他们的解决方案来改变这种情况。 本文是有关此问题的一些文章的答案,也是有关完美浏览器的梦想。 我们如何才能重新设计浏览器,其UI,与网站交互的方法,改善协议和总体上的用户体验。 如果您对此有任何想法,甚至是最大胆的想法,那么我建议您进行讨论,并为创建完美的浏览器奠定基础。 最终,迟早需要完成此操作,因为当前浏览器市场的情况根本不乐观。 其他浏览器非常复杂且难以追上,这不是问题-我们可以按照自己的方式,仅实现标准的必要部分,同时可以引入自己的非标准扩展。 无需追赶别人,而让别人追赶我们。 让我们的浏览器是为人们而创建的,而不是为好久不见的财团的公司的商业利益而创建的。

理想的浏览器应该是什么?
搜寻
如果您使用的是新浏览器,那么首先应该是对所有内容进行本地搜索。 通过打开选项卡,缓存,上传的文件和其中的大量元信息。 该搜索应该既按索引又按常规进行,并且用户应该能够选择所有可能的选项,包括文档的编码(例如,Far中很好的搜索)。
一次,在一个论坛中,我发现了一个有趣的算法概念。 没有讨论,所以我迅速关闭了标签页,但这个概念本身就摆在了我的脑海。 在后台考虑之后,我决定分享自己的想法...但是在哪里? 快速浏览我通常居住的论坛-我没有找到类似的东西。 搜索引擎也什么也没有,但这不足为奇-论坛没有立即被索引。 我开始浏览浏览器的历史记录-我什么也没找到,但这不足为奇,因为它很大,使用起来很不方便,所以我可能会错过一些东西。 我重新发现了几乎所有的页面-我没有找到类似的东西。 我开始在邮件中,使者中寻找消息,甚至问别人-都没有结果。 我已经开始认为自己受爬虫类动物的控制,启发性的概念,以及我决定如何使用最后一个工具:搜索浏览器缓存文件。 几乎立刻,他找到了他要找的地方。 事实证明,由于没有人回答论坛主题,因此作者认为自己写的很蠢,感到as愧,只删除了话题。 而且我一直在寻找这个偏僻的话题很长时间,但找不到,这使我陷入困境。
还有一次我需要更新视频文件。 该文件称为1.mp4(我认为这些文件很多)。 这对我来说具有一定的价值,但不幸的是,事实证明它已被破坏。 我在哪里下载的? 我必须重新搜索视频中包含的那些关键字。
届会
当您尝试找出新主题时,会自动打开许多选项卡。 链接之间的链接,我们已经读了几天。 此外,每个选项卡都很重要,需要阅读。 我们该怎么办? 尤其是当所有这些都越来越多地累积时?
他们说,您可以关闭您所看到的一切,并依靠历史,将来他们会说,如有必要,它将被发现。 或转储书签中的所有选项卡。 甚至保存/打印页面也不是很方便,但是找到的确切信息将永远不会丢失(但是,有关保存信息的信息将在以后写入)。
还是将整个会话保存为项目? 给他们有意义的名称,例如“我正在寻找船模”,“学习编程”并根据需要打开/关闭? 现在,每个浏览器都有一个配置文件或会话机制,但是通常以某种方式隐藏了它,这使得它很难找到,甚至更难使用。 可能唯一实现这种机制的浏览器是最新版本的Edge浏览器。 鉴于此浏览器的所有缺点,此机制的使用尽可能地方便,它使您不必积累标签,但对标签进行排序很方便。 当然,没有完美的限制,但是至少必须有这样的选择。 更好的是,能够将此类会话与页面的缓存/内容一起保存。 并不是现在浏览器的方式,而是以某种二进制形式保存缓存,而是使您可以打开一个新主题的100个标签,以其他设备可读的格式(.html / .pdf)保存它们,然后上传到手机,这很容易阅读,可能还远没有文明的地方。
私隐权
用户必须决定要与站点共享哪些信息。 我不应该寻找其他的User-Agent开关,这种功能应该内置在浏览器中。 例如,如果您将自己介绍为链接,则Google.com搜索引擎可以很好地工作,但是不会出现吃不完输入文本的令人不快的即时搜索。
我希望能够:
*设置屏幕的宽度和高度(任何,至少50000x50000像素)
*颜色深度,与当前设置无关
*将站点添加到受信任的站点,以便当您单击“清除所有”时其cookie不会变酸
*替换页面上的字体,同时为网站提供所需的字体列表
*提供任意的User-Agent,甚至是随机的User-Agent,可从大量选项中获取或绑定到特定站点
*选择内容的语言并查看传输到服务器的内容,而不仅仅是“首选语言”,这仍然是未知的
*标头的数量和顺序,包括模拟其他浏览器的已知错误
通常,所有可以指纹识别的内容都必须能够更改。 我想有这个机会。
有趣的是,古老的浏览器对此有很多设置。 例如,链接,w3m和netsurf之类的浏览器不仅允许您禁用Referrer / User-Agent,而且还提供许多不同的有趣选项,您可以在其中微调浏览器的行为以及如何填充这些字段。 尽管只有未来的Firefox版本会学习如何做到这一点,并且只能部分地学习如何做到这一点,而没有提供100%的用户保护,并且没有任何选择,但是仅在特定条件下严格定义行为(但是,我们将讨论站点设置和条件)。
飞船
很长一段时间以来,MSIE都不支持该职位:已被责骂的固定职位。 正如实践所示,我不支持它是很好的。 没错,这并没有阻止人们,他们通过带有跳跃菜单的JS模仿了它,至今在数百万个站点中都可以使用。
如今,重叠元素用于所有有用的功能:浏览时弹出且无法删除的全屏登录窗口(facebook),原来是聊天机器人的弹出助手,有关促销和礼物的全屏消息,我如何赢得礼物,有时他们只是向我显示广告(本身没有广告,但没有关闭按钮),阻止我单击页面的透明弹出窗口(pornhub)以及类似的词:他们告诉我必须禁用AdBlock,而我没有。
您是否尝试打印任何页面? 但是我经常“打印” PDF,我想击败那些在屏幕上方或下方的“我们使用Cookie”或“此处新闻报道”之类的弹出式扩展程序的人。 好吧,或者只是顶部的固定菜单和底部的简单页脚。 不,很好,在屏幕上它仍然什么也没有,您可以滚动页面并以某种方式阅读它们阻止的内容。 您知道每张纸上都印有这个污渍吗? 并印在文字上方? 而且,尽管这是一种狩猎,但是您无法刮擦纸张,因为这会阻塞部分无法以任何方式读取的内容吗? 到目前为止,我必须通过元素检查器/ ublock破坏样式或删除一些单独的菜单,只有在此之后,我才能“打印”页面。 这有点烦人。 但是,如果有简单的可控元素,那么甚至都不会发生!
但是在浏览器引擎内部,您可以检测元素何时与文本信息重叠,并...例如,将其移到侧面的某个位置。 甚至破坏样式,声明它们很危险。 有很多选择。 您可以将页面显示为图层,并为用户提供几个按钮,以“剪裁”上一层或将其返回,就像在某些玩具或三维编辑器中所做的那样-我想要这个功能多年!
这很有趣,但是一旦IE拒绝呈现眨眼标记,但是它允许JS移动浏览器窗口并弹出非关闭弹出窗口。 如今,即使在状态栏中显示文本已经很困难了,它也更容易模仿。 现在,我建议对与文本重叠的块进行操作,可以以某种方式中断此功能。 而且,您必须断开越来越多的功能,以使它们不能被使用而损害它们。 是的,为此,您可以编写浏览器,尽管无需遵守标准,但是它便于阅读文本,而且编程更少。
页面快照
碰巧,当您打开一个带有一些文本的简单页面时,有时您会忘记它,而将其挂在选项卡中,“以便以后使用”,“以免忘记”。 通常,这里没有什么特别的。 例如,他们讲述了如何在该国种草莓,而没有任何预示着麻烦的事情。
几个小时后到达计算机后,您会注意到MOUSE CURSOR几乎没有移动,SWAP中的所有内容都无法在计算机上工作,如果您害怕打开进程列表并大惊小怪(如果可以等待绘制过程,就惊恐了)。 在这里,该标签仅与此无辜站点一起关闭。
为了避免这种情况,我曾经为Firefox编写了一个插件,该插件在加载页面5秒钟后(onload事件),将setInterval / setTimeout / requestAnimationFrame替换为无任何作用的空调用,但断开了现有调用。 基本上,我很高兴。 没错,由于没有更多的计时器,因此诸如展开式扰流板之类的各种交互元素也停止工作,并且扰流板的打开启动了动画的计时器。 这是一个大价钱吗? 我不得不放弃我的插件,因为我无法为某些事件返回处理程序,但是如果我们正在编写浏览器,那为什么不呢?
替代实现:在onload事件发生10秒后,我们停止所有JS,卸载DOM,并仅在内存中保留渲染带有文本,表格和图片的矩形所需的那些结构。 就是这样,让“背景”标签像带有文字的图片一样,仅此而已。 另一种选择:我们在一个单独的过程中渲染整个布局,并且仅在渲染后加载文本和图片的坐标,就像在Opera Mini中一样,因此我们的浏览器会更安全一些。
最有趣的是,现代Opera中已经有类似的东西,但是只有在切换到电池电源时才能打开。 我想始终对网站使用此选项,尤其是对于我第一次访问的网站。 通常,在所有现代浏览器中,都有很多有用的功能,但是它们经过硬编码并且不能由用户配置,这就是为什么浏览器实际上失去了巨大潜力的原因。
内容本地缓存
我告诉我一百万美元的想法:在0毫秒内加载页面。 不,即使该站点完全位于我们的缓存中,也要等到我们发送请求,等待往返时间,解析答案,然后对所有其余脚本和样式执行相同操作后,它才会打开。 是什么导致您无法立即从缓存中打开它并在后台立即通过向后台中的所有资源发送请求来验证内容,而在后台使用双重缓冲在发生更改的情况下更新数据(如重绘图片和文本块)呢? 说说IE中已经存在的什么,叫做“脱机工作”? 是的,IE仍然有很多不错的功能,但首先,此功能并不总是有效,其次,我们将无法刷新页面,在我的情况下,页面将在验证后自动重绘。
不幸的是,在现代网络上,缓存不仅不能很好地工作,而且根本不能工作。 但是,什么阻止了强制页面被保存到磁盘呢? 这样不仅可以在他死后打开网站,保存一些有用的内容,还可以监视,例如,商品价格变化的动态或使对话者知道他们已经改变了职位。 当然,您可以手动将页面保存到磁盘上...但是通常,只有在需要返回某些旧版本时,才记住这一点,但是没有任何版本,因此对于Web存档的希望很小。 有时,您可以从搜索引擎中获取内容,但它并不总是有效,特别是如果您没有立即进行操作。 在将内容轻松划分为单独的托管元素的情况下,这将特别有用,但以后会更多。
当然,缓存应采用增量差异形式(否则将没有足够的空间容纳所有内容),智能地解析未显示的信息(无需存储计数器的更改代码),突出显示更改以及直接从地址栏中选择旧版本。 您可以将已解析的页面存储为一组矩形以及它们在屏幕上的坐标,这样可以加快渲染速度,图像可以缩小并存储为h265,这比jpeg图像要好得多-我们节省了空间。 而且,如果我们已经在强制缓存及其启用方面投入了大量精力,那为什么不与其他人共享呢? 用户界面是最主要的。 该功能不仅应该而且使用起来应该很方便:打开页面的不同版本,删除或保存页面的版本,将其发布为公共缓存,选择页面并卸载网站的本地版本(访问过的页面),执行某些操作例如带有工作链接的mht / pdf,这样它们就可以在其他设备上打开,并且不仅像某些移动浏览器一样,它们可以放置在浏览器内部存储库中的某个位置。
为了加快页面加载速度并防止意外代码注入,可以像Decentraleyes扩展一样直接从本地磁盘加载存储在不同CDN上的各种脚本(例如jquery等)。 立即下载字体和图标包。 了解有关已存在的内容的更多信息:
addons.mozilla.org/en-US/firefox/addon/decentraleyes 。 当然,最好通过类似于browser.js(仅不适用于作者)或Grease Monkey(仅不包含木马)进行代码注入,以便您可以更改/修复网站代码。 不,不是插件形式的拐杖,而是原生支持,它不会像以前在Opera中那样放慢速度。 但是,遗憾的是,现在根本没有方便的工具来修补站点代码。 理查德·斯托曼(Richard Stallman)将该站点称为“ tivoizatsii”站点,但这将写在代码签名部分。
我们在此处添加一些假设的sitemap.xml,它确定文章,用于主动缓存的页面,到用于p2p内容交换的跟踪器的链接的亲和力……并且我们获得了一个可以在本地保存和使用的自复制站点,该站点将承受任何负载并且其内容不会消失从不。 但是,我们将讨论有关分布式站点的问题。
代码签名
我们中的许多人并不认为,但是不同的人可以在浏览器中执行以各种方式(包括非免费许可)编写的代码。 用户并非同意这些许可的事实。 这就像未经事先同意而发生性行为。 原则上,在大多数情况下,不会发生任何不好的情况,但是可能会有细微差别。 理查德·斯托曼(Richard Stallman)撰写了一篇出色的文章“ Javascript Trap”,并以此为基础编写了LibreJS扩展:
en.wikipedia.org/wiki/GNU_LibreJS-这应该是在浏览器中解释Java的起点!
如果许可说明是标准的一部分,则生活会更轻松一些,但事实并非如此。 如果代码的编写者使用他们的公钥对其进行签名,那么我至少可以信任各种编写者,但事实并非如此。 剩下的就是对脚本进行哈希处理,包括缝合到页面中的最小脚本,并要求用户“允许这样做”吗? 运行它们中的每一个,维护允许或禁止的脚本的数据库。 像杀毒软件一样。 还可以通过签名搜索“病毒”,而不是启发式分析器-向用户指示许可证和问题。 基于这些哈希,您不仅可以保护自己免受恶意代码的侵害,还可以构建版本控制系统。 创建仅运行您信任的代码的基础架构! 毕竟,您是否厌倦了与上交文本并要求您禁用Adblock的脚本的战斗? 我会禁用它,但是我没有Adblock,也没有信心明天他们不会要求我捐赠或订阅某些欺诈。
如果您不熟悉Richard Stallman的杰出著作,那么我建议您阅读:
www.gnu.org/philosophy/javascript-trap.ru.html (俄语)。
网站评级/反评级
某些浏览器(例如Opera)出于某种原因试图用自己的双手来修复每个站点,并通过注入自定义代码来制作补丁。一旦他们厌倦了,我们都知道结果。尽管他们为自己的成就感到自豪,并在各种puzomerki中得到了证实,但他们进行了符合标准的测试。但是,可以采取另一种方式:代替修补某些东西,向某人写电子邮件,使用个人联系方式以及所有其他方式,可以在页面顶部直接显示补丁文本,文字为“该网站的作者不遵守该标准,以下是代码可以修复此网站。” IE抽搐的挑战?没有模拟,而是关于作者的适用性的红色大弹出框(当然,不阻止内容)。当然,许多用户会忽略这一点,但是有人可以问该网站的作者这个问题:“为什么这里有这么多红色?”网站的所有者将告诉他们如何节省程序员的钱。或者告诉客户,有必要放置“普通的Google Khroma”,因此客户更有可能离开它们。如果此类网站显示类似“ location.href ='http://google.com/”的内容,再次来找我们”-这更好,不要惹这种人。您可以走得更远:页面上的图片显示为100x100,但实际上是500x500?红色弹出窗口,提示作者无法调整图片大小。带有逼真的图形的图片在PNG中缩小了吗?作者未理解文件格式的红色弹出窗口。该页面没有指向主页的链接?红色弹出窗口,提示该网站的作者未进行正常导航。当然,并非总是可以显示红色弹出窗口。例如,如果可以通过optipng更好地优化PNG图片,则您可以仅显示一些红色警告,因为它们的广告拦截器会推断出这些警告。各种CDN优化器已经做过类似的事情,它们压缩图片并最小化代码,甚至尝试过滤输入处的SQL注入。但是,只有作者支付了钱并连接了相应的服务,所有的喜悦才会出现,简单的用户应该怎么做?一个简单的用户可以简单地拒绝使用低质量的网站,而他的浏览器应对此提供帮助。显示数字数字的广告拦截报告已经可以被视为一种抗评级网站。反评级越高,该网站和作者就必须对此采取的措施越糟。对于某些值,您可以简单地显示警告,警告不要访问此站点。此外,我认为浏览器应与社区分享其发现。您可以为每个站点创建一个全局评级,紧紧抓住每个链接令人垂涎的数字,以免意外地走到用户等待“糟糕体验”的地方。当然,一切都无法自动化。因此,您可以创建多个等级,其中一些等级将由在职人员领导,手动检查代码,检查其许可证和代码质量以及整个站点的质量。当然,该机制应该分散,不受特定个人的控制。让用户决定要订阅什么订阅。个别网站设定
每个站点或站点组应具有自己的单独设置,类似于在旧Opera中的配置方式(最多包括12个版本)。只有这种机制可以改进。首先,不仅要按域或子域标识站点,还要按域中的正则表达式标识站点。或通过接收到的该域的IP地址。例如,我不想在Yandex的站点/资源上执行脚本(请参见下面的原因),我可以找到Yandex拥有的IP地址块的列表,并轻轻地中断不可信代码的执行。这很简单。但是目前,我被迫限制自己去禁止单个域(我不知道所有域!),将所有地址范围输入防火墙,这非常不便,或者使用带有* yandex *掩码的地址来提升我的DNS服务器,目前正在做。其次,为了不产生实体,您可以创建基本配置文件,例如“受信任的站点”,“常规站点”,“不良站点”,“对于Vasyan中的站点”,“对于Aliexpress”,并将您的设置分配给该站点或那个站点。并且根据配置文件,将发送其User-Agent,标题的顺序和内容,是否支持样式,字体,脚本以及所有其他可配置内容的加载。甚至可以确定是否可以拦截鼠标右键,启动计时器的精度或是否播放动画和声音(出于某些未知目的,AliExpress上会出现MIDI请求)。您还可以提供随机更改的设置,例如大列表中的随机User-Agent值或特定站点的任意代理(稍后将对此进行详细介绍)。复制并粘贴
在显示文本的程序中,最基本的功能似乎是什么?当然可以进行文本选择/复制/粘贴!las,即使选择简单,问题也已经开始。您是否尝试突出显示链接?在浏览器中,在邮件中,在IM中?怎么了?即使未释放按钮,该链接也会开始拖动,在您单击该链接的某个位置,并且需要瞄准毫米间隙才能选择它。选择图片是单独的彩票,有时根本无法完成,除非按下秘密黑客组合CTRL +A。向左和向右移动-我们选择了整个页面,而不是我们针对的段落。否则,文本可能根本不会脱颖而出,从而造成鼠标按钮损坏的错觉。即使我们瞄准了目标并且能够选择文本,但事实并非如此,当我们右键单击时,不会收到诸如“该页面的文本受保护”这样的警告。否则什么也不会出现,因为浏览器已经学会了自动分解此类脚本。否则,将不会发出发送有关页面上的错字报告的请求。在阅读文本时,我经常用鼠标选择文本以便于感知,而这种污垢会激怒我。插入甚至更糟。是否保存格式?有时,这取决于您是使用热键还是使用“滚轮” –一种看似一个动作的不同行为。如果块之间没有空格,插入第三方应用程序中的内容是否会有间隙?有时您不会摆脱格式问题:例如,将复制的文本粘贴到页面内,例如,在键入的字母内,键入的段落突然变成粗体和/或变成引号。时尚的最后一声尖叫:更换剪贴板中的内容。您复制了有关猫的文字,不情愿地将其粘贴到聊天中,然后……他们取消了禁令,因为连同所需的文字一起,插入了广告的广告,复制的来源。当然,您需要小心谨慎,注意发送的内容和位置……但是,另一方面,为什么我的查看文本的工具却允许自己这样做呢?分布式存储
我们前面讨论的内容的本地缓存只是现代Web用户需求的一部分。问题的第二个重要部分是在服务器上缓存内容,以及在不同CDN等上到达客户端的途中。实际上,小型站点可能会面临这样的事实,即交付基本静态的文件需要太多的流量。一遍又一遍。实际上,他们别无选择,只能喂入闪闪发光的CloudFlare,以便提供分布式缓存。CloudFlare本身具有有趣的RailGun技术:www.cloudflare.com/website-optimization/railgun-这是一个很酷的拐杖,它使您可以缓存不可缓存的内容,借助它们不仅可以缓存旧版本的页面,还可以与它们进行区分并从其服务器发送已经重建的差异。因此,事实证明,您仅可以使用1个400字节的数据包来更新页面(该数字取自描述),并且原始服务器甚至可以在电话上托管(实际上并非如此)。但是对于这种事情,您必须支付,每月200美元,对于小型网站来说,这是非常可观的钱。哦,如果有可能将内容分成小的可管理元素……但是,是的,稍后再讲。虽然用Railgun像diff和cloudflare这样的拐杖。但是拆分的IPFS文件系统已经存在。还有ZeroNet,现在,它可以立即使用,以分布式方式托管网站。您可以尝试下载客户端,并查看不需要服务器的异常网络!但是,这里没有新内容。大约15年前,流行的网站有自己的桌面客户端(有时不止一个),并且套件中包含一些洪流发行版。如今,它以一种形式或另一种形式存在,例如WikiTaxi应用程序,它使您可以将Wikipedia放在口袋里。我还记得诸如AportExpress之类的东西,其中有一个成熟的模板引擎和来自服务器的本机Aport模板,它们在客户端上收集页面。增强网络
您是否可以想象有时候人们通过不同的GSM调制解调器访问网络,而本来就很低的速度却由于不良的信号接收条件/不良的合同条件而降低了?在imgur.com/a/XJmb7之类的网站上,有很多非常漂亮的东西,但是包括所有图形在内的页面本身的重量却超过了几十兆字节。唯一的问题是无法通过这种连接查看此类页面。如今,浏览器试图同时加载所有图片,从而减慢了每个图片的加载速度(为此,它们仍然创建了许多子域来绕过连接数量的限制)。一段时间后,发生超时,服务器简单地关闭了连接,留给我们的是破碎的图片,这对我们来说无论如何都是很好的。如果按F5键,将有一会儿绘图(取消下载并显示已加载的内容),然后下载将从头开始,而不会恢复单个图像。您经常注意到浏览器是先以50kb / s的速度“下载”页面或文件,然后以20kb / s的速度“下载”页面,还是以3kb / s的速度“下载”页面或文件?这意味着实际的下载速度由于某种原因变为等于0字节/秒,并且断开连接并重新启动非常困难,即使可以从技术上下载文件。但是,Web服务器可以为静态生成torrent文件,并以自动模式分发它们,这将允许下载文件和消除网络通道的负载!种子文件的核心是一系列校验和,可让您从任意位置下载文件并验证所下载内容的正确性。因此,即使进行了第五次尝试,也可以轻松缩小甚至不完整的图像,以准确解决版本控制和缓存验证的问题。而且,由于我们为客户提供了有关文件的元数据,因此我们可以将整个页面设计为一个数据包的形式的“一个大分布”,在其中将显示有关页面以及图像文件,样式,链接页面等的信息。引用(包括其他“分布”),一种小型的二进制站点地图。这将使您更好地缓存/预缓存网站,更快地加载所有资源,而无需等待页面或脚本完全加载,甚至通过为残疾人士提供高级页面导航来优化残疾人网站。或者不要一次下载任何元素,例如半屏上的Apple图标或大量视频。不幸的是,现代开发人员试图以自己的方式处理这些问题,而没有提供设置并用自己的双手来实现所有这些功能,即“进展如何。”例如,通过一堆JS,许多域和页面滚动处理上传图片/视频,这就是为什么不再无法快速将页面滚动到“第十页”的原因,这令我非常恼火。幸运的是,一些主要供应商(例如小米)开始对此进行反击,每次都问:“您要播放视频吗?但这可能要收取额外的费用!”,但是到目前为止,不可能对这种不满设置自动禁止,并且仍然有很多解决开发者的方法。如果我们已经通过无休止的滚动触及了无尽的站点,那么我们要指出:没有什么可以阻止用户显示整个巨型提要的空骨架,以便他可以轻松地导航并动态加载内容。但是没有人做。下载网站
假设我找到了一个有草莓种植手册的网站。 我很钦佩,对这个想法感到兴奋,去了小屋,……遇到了问题,我意识到我不得不将每页转换为PDF,然后才去小屋。 为什么用pdf? 是的,因为现代页面甚至都不希望被正确地保存,打开本地HTML并将其填入Cookie时仍显示的内容只能被猜测。
但是在过去,我可以带Teleport Pro并用草莓将整个场地抽干,将其倒在手机上,然后平静地去小屋! 所有图片将被抽出,所有链接将被链接,几乎所有内容都将正常工作。 甚至还有一些站点已经上传的站点-那是当年学习的必不可少的东西,以及在浏览器中正常工作的JS搜索引擎!
但是,如果我今天这样做会发生什么呢? 我正在等待一个发现,即在现代网站中页面是动态的,每个页面都有一千个URL,我很容易地下载3个页面10,000次,仔细地链接它们,当我浏览到所需的页面时,即使下载了它也不会得到它(通过50个链接的路径,我将必须使用与摇椅完全相同的路径)。
如果您真的想要? 在这种情况下,我们今天开始并编写一个站点解析器,选择内容(按常规或xpath),以某种方式我们使用自制脚本将其重新链接,并附上狗屎和棍子的索引,甚至可能是一个简单的搜索引擎。 这一切从1天开始,直到您无聊为止。 您可以仅将文本保存在Word中,并保证所有内容都以红色Impact插入,并且标记达到无法查看的程度。 您可以打开录像机并滚动浏览页面-这是一种较便宜的时间选项,尽管这样的记录会很麻烦,但是在我们看来,这无关紧要。
在这一点上,我必须写一个理想的浏览器,我需要提供网站抽出功能,以便以后可以轻松地将内容传输到电话或任何其他*独立*设备上。 但是,考虑到以上情况,这是不可能的。 但是,如果我们的内容被划分为一些小的可管理元素,那么But。 因此,除了上述所有功能之外,现代的浏览器不仅应能够解析这些相同的元素,而且还可以将它们存储在本地数据库中,并且是一种小型CMS。
并且不要认为原则上不能缩小现代场所。 相反,静态再次流行起来,甚至还有一些有趣且流行的项目,例如
github.com/jekyll/jekyll来生成静态。 那么,为什么不分发该网站的“来源”呢?
免责声明:Teleport Pro在这里仅用作最知名的网站泵送软件,它绝不是广告或怀旧之物,我个人不喜欢它,因为有一堆临时文件以及无法正确解析javascript。 我的选择是其他未曾广为人知的摇摆器,例如webzip,尽管它们需要大量资源,但仍在页面中插入了广告,但是正确,完整地抽出了内容。
媒体内容
就像小型托管元素变成了无法控制的整体一样,网站作者制作了原始工具来查看媒体内容。 简而言之,每个第一个网站都试图通过其独特的网络播放器向我展示视频。 当然,那里的标志和故障是独一无二的。
不,曾几何时,我还吹嘘自己可以在Flash上编写出色的网络播放器,而我只用20行就可以做到! 我很酷,我能做任何事! 随着年龄的增长,我开始提出以下问题:
1.如何扭曲亮度/对比度? 动态归一化?
2.如何切换到全屏? 如果没有按钮,是因为他们忘记绘制按钮了?
3.如何将无聊的演讲加速3个小时?
4.如何扭曲均衡器? 讲师几乎听不见声音,即使您拧开扬声器也是如此
5.我将如何切割并发送给朋友?
6.如何在不将鼠标对准小条的情况下快速返回几秒钟?
7.如何使其输出超过15 fps?
一些供应商已经在尝试解决此问题。 问题在于具有基本特征的原始自制产品的形式。 例如,在Opera中,您可以从页面“剥离”播放器并单独管理。 有youtube-dl,它不仅可以让您从一堆服务中下载视频,还可以获取链接,以便至少可以在VLC中将其放入普通播放器中。 还有StreamLink和MPV,请尝试一下,确保您会比普通播放器更喜欢它。
但是我们可以通过将上述所有原理应用于多媒体来走得更远。 如果有什么要丢失的东西,我们会要求用户下载,然后将其本地缓存,解码并显示-就像在其他浏览器中一样。 但是,由于我们知道浏览器不是多媒体应用程序,并且不能满足所有请求,因此我们可以在附近显示一个按钮,该按钮将启动显示内容的普通播放器。 让我们相信为此花费了很多时间的专业人士和粉丝。 现场演奏音乐或视频,而不是被迫以每小时20美元的价格将播放器附加到该网站的人。
为确保与视频源的连接不会中断并且视频不会再次下载,我们可以像洪流客户端一样打开本地代理服务器,并在运行过程中重新打包视频流,然后将其用于将视频分发到外部应用程序,以及在请求到达时-根据应用程序的请求和站点的功能,部分缓存将实时提供。 同样,任何视频/音频也可以轻松保存为文件,即使它最初是现场直播或动态生成的媒体源脚本,也根本不存在文件。 而且,您无需在页面内胆中寻找直接链接,无需进行重定向,也无需在屏幕上以视频录像的形式添加重型大炮-浏览器应该适合用户,并且用户会成功,没有人会打扰他。 这里最困难的事情可能是注入Flash进程。 但是它的生命周期结束了,因为它不应该经常更新。
过滤不当内容
如果通常只想到色情或侵入性广告来过滤不想要的内容,但是您几乎在任何站点都遇到了一个问题,那就是最好不要看到该内容。 请记住,您是如何在不同的站点上爬行的,从而获得数以百万计的搜索结果。 还是不是同一类型,但是您试图在数据集之间找到不同的地方?
例如,在有工作/自由职业者的网站上,您经常会看到有人需要写论文,但您却没有写论文,就像您没有用JS或PHP编写一样,但是您经常从搜索结果中删除所有此类项目只是依靠类别是不可能的,通常没有人指出它们。 还是您正在查看新闻提要,而又有另一架飞机坠毁后,您不知道从飞机上获得新闻的去向,特别是如果那里有亲戚,这会伤害您吗? 有些人表达了一些时尚和着名的,甚至只是趋势的东西,例如微调器或Pokemon,结果甚至是特殊的浏览器插件似乎也根本看不到这一点。 还有谁不想在黑名单中添加一些“朋友”,以使他们再也看不到自己的帖子了? 仍然没有看到有关呕吐犀牛及其无礼广告的消息,这些消息通过测试开源程序和对社区的免费帮助进行报道...
有趣的是,几乎所有电子邮件客户端都具有用于分类/自动删除垃圾邮件的丰富过滤器,但是几乎没有网站具有此类功能。 如果将我们的内容切成易于管理的小元素,那么我们可以过滤/突出显示,以免浪费时间在我们显然不感兴趣的事情上。 而且,对于某些删除了90%的内容并以我所需格式的剩余10%形式提供给我的网站,我不必为某些站点编写解析器。 每页不包含10个元素。 至少
1000件 。 可以使用RSS阅读器,但是RSS / Atom到处都是,特别是在搜索结果中还远远不够。
可管理的小物品
那么,前面提到的网站的这些小型且可管理的元素是什么? 为了更容易理解,让我们想象一个带有一些信息的静态json文件。 或XML,SQLite数据库,XLS文件或CSV文本引擎,或什至尚未诞生,但必须是二进制,压缩和纳米技术的东西……里面有一些小信息。 小,因为它们是不可分割的逻辑单元。 这可以是导航面板中的链接,产品说明的摘录,具有所有属性的产品本身,用户评论,甚至是整篇文章。 它也可以是一些单独的站点窗口小部件:搜索字段,订单篮,登录/ razlogin字段。
之所以能够进行管理是因为,与实心的整体式控件不同,我们可以管理以下数据:识别正确的数据,对其进行排序,以正向和反向顺序进行输出,使用我们的数据对其进行过滤或修饰,创建网格物体,这些物体会在适当的时候产生很多噪音。 几乎每个站点都有一个管理SQL的数据库。 SQL的背后是关系理论,关系代数以及许多信息管理方法。 再下一点,我将展示如何管理信息,以及网站的作者很少(如果有的话)给我们的信息。
例如,我正在尝试在演示场景中找到新的好作品。 我去
pouet.net ,戳Prods,然后...一方面,我只想要很酷的工作,所以我按
路易斯数对工作进行排序。 首先,我看到了我最喜欢的fr-041:碎片以及我不止一次见过的其他作品。 但是我想要新鲜的东西! 我戳它的意思是在发布日期,这里只是新鲜的。 但是哪个是最好的? 如何合并2种排序方式? 还是至少在“过去六个月”的形式的时间段内进行选择,然后才对其进行排序? las,我没有得到执行此操作的工具。 但是每件作品都可以在我们的JSON文件中表示为作品数组中的元素,基于数据方案,我们的浏览器可以绘制独立于网站作者的控件,我们可以根据自己的喜好进行选择。
再举一个例子:我们都知道搜索比谷歌更好根本就不存在。 但是有时他认为自己很聪明,以至于从搜索查询中扔掉整个短语,将它们翻译成不同的语言,并显示出他认为更有用的内容。 我不需要 “停止变聪明,我在这里负责”复选框在哪里? 以前,它包含正确的引号
和加号排列,现在位于
bing.com-立即打开更原始的搜索,但它会精确搜索我需要的内容,并且不会变得很聪明,不会忽略我的关键字,不会忽略请求的条件。 如果他什么都没找到,但如果没找到,他会诚实地说出来,而不是试图从自己身上拿出一些东西。 在那种情况下,如果给我们小的可管理元素,那么我们可以轻松地将两个搜索引擎的搜索结果合并到一个搜索提要中,为此,我们只需要连接2个相同类型的数组即可。
通常,单个网站上的搜索结果中充斥着垃圾邮件或类似的广告,或者只是对某些内容的歪曲描述。 例如,一件衬衫可以有20种颜色选择-我将不得不用眼睛完全滚动浏览所有这些内容。 在最佳情况下,我只能从问题中删除某些类别的商品或展示广告,但这非常不便,并且通常根本不提供此类功能。 如果我们的要素比较少,我可以过滤掉过失的卖家,甚至立即选择所需颜色的衣服。
回到排序。 就像在寻找精美的模拟商品时一样,在网上商店中搜索商品时,通常需要注意几个参数,但是您只能将选择的结果排序一个。 如果可能的话。 这甚至影响最大的交易大厅。 如果他们返回原始数据,那么将非常容易操作。 实际上,您需要打开50页并手动比较产品说明,抛硬币,并希望购买能够成功。 将1美元的梳子作为附件添加到拍卖品时,没有欺诈性的计划,但实际上最低成本为10美元起。 还有更多有趣的方法。 当我购买第一台平板电脑时,我用常规品抽出了15,000种产品和包裹的描述,以寻找所需的关键字-速度很慢,但我发现了自己的爱人(是U9GT2)。
但是,让我们回到草莓吧。 或者更确切地说,到带有草莓生长手册的站点。
想象一下,用于种植草莓的指令是一种资源(为简单起见,仍以json文件的形式),可以单独请求该资源,在内部有语义标记(它将告诉我们它指向的页面以及链接的类型)。 没有导航,没有其他用户的最佳提示或评论,仅是纯内容。 嗯,当然,附近也可能有顶部,注释和提示,但是主要的是,这并不是一个整体,您可以准确地识别所需的数据类型。 当然,肯定会在这里添加广告和脚本,但以后会更多。 目前,我们认为我们直接从数据库(甚至从内容编辑器)获得纯内容。 这很容易缩小,折叠,索引,更不用说缓存和内容交付的便利了。 此类元素可用于在CDN和浏览器上进行预缓存,创建包含内容的批量软件包,以进行有效的压缩和加载(以免将每个按钮分别拉开50个字节),以进行版本控制和归档。 此类数据可以在浏览器中长时间扭曲和打开,而不会对服务器造成任何负担,并且可以长时间进行各种选择和不同选择的播放。 有趣的是,这完全是将其存储在管理CMS内部数据库中的方式。 但是,所有这些都是通过“整体化器”提供的,“整体化器”将数据压印为整体式HTML,因此很难使用。
您可以利用这些数据制作许多有趣的功能。 例如,您可以解析论坛上的帖子,对其进行缓存,然后查看已删除的帖子。
如此小的元素在哪里? 已经有什么了?
很难相信,但是将内容从其表示中分离出来的尝试已经存在了一段时间。 RSS的第一个标志是RSS,它在交付摘要方面做得很好。 Yandex.market要求以特殊的XML格式卸载商店,其中包含价格,图片,有关制造商的信息,甚至包括交货信息。 其他网站也有自己的上载格式,例如Google Merchant使用经过稍微修改的RSS2.0,但通常今天可以读取和呈现这些格式。
如果您梦s以求,那就是各种各样的opengrade和微格式,并且在HTML5中添加了很多东西,但是,a,今天很难依靠它。 另一方面,许多站点已经包含语义标记,因此拒绝阅读它是愚蠢的。
可以与一堆命名的和半标准化的字段交换纯XML或JSON。 您甚至可以SQLite格式交换数据库本身,也可以在其中生成一些小的选择。 最主要的是应该有干净的数据,没有任何代码(稍后会详细介绍)。
在哪里获得幸福?
首先,在开发人员了解新的交互方式的优势之前,我们自己将需要获得自己的幸福。 简而言之,我建议解析站点并从中删除我们需要的实体。 您可以使用xpath,新潮的CSS选择器或良好的旧正则表达式来完成此操作。 是的,对于Internet上的每个站点,您都需要编写自己的解析器。 乍看之下,这是一件无法完成的巨无霸作品,是这样吗?
迄今为止,有几个专门用于解析站点的项目。 有些工具(例如Octoparse)几乎不需要知识,就可以用鼠标选择必要的块。 除了“爬网”计划之外,该网站还充满了鼠标。 这意味着“编程”的进入阈值将非常低,即使家庭主妇也可以自行创建自己的解析器。 如果解析器质量低下或停止工作,浏览器将仅按原样显示页面,直到其他人编写新的解析器为止。
今天也有更紧密的项目在运作。 例如,这是Telegram中的即时视图功能。 人们已经编写了许多绕过知名站点的解析器,并且仅解析干净的内容。 当某人在Telegram中发布指向此类网站的链接时,会显示珍贵的“即时视图”按钮。 如果您按它,则仅纯内容将到达,而没有广告和其他垃圾。 下载仅需几千字节的流量和内存,而不像浏览器那样需要数兆字节的流量和千兆字节的内存。
立即下载如此少量的数据,因此功能名称-Instant View。如果解析器出现故障,也就是说,一个错误跟踪器和一个准备编写新解析器的社区将由方便的编辑器来处理。因此,如果某人不能相信这种想法的可能性,那么在他自己亲自看到之前,欢迎您。没错,我们的任务会更加复杂,因为除了显示文章文本之外,我们还需要显示带有文章的提要,浏览站点的各个部分(文章,论坛和商店-所有这些都不应在单个提要中受到干扰)。不仅需要从页面中提取所需内容,而且还需要确定要在哪些表上进行排列。例如,我真的很喜欢阅读评论,而且如果只发布主要新闻或文章,那么资源的价值对我来说将越来越少。例如,我以前通过SkyTube观看Youtube并发现了很多新的有趣的评论,但是切换到NewPipe时我就没有了。与youtube-dl相同的解析器集会遭受此困扰。这里是如何将结果内容分类到架子上-这是一个大问题,并不是每个家庭主妇都能设计数据库结构。更大的问题是如何浏览此类内容。主要是什么,子公司是什么?不知何故,很多年前,我已经用启发式方法编写了一个通用解析器,因此它切掉了主要内容,只留下了注释,因为我认为注释是主要内容。很难理解如何处理接收到的数据,如何显示它。这里只想到现有的方法:HTML模板,PHP和SQL。而且,如果NodeJS上的浏览器已经在做,为什么不将PHP添加到浏览器中的其中一项功能呢?我不喜欢这种语言,但是进入该语言的门槛很小,在无法使用一些简单模板的地方,人们将可以使用该语言进行编程(或其他任何语言,请参见下文)。类似于此页面的生成使我想起了古老的Aport Express-Aport搜索引擎的一个小程序,它的任务是直接在客户端上显示搜索结果,从而减少随后使用的拨号流量。如果有人想沉浸在历史中,那么您可以在web.archive.org/web/20010124043000/http上阅读:// //www2.aport.ru:80 / aexpress /,然后在web.archive.org/web/20040627182348/http上下载://www.romangranovsky.narod.ru:80 / aexpress.exe横幅和追踪器
不,广告本身不再使我烦恼:在网络存在的这些年中,我发展出横幅盲目性,这是因为我根本看不到“突出位置”中的块以及以某种非标准字体或简单地写成的块用大写字母表示。有时会变得很荒谬-我已经在寻找“注册”,“下载”或“新主题”按钮了很长一段时间,因为它们既大又醒目,但我只是没有注意到它们。有时,直到他们给我发送带圆圈按钮的屏幕截图。这不是交通或速度的问题。今天,这是一个安全问题,因为首先,横幅广告是**可执行**代码,这意味着它不仅是所谓的“目标”和所有内容跟踪的个人数据泄漏,而且实际上这只是一个安全漏洞,通过它您可以填写一个sploit或一个矿工。如果以前可以说“不要去色情网站,一切都会好起来”,那么现在“色情网站”已经内置在几乎每个网站的每个页面上。但是跟踪器给我带来了特别的痛苦,而且,活跃的跟踪者不断地在页面上工作。我可以把Yandex.Metrica当作这样的例子;一切都太慢了。禁止所有Yandex领域是值得的,我的生活充满幸福,因为这些站点突然停止刹车,我什至不再考虑升级铁质。当我为某人建立系统时,Yandex域禁令是我要做的第一件事。人们一点也不损失任何东西,但是浏览速度却提高了一个数量级。解决方案非常简单:可以为站点指定“友好域”并关闭对其他所有请求的功能。通过这种方式,您可以使用请求策略或等效策略来剪切广告,与AdBlock形状的切割器不同,该策略几乎可以在每个网站上使用,不需要订阅,即使该网站遭到了黑客攻击并且上面放置了许多恶意代码也将有所帮助。我在那里听到尖叫声,削减广告会减少作者的收入?不要忘记,很长一段时间以来没有人支付显示横幅的费用。展示_me_广告是没有意义的,它只会花费我的访问量和服务器访问量,而不会给作者带来一分钱。但这只会让我生气。一次,我为特别杰出的站点编写了一组实用程序。如果您忍受了个人数据的收集/泄漏,并且用户同时感到生气,那么我建议您安装类似AdNauseam扩展程序之类的东西。可能是Google禁止的唯一阻止广告扩展。此扩展程序的本质非常简单:它单击每个元素以隐藏模式进行阻止,即 没有向用户显示任何内容。广告客户可以随心所欲地获得他们期待已久的点击次数。而且,如果您单击每个横幅,则泄漏的个人数据将与一堆垃圾混合在一起,因为它们将不符合用户的真实偏好。定向和跟踪变得毫无用处。很好的扩展。和一个绝妙的主意。广告(目标资料)
谴责?建议!是的,我谴责收集目标数据的做法,尤其是在监视和类似(对我而言)不良技巧的帮助下。为什么不直接在浏览器中输入定位数据?我会告诉自己所有事情,我不需要任何监视和病毒:性别:男性年龄: 55岁学历:次要特殊爱好:拳交,BDSM,人妖,贞操器具,防毒面具呼吸控制住所: Ust的Klyuchi (定居点) -Kamchatka Krai的Kamchatsky区商店中的最后检查: 28卢布(一条面包)财务状况:没钱,我依靠零花钱和个人花园生活对免费产品的态度:我对可口可乐发表了负面评论,在社交网络上有一个个人资料:没有,也不会有信用卡:没有,不会,并且考虑到我的个人资料,我期待着我可以使用的优惠。我非常清楚,发布商需要通过购买另一架飞机或别墅来赚钱并在困难时期生存,但是他们还需要了解用户,因为他们无论如何都无法获得广告的帮助。我也很清楚,所有广告都不能被切断,因此我适合有针对性的广告,它的轮廓很容易提供。而且没有横幅。我还希望有一种针对泄漏广告的用户评级机制。例如,我在我心爱的Creosan的频道Youtube上打开了一个视频,然后Creosan本人开始谈论那里的一些赌场。我很乐意用广告突出显示该区域,并将该区域的数据发布为“广告”,以便以后其他用户可以轻松跳过此类广告。有时,在文章本身的文本中会发现广告,并且文章作为一个整体是伪装的广告。我对阅读此类文章感到非常不愉快,因此我很乐意将其标记为“广告”。内置代理/ VPN支持
不幸的是,一些愚蠢的人为我决定了我可以使用该服务还是该服务,并且他们是根据我出生/居住的国家来决定的。不仅是网站(对Google Play的悲哀)。例如,仅当我居住在美国时才能使用Spotify,但如果我不居住在美国则可以使用Advcash服务。当然,如果您出生时不走运,那么就不必在落后的国家种植植物,理论上您可以去正确的国家,但我不知道如何同时在两个国家生活。解决方案:内置VPN机制,并且必须为每个站点分别进行完全配置。对于某人,我只会是德国人,对于某人是美国人,我会从提供较低价格的国家购买商品。为什么不购买普通的VPN并使用它,为什么将其全部拖到浏览器中呢?然后,只有浏览器才能将一个站点与另一个站点分开,从而分隔每个选项卡。如果我们通过系统VPN路由所有流量,那么如果我们忘记这样做,我们将需要不断进行交换,或者有时会遇到断开连接和禁令。外挂程式
有时切成小块的内容会出现。例如,它可以是卫星地图或照片。原则上,今天可以从浏览器中将其选中,但是下一步是什么?观看单个图块很不方便。要胶水?什么和如何?当然,我可以编写一个蛮力文件,该文件将比较图块的边缘并寻找无缝粘合的选项,但是在这里您可能会犯一个错误,并且如果浏览器还保存了有关与其他图块相对的位置和哪个图块的信息,则粘合将很快并且完美无缺!您可以直接从缓存或当前页面附加方便的图块导出!而且我不想在每个站点上发明并输入登录名/密码,而是想指定一些随机的Seed,从中生成特定站点的登录名和密码。例如,我指定行“ soMeRanDOooo0MStr11nng”,当我转到example.com时,这两行连接并创建一个UID,您可以基于该UID生成任何内容,包括登录名/密码(甚至更好的是,所有剩余的个人信息,以便只需单击一下就可以注册,而无需使用fakenamegenerator,就不会想到除了Sergey之外还有什么其他名称)。并且能够在bugmenot上弄乱这些密码。顺便说一下,这样的生成器已经在Safari中了!换句话说,浏览器应提供灵活的插件机制。此外,插件应位于浏览器内部,以便您可以钩住浏览器的几乎所有部分,而不是像在工具栏内加载页面或按钮后注入JS一样。当然,我想用C编写插件,在页面处理速度上的折衷是无法接受的。浏览器零件即服务
几乎每个浏览器都有一个用于下载文件的实用程序。这是一个带有歪曲界面的东西,它将文件下载到一些无法理解的目录,不知道如何恢复,然后还说已在文件内部检测到病毒。但是,最重要的是,它是浏览器的一部分,这意味着它使用cookie和其他会话属性。这意味着通过登录到站点,我们将不再需要挑选cookie以便将它们放入wget或curl中。浏览器本身可以充当这样的实用程序,完全支持当前会话。这意味着我们可以使用一个单一的代码库以及与主浏览器代码的较差的连接性,一开始就可以开发网络子系统和这样的临时卷曲,但稍后将进行更多开发。几乎每个浏览器都有一个原始文件列表器,可以显示本地目录目录的内容。它做起来很歪,但通常总比没有好。但是老歌剧能够使用户之间的文件混乱,甚至有一个带有冰箱的应用程序都可以绘制。是的,你们确实做了未来。他们稍微超越了他。浏览器可能有一个电子邮件客户端,可以很好地从命令行使用它,并提供详细的历史记录。这将使许多任务实现自动化,从垃圾邮件处理到发出提醒。提醒可以从内置的RSS服务中获取。零件浏览器
编写整个浏览器是一项相当复杂的任务。此外,当他们听到“浏览器”一词时,甚至没有想到很多事情,例如下载文件,RSS阅读器或电子邮件客户端。这些应用程序至少可以单独编写,可以采用完整的应用程序形式,可以采用与现有应用程序绑定的形式,甚至可以作为某些脚本语言中几百行的临时解决方案。网络也可以移到单独的守护程序。在附近,您可以取出DNS解析器,该解析器具有内置的域黑名单和自动更新黑名单列表,用于缓存内容的子系统以及许多其他功能。甚至可以像在Opera Mini中一样将渲染带到一个单独的过程中(并且可以使用合并的源完成此操作,因为该代码甚至不直接进入项目,而是第三方的“插件”,因此许可证的纯度也得以保留)。github.com/browsh-org/browsh-在这里,furefox引擎在vpsk中呈现,并且已经呈现的引擎以文本和文本伪图形的形式发送给您-看起来非常酷,您甚至可以观看视频最初,所有这些功能都可以实现为独立的微服务,一个开发人员用Java编写,另一个开发人员用python编写,第三个开发人员用Ruby编写,他们不需要吵架,只需选择技术堆栈即可。毕竟,每个人都熟悉这样的情况:有人因刹车而无法想象Java浏览器,有人因担心漏洞而害怕Sishku,有人想尝试时髦的Go并为此而烦恼?在这里,每个人都可以为自己选择一小部分,并严格地对此做出回答,只需要在通信协议上达成一致即可。而且,如果某些零件工作不佳,那么最后只需更换它们即可。或者采用现有的解决方案并对其进行调整,以实现更紧密的集成,就像在Arachne浏览器中所做的那样。甚至渲染器也可以在单独的过程中执行,并且仅传输信息以进行显示。首先,您可以从w3m / links / netsurf中获取现有代码,然后那些想要的人可以从Gecko / Servo / Blink中附加可切换的模式。当然,应该编写大量的插件。您只需要书签,包括通过云或推荐服务同步的书签,带有预览功能的多级选项卡以及基于神经网络的表单自动完成功能。也许有人手头有多线程文件下载的源(或者有人在github上看到了类似的东西),谁可以立即开始将此代码移植到新平台上?当然,在这里您可以遵循旧的原则:让每个程序都做一件事,但是要做好。浏览器是与网络配合使用的非常复杂的程序集,因此整个系统也很复杂。那么,将浏览器拆分成最大数量的零件,以确保每个零件的质量和可靠性是否容易?插件作为保证功能
某些插件可以在安装中设为默认。例如,用于提供选项卡,下载文件的插件,用于具有自动完成功能,绒球和龙的地址栏的插件等已在任何浏览器中。但是,我建议走得更远,并在默认交付中增加一些内容。当然,这是一条通往我们Bloatware的湿滑道路,但我认为,您不应该害怕进行试验(当然,不是Mozilla这样做的方式,它包括来自不同联属程序的有漏洞的扩展,没有断开连接的可能)。例如,您还记得IE6中像“讨论”这样晦涩的按钮吗?它在安装MS-office之后出现,几乎无法正常工作,因为它需要服务器端SharePoint才能工作。但这很棒:当您单击它时,会打开一个工具栏,您可以通过它在页面中添加评论,但仍然有一些树状的聊天室(尽管我已经记不起了,但我无法用Google搜索它),并且它可以在任何页面上使用。试想一下:在任何站点上发表评论,而无需引起作者的注意,您可以在其中直接大胆地表达自己对任何站点的想法。我相信这样的插件只是我们浏览器捆绑包中的必需品。再举一个例子:许多网站在行车路线页面上打开Google Maps或Yandex Maps,这被认为是一种很好的做法,甚至没有人问隐私问题,而且也没有问用户我是否要让第三方组织知道什么对象您对这座城市感兴趣吗?可以切割此类物品,并用OSM卡甚至本地存储卡替换。没有人会费心下载完整的OSM转储并制作本地地图,如今在磁盘上一到两个千兆字节几乎没有任何意义。总结
这是我对完美浏览器的愿景。当然,还没有写完一切:复制,多级表单和用户数据保护的主题未涵盖在内,有关业务模型或吸引项目赞助者的方式没有任何内容。而且需要赞助商,因为很少有人会带来一些有用的东西来免费从事如此大量的工作。没有描述如何保护自己免受赞助商利益的影响,因为在输出处,我们可以得到另一个带有遥测插件的Firefox,用于通知遥测断开。但是在现阶段,创建完美浏览器最重要的是人。写下您的想法,想法,如果您可以使用代码或布局来帮助项目,请随时提供帮助。对上述思想和思想的批评尤其令人关注。也许,如果不是我本人,那么阅读此文本的人将能够编写一个不错的浏览器。我一年前开始写这篇文章,作为对其他主题的回答,我打算安排众筹,但是生活的喧嚣却分散了人们的注意力,因为我按原样出版,以供其他人考虑。该文本可在Public Domain许可下获得,您可以在任何地方自由分发。也许通过这种方式,我们(一般人)将能够获得至少使用起来更方便的浏览器。