请求51cto下载-自己动手编写一个浏览器_分享c 项目开发案例

淘米浏览器  时间:2021-01-26  阅读:()

自己动手编写一个浏览器

实例目标

在这一章我们使用微软提供的浏览器COM组件来编写一个Internet浏览器。 自己编写浏览器的好处就是可以实现一些扩展功能。在这章中我们将扩展我们的程序实现网站过滤、浏览记录和防止弹出广告窗口的功能。

在本章的后一部分我们将使用HttpWebRequest和HttpWebResponse组件来实现浏览网页源码的功能。最后我们还利用这个组件实现了网上文件的下载、上传等功能。

主要内容

 HTTP协议

 网页浏览器

 定制扩展浏览器功能

 WebRequest类

 网页源代码浏览

3.1 实例功能

我们首先要浏览器程序。这个实例可以实现简单的浏览器功能如图3-1。在编辑框中输入URL地址然后按GO按钮就可以实现浏览网页的功能如图3-2。

图3-1 浏览器程序 图3-2 浏览器程序效果

在我们的浏览器中您同样可以使用“主页” 、“刷新” 、“前进” 、“后退” 、“停止”按钮完成相应的浏览功能。

接下来我们为自制的浏览器程序添加几个扩展功能。禁止用户访问某些特殊站点如图3-3。

图3-3 禁止用户访问不良网站 图3-4 记录用户访问过的网站

接下来还实现了记录用户访问过的网站及时间这对于比较重要的工作站或公司都是很好用的监督、管理办法。其效果如图3-4。

最后如果你想杜绝弹出式广告窗口如图3-5对你的骚扰可以使用本章实例介绍的第三个扩展办法效果如图3-6。

第三章 浏览器程序 37

图3-5 弹出式广告窗经常骚扰我们 图3-6 免除弹出式广告窗的骚扰

本章的第二个实例是浏览网页的源代码如图3-7。

图3-7 网页源代码浏览程序 图3-8 浏览源代码效果

只要输入网址然后按回车或点击“源码”按钮就可以看到该网页传回来的源代码如图3-8。

3.2 编程思路

如果1995年的时候你掌握了浏览器的编程技术那您无疑是一个网络先锋、编程圣手。然而时至今日 浏览器编程已经算不上有什么技术含量了。编写浏览器的技术从商业机密到代码公开再到现在的组件模块化已经慢慢的从一项科技技术过渡到一项商业产品。我们只需要利用这些“半成品”就可以开发出自己的浏览器。说白了就是给实现浏览功能的核心模块穿上一层外衣并规定了它的一些动作。

那么我们还学习浏览器编程有什么用呢又没有什么技术含量而且现在浏览器到处都能免费下载为什么还要自己去做一个笔者的答案是大大的有必要学习浏览器编程技术。因为在Internet迅速普及的今天浏览器操作无疑已经成为继Windows之后第二个标准化操作平台。可以说现在会上网的人 99%会使用 Internet浏览器这是一个比Windows

更为广泛的操作平台。在这个“协议为王、平台为王” 的世界大家都争先恐后的使自己的产品与主流的平台兼容。 因为这样可以大大节省软件的使用培训费用而且利于软件的迅速推广。例如我们可以开发一套软件您可以标新立异的想出许多方便的用户界面例如点击鼠标右键就可以退出程序。但这并不符合Windows的用户习惯这样不管你的软件有多么方便在推广的时候必然会因为用户习惯问题受到很大的阻力。苹果公司的电脑与Linux主要就是因为这个原因没有得到普及。好在Internet浏览器来了可以打破微软在用户界面上的垄断。浏览器的超链接方式比Windows更为直观、更为方便。说到这里您应该明白使应用程序的操作界面符合浏览器界面方式有什么好处了吧。用户会觉得更亲切、更好用、更好学。

学习浏览器编程的另一个好处就是给你的应用程序添加了一个网络接口。随着Internet日渐普及的今天网络接口已经成为标准商用程序的必备。支持用户访问主页、在线帮助、在线升级已经成为了商业软件的标准组成模块。在程序中嵌入一个浏览器接口无疑使这些功能可以很方便的实现。例如超星图书馆的客户端程序中就提供浏览网页的功能您可以方便的在网络上找到想看的书。而腾讯公司的Tecent浏览器相信更是大名鼎鼎它把所有的IE窗口合并到一个主窗口下使浏览网页更为方便。

那么怎么样才能方便的使自己的应用程序添加浏览功能呢我们并不想费太多的时间弄清楚HTTP协议的实现细节我们只想对浏览器的外观进行一些改动并且对浏览器的行为进行一些设置或限制。显然微软已经注意到程序员们的这一急切的需求所以在Visual C#之中我们可以使用现成的浏览器COM组件然后对这个COM组件进行简单的设定就可以实现网页浏览的功能了。

第三章 浏览器程序 39

利用这个COM组件再结合上我们的需求我们可以因地制宜的拓展浏览器的功能。例如在本章介绍的防止用户进入不良网站的应用之中就是利用了 COM 组件的BeforeNavigate2事件接口。

最后我们再利用.NET平台提供的HttpWebRequest和HttpWebResponse组件实现网页源代码的浏览和网上文件的上传和下载。这两个组件是.NET框架中专门针对HTTP协议的通过它们我们可以方便的处理各种HTTP协议的数据。

3.3 关键技术

3.3.1 HTTP协议

众所周知 Internet的基本协议是TCP/IP协议 目前广泛采用的FTP、Archie Gopher等是建立在TCP/IP协议之上的应用层协议不同的协议对应着不同的应用。

WWW服务器使用的主要协议是H T T P协议即超文体传输协议。由于H TT P协议支持的服务不限于WWW还可以是其它服务因而H T T P协议允许用户在统一的界面下采用不同的协议访问不同的服务如FTP、Archie、 SMTP、 NNTP等。另外HTTP协议还可用于名字服务器和分布式对象管理。

HTTP协议简介

HTTP是一个属于应用层的面向对象的协议由于其简捷、快速的方式适用于分布式超媒体信息系统。它于1990年提出经过几年的使用与发展得到不断地完善和扩展。 目前在WWW中使用的是H T T P/1.0的第六版HT T P/1 .1的规范化工作正在进行之中而且HTTP-NG(NextGeneration of HTTP)的建议已经提出。

HTTP协议的主要特点可概括如下

 支持客户/服务器模式。

 简单快速客户向服务器请求服务时只需传送请求方法和路径。请求方法常用的有GET、 HEAD、 POST。每种方法规定了客户与服务器联系的类型不同。

由于HTTP协议简单使得HTTP服务器的程序规模小因而通信速度很快。 灵活HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 无连接无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后即断开连接。采用这种方式可以节省传输时间。

 无状态HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息则它必须重传这样可能导致每次连接传送的数据量增大。另一方面在服务器不需要先前信息时它的应答就较快。

HTTP协议的几个重要概念

 连接(Connection) 一个传输层的实际环流它是建立在两个相互通讯的应用程序之间。 消息(Message) HTTP通讯的基本单位包括一个结构化的八元组序列并通过连接传输。

 请求(Request) 一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号

 响应(Response) 一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到” )和文档的MIME类型。

 资源(Resource) 由URI标识的网络数据对象或服务。

 实体(Entity) 数据资源或来自服务资源的回映的一种特殊表示方法它可能被包围在一

第三章 浏览器程序 41

个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。

 客户机(Cl ient) 一个为发送请求目的而建立连接的应用程序。

 用户代理(User agent) 初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。

 服务器(Server) 一个接受连接并对请求返回信息的应用程序。

 源服务器(Origin server) 是一个给定资源可以在其上驻留或被创建的服务器。 代理(Proxy) 一个中间程序它可以充当一个服务器也可以充当一个客户机为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前必须解释并且如果可能重写它。

 代理经常作为通过防火墙的客户机端的门户代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。

 网关(Gateway) 一个作为其它服务器中间媒介的服务器。与代理不同的是网关接受请求就好象对被请求的资源来说它就是源服务器发出请求的客户机并没有意识到它在同网关打交道。网关经常作为通过防火墙的服务器端的门户网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。

 通道(Tunnel) 是作为两个连接中继的中介程序。一旦激活通道便被认为不属于HTTP通讯尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时通道便消失。 当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。

 缓存(Cache) 反应信息的局域存储。

HTTP协议的运作方式

HTTP协议是基于请求响应范式的。一个客户机与服务器建立连接后发送一个请求给服务器请求方式的格式为统一资源标识符、协议版本号后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后给予相应的响应信息其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码后边是MIME信息包括服务器信息、实体信息和可能的内容。

许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。如图3-8。

请求链

Computer Computer2

图3-8 H TT P的请求响应方式

当一个或多个中介出现在请求响应链中时情况就变得复杂一些。 中介由三种代理(Proxy)、 网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求重写全部或部分消息通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理作为一些其它服务器的上层并且如果必须的话可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如防火墙等)或者是中介不能识别消息的内容时通道经常被使用。

第三章 浏览器程序 43

Computer1 Computer2 Computer3 Computer4

图3-9 H TT P协议请求响应链

上面的图3-9表明了在用户代理(UA)和源服务器(O)之间有三个中介(A,B和C)。一个通过整个链的请求或响应消息必须经过四个连接段。这个区别是重要的因为一些HTTP通讯选择可能应用于最近的连接、没有通道的邻居应用于链的终点或应用于沿链的所有连接。尽管图2-2是线性的每个参与者都可能从事多重的、并发的通讯。例如B可能从许多客户机接收请求而不通过A并且不通过C把请求送到A在同时它还可能处理A的请求。

任何针对不作为通道的汇聚可能为处理请求启用一个内部缓存。缓存的效果是请求响应链被缩短条件是沿链的参与者之一具有一个缓存的响应作用于那个请求。图3-10说明结果链其条件是针对一个未被UA或A加缓存的请求B有一个经过C来自O的一个前期响应的缓存拷贝。

请求链

Computer1 Computer2 Computer3 Computer4

图3-10 结果链

在Internet上HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80 但其它

弘速云20.8元/月 ,香港云服务器 2核 1g 10M

弘速云元旦活动本公司所销售的弹性云服务器、虚拟专用服务器(VPS)、虚拟主机等涉及网站接入服务的云产品由具备相关资质的第三方合作服务商提供官方网站:https://www.hosuyun.com公司名:弘速科技有限公司香港沙田直营机房采用CTGNET高速回国线路弹性款8折起优惠码:hosu1-1 测试ip:69.165.77.50​地区CPU内存硬盘带宽价格购买地址香港沙田2-8核1-16G20-...

速云:深圳独立服务器,新品上线,深港mpls免费体验,多重活动!

速云怎么样?速云是一家国人商家。速云商家主要提供广州移动、深圳移动、广州茂名联通、香港HKT等VDS和独立服务器。目前,速云推出深圳独服优惠活动,机房为深圳移动机房,购买深圳服务器可享受5折优惠,目前独立服务器还支持申请免费试用,需要提交工单开通免费体验试用,次月可享受永久8折优惠,也是需工单申请哦!点击进入:速云官方网站地址活动期限至 2021年7月22日速云云服务器优惠活动:活动1:新购首月可...

远程登录VNC无法连接出现

今天有网友提到自己在Linux服务器中安装VNC桌面的时候安装都没有问题,但是在登录远程的时候居然有出现灰色界面,有三行代码提示"Accept clipboard from viewers,Send clipboard to viewers,Send primary selection to viewers"。即便我们重新登录也不行,这个到底如何解决呢?这里找几个可以解决的可能办法,我们多多尝试。...

淘米浏览器为你推荐
苹果x和xr哪个好iphone X和iphone XR哪个比较好?买哪个合适?电脑管家和360哪个好电脑管家和360卫士哪个好?音乐播放器哪个好最好的音乐播放器是什么手机管家哪个好手机管家哪个好辽宁联通网上营业厅网中国联通的初始服务密码一般是多少辽宁联通营业厅请问辽宁鞍山最大的联通营业厅在哪dns服务器未响应DNS服务器未响应是什么意思?首选dns服务器地址什么是首选DNS服务器,备用DNS服务器?是电脑还是什么?dns服务器故障DNS服务解析故障 怎么办电信dns服务器地址电信光纤的dns地址怎么设置
子域名查询 西安服务器租用 河南vps 3322免费域名 备案域名出售 万网域名证书查询 主机测评网 轻博客 NetSpeeder lighttpd 美国php空间 美国十次啦服务器 双十一秒杀 100mbps 爱奇艺vip免费领取 无限流量 ebay注册 国外代理服务器 pptpvpn g6950 更多