CN102982169B - 用于隔离网页插件的浏览器和方法 - Google Patents

用于隔离网页插件的浏览器和方法 Download PDF

Info

Publication number
CN102982169B
CN102982169B CN201210537541.9A CN201210537541A CN102982169B CN 102982169 B CN102982169 B CN 102982169B CN 201210537541 A CN201210537541 A CN 201210537541A CN 102982169 B CN102982169 B CN 102982169B
Authority
CN
China
Prior art keywords
plug
unit
page
browser
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210537541.9A
Other languages
English (en)
Other versions
CN102982169A (zh
Inventor
杨晓兵
任寰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201210537541.9A priority Critical patent/CN102982169B/zh
Publication of CN102982169A publication Critical patent/CN102982169A/zh
Application granted granted Critical
Publication of CN102982169B publication Critical patent/CN102982169B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及互联网技术领域,公开了一种用于隔离网页插件的浏览器和方法,所述方法包括获取页面加载过程中待加载的页面中插件的类型;为相同类型的页面中插件创建一独立于浏览器进程的插件进程;在该独立的插件进程中为各个相同类型的页面中插件创建一线程以运行所述页面中插件;当所述页面中插件所在的浏览器标签页关闭时,则关闭所述页面中插件的线程,并释放所述线程占用的内存空间。本发明通过使不同类型的网页插件分别运行在与浏览器进程独立的不同的进程中,由此解决了由于插件崩溃导致的选项卡(或标签页)崩溃或甚至整个浏览器崩溃的问题,取得了使浏览器运行更稳定的有益效果。

Description

用于隔离网页插件的浏览器和方法
技术领域
本发明涉及互联网技术领域,具体涉及一种用于隔离网页插件的浏览器及用于隔离网页插件的方法。
背景技术
浏览器是指可以显示网页服务器或者文件系统的HTML文件内容,并让用户与这些文件交互的一种软件。网页浏览器主要通过HTTP协议与网页服务器交互并获取网页,这些网页由URL指定,文件格式通常为HTML格式,并由多媒体文件格式MIME在HTTP协议中指明。一个网页中可以包括多个文档,每个文档都是分别从服务器获取的。大部分的浏览器本身都支持除了HTML之外的其它广泛的格式,例如:JPEG、PNG、GIF等图像格式,并且能够扩展支持众多的插件(plug-ins)。另外,许多浏览器还支持其他的URL类型及其相应的协议,如:FTP、Gopher、HTTPS(HTTP协议的加密版本)。HTTP内容类型和URL协议规范允许网页设计者在网页中嵌入图像、动画、视频、声音、流媒体等。个人电脑上常见的网页浏览器包括微软的InternetExplorer、Mozilla的Firefox、Apple的Safari,Opera、Google Chrome、GreenBrowser浏览器、360安全浏览器、搜狗高速浏览器、天天浏览器、腾讯TT、傲游浏览器、百度浏览器、腾讯QQ浏览器等,浏览器是最经常使用到的客户端程序。
ActiveX在广义上是指微软公司的整个COM架构,但是现在通常用来称呼基于标准COM接口来实现对象连接与嵌入的ActiveX控件(在浏览器中通常作为插件被加载)。后者是指从VBX发展而来的,面向微软的InternetExplorer技术而设计的以OCX为扩展名的OLE控件。通过定义容器和组件之间的接口规范,如果编写了一个遵循规范的控件,那么可以很方便地在多种容器中使用而不用修改控件的代码。同样,通过实现标准接口调用,一个遵循规范的容器可以很容易地嵌入任何遵循规范的控件。由于OLE在ActiveX控件中的应用的普及,现在OLE技术中只有少数独立于ActiveX技术,例如复合文档。
一些浏览器,例如Internet Explorer、网景浏览器等等都不同程度上支援ActiveX控件。这允许网页通过脚本和控件交互产生更加丰富的效果,但同时也带来一些安全性的问题,如:控件的崩溃通常会导致浏览器程序崩溃。
为了应对浏览器经常出现崩溃的现象,现在很多浏览器厂商都采用了多进程标签浏览的概念,其中包括IE8、Chrome、Firefox等浏览器,而众多基于WebKit的浏览器在苹果发布WebKit2内核以后已经采用多进程标签浏览这个功能。因为在浏览器中添加多进程浏览功能之后,即使是浏览器其中的一个进程出现了崩溃现象,也不会牵连到其他浏览器窗口,从而有效的避免了整个浏览器的假死。
在最新一代浏览器IE8中,微软添加了被称为“Loosely-Coupled IE(LCIE)”的架构(http://www.iefans.net/liulanqi-duojincheng-duibi-jiance)。通过Loosely-Coupled IE(LCIE)架构,IE8将主要的浏览进程与渲染进程相隔离。主要的进程处理浏览器、用户界面和框架(窗口),用于存储选项卡(即标签页)。IE8中的某些选项卡是运行在相同的进程中的,不过不同安全级别的选项卡是相互分开的,即运行在不同的进程中。ActiveX控件是通过选项卡进程进行处理的。
在上述的IE浏览器的多进程架构中,虽然选项卡是被分类在不同的进程中从而形成了多进程的架构的,而且在各个进程中ActiveX控件是通过选项卡进程进行处理的。但是在同一个进程中的选项卡中的不同类型的ActiveX插件的都是运行在一个进程中,由于各种不同的ActiveX插件出现崩溃的概率是各自不同的,而且各个插件的情况各不相同,仍旧会导致其所在进程的崩溃,即相应的选项卡会崩溃。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的用于隔离网页插件的浏览器及用于隔离网页插件的方法。
依据本发明的一个方面,提供了一种用于隔离网页插件的浏览器,包括:
插件类型获取器,适于获取页面加载过程中待加载的页面中插件的类型;
插件进程创建器,适于为相同类型的页面中插件创建一独立于浏览器进程的插件进程;
插件线程创建器,适于在该独立的插件进程中为各个相同类型的页面中插件创建一线程以运行所述页面中插件;
线程释放器,适于当所述页面中插件所在的浏览器标签页关闭时,则关闭所述页面中插件的线程,并释放所述线程占用的内存空间。
可选地,所述插件类型获取器包括:
类型ID解析器,适于解析待加载页面中对应的网页元素,从中解析出标识所述待加载的页面中插件的唯一ID,从而获取待加载的页面中插件的类型。
可选地,所述插件类型获取器进一步包括:
类型ID拦截器,适于拦截CoGetClassObject函数,获取被调用的所述待加载的页面中插件的唯一ID。
可选地,所述插件进程创建器进一步包括:
进程查询器,适于查询所述页面中插件的类型的插件进程是否已创建;
进程创建器,适于未创建插件进程,或已创建的插件进程中线程数达到线程阈值或当前内存占用达到预定配额时为该类型的所述页面中插件创建新插件进程,并更新所述页面中插件的类型的进程信息列表。
可选地,所述进程创建器进一步适于根据待加载页面的类型设置该页面中不同类型插件的进程优先级,按所述进程优先级依次创建相应页面中插件的插件进程。
可选地,所述进程创建器进一步包括:
新进程生成器,适于生成一个具有唯一进程ID的新插件进程,并为其分配所述预定配额的内存空间;
新进程配置器,适于设置所述新插件进程所属的页面中插件的类型、线程阈值、线程信息列表。
可选地,所述浏览器还包括:
进程判断器,适于判断与所述浏览器进程独立的页面中插件的类型的进程数是否到达进程阈值,若未达到,则为该类型的所述页面中插件创建新插件进程。
可选地,所述浏览器还包括:
进程通信器,适于所述页面中插件的类型的插件进程与浏览器进程之间通过互斥锁实现进程通信的互斥。
根据本发明的另一方面,提供了一种用于隔离网页插件的方法,包括步骤:
获取页面加载过程中待加载的页面中插件的类型;
为相同类型的页面中插件创建一独立于浏览器进程的插件进程;
在该独立的插件进程中为各个相同类型的页面中插件创建一线程以运行所述页面中插件;
当所述页面中插件所在的浏览器标签页关闭时,则关闭所述页面中插件的线程,并释放所述线程占用的内存空间。
可选地,所述获取页面加载过程中待加载的页面中插件的类型的步骤包括:
解析待加载页面中对应的网页元素,从中解析出标识所述待加载的页面中插件的唯一ID,从而获取待加载的页面中插件的类型。
可选地,进一步包括:
拦截CoGetClassObject函数,获取被调用的所述待加载的页面中插件的唯一ID。
可选地,所述为相同类型的页面中插件创建一独立于浏览器进程的插件进程包括:
查询所述页面中插件的类型的插件进程是否已创建;
若未创建,或已创建的插件进程中线程数达到线程阈值或当前内存占用达到预定配额,则为该类型的所述页面中插件创建新插件进程,并更新所述页面中插件的类型的进程信息列表。
可选地,所述为该类型的所述页面中插件创建新插件进程的步骤包括:
根据待加载页面的类型设置该页面中不同类型插件的进程优先级;
按所述进程优先级依次创建相应页面中插件的插件进程。
可选地,所述为该类型的所述页面中插件创建新插件进程的步骤进一步包括:
生成一个具有唯一进程ID的新插件进程,并为其分配所述预定配额的内存空间;
设置所述新插件进程所属的页面中插件的类型、线程阈值、线程信息列表。
可选地,所述为该类型的所述页面中插件创建新插件进程的步骤之前还包括:
判断与所述浏览器进程相独立的页面中插件的类型的进程的数目是否到达进程阈值,若未达到,则为该类型的所述页面中插件创建新插件进程。
可选地,所述页面中插件的类型的插件进程与浏览器进程之间通过互斥锁实现进程通信的互斥。
根据本发明的用于隔离网页插件的浏览器及用于隔离网页插件的方法可以使不同类型的网页插件分别运行在与浏览器进程独立的不同的进程中,由此解决了由于插件崩溃导致的选项卡(或标签页)崩溃或甚至整个浏览器崩溃的问题,取得了使浏览器运行更稳定的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的用于隔离网页插件的浏览器结构示意图;
图2示出了图1中进程创建器的具体结构示意图;
图3示出了应用实例中用于管理进程和线程的类的数据结构示意图;
图4示出了在浏览器中打开三个标签页并加载Flash、BD Player和Qvod插件的实例图;
图5示出了根据本发明一个实施例的用于隔离网页插件的方法流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为了避免由于插件崩溃导致的选项卡(或标签页)崩溃或甚至整个浏览器崩溃的问题,本实施例提供的用于隔离网页插件的浏览器结构如图1所示,包括:插件类型获取器110、插件进程创建器120及插件线程创建器130。
插件类型获取器110适于获取页面加载过程中待加载的页面中插件的类型。若待加载的网页中存在插件(即网页中插件),则网页源代码对应的网页元素中会以不同的类型ID,即CLSID来区分不同类型的网页中插件,因此,该插件类型获取器110包括一类型ID解析器111,通过解析网页元素中插件的唯一ID,从而获取待加载的页面中插件的类型。例如需要加载flash object对象,如下的网页源代码例子:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"width="360"height="210">。
类型ID解析器111通过识别关键字clsid很容易解析出插件对象的类型,从而使浏览器很容易判断出采用哪种类别的插件来加载该插件对象。
获取到clsid后,浏览器会加载网页中插件的插件进程(如上述flash进程),进一步地,插件类型获取器110还包括类型I D拦截器112,适于拦截CoGetClassObject函数,从而hook住被调用的待加载的网页中插件,获取被调用的待加载的页面中插件的clsid。通过hook到clsid后,便可加载网页中插件的插件进程。
插件进程创建器120适于为相同类型的页面中插件创建一独立于浏览器进程的插件进程。即为了避免由于插件崩溃导致的选项卡(或标签页)崩溃或甚至整个浏览器崩溃的问题,该插件进程创建器120为不同类型的插件创建不同的进程,且都独立于浏览器进程,如:根据Flash、baidu player、Qvod插件的CLSID而创建不同的进程。
该插件进程创建器120具体包括:进程查询器121和进程创建器122。
由于一个浏览器可以有多个标签页,每个标签页中可能都有加载的插件对象,且类型可能相同,因此,后打开的标签页中待加载的插件对象对应的插件进程可能已被创建。进程查询器121通过查询进程管理器的进程列表判断当前待加载页面中插件对应类型的进程是否已创建。若未创建该插件进程,或已创建的插件进程中线程数达到线程阈值或当前内存占用达到预定配额时,进程创建器122为该类型的页面中插件创建新插件进程,并更新页面中插件的类型的进程信息列表。进程信息列表包括:新插件进程所属的页面中插件的类型、线程阈值(即进程中包含的最大线程数量)、线程信息列表等信息。其中,线程信息列表包括进程中当前已有的线程数及线程所对应的标签页等信息。
进一步地,进程创建器122在创建插件进程时,根据待加载页面的类型设置该页面中不同类型插件的进程优先级,并按所述进程优先级依次创建相应页面中插件的插件进程。例如对于视频网页中的视频的显示,就需要将该为flash插件建立的进程的优先级设的高一点。该进程优先级还会根据当前页面的类型和URL进行调整,从而高效地支持页面中的插件显示,优先生成对应的进程和线程。这里进程优先级同时也表示创建某类型插件的创建顺序的优先级,其中,对于某类型的页面,对其中不同类型插件创建进程的优先顺序的关系可通过配置文件的形式存储在浏览器的相应文件中,进程创建器122读取该配置文件,按该配置文件中的制定的顺序为不同类型的插件创建插件进程。
其中,进程创建器122具体结构如图2所示,包括:新进程生成器210和新进程配置器220。
新进程生成器210适于生成一个具有唯一进程ID的新插件进程,并为其分配预定配额的内存空间。
新进程配置器220适于设置新插件进程所属的页面中插件的类型、线程阈值、线程信息列表。
该内存空间为虚拟内存空间,大小通常为1GB,线程阈值为10,即一个插件进程包含10个该类型插件的线程,内存空间大小和线程阈值可根据实际情况设定。
插件线程创建器130适于在该独立的插件进程中为各个相同类型的页面中插件创建一线程以运行页面中插件。创建线程时在上述线程信息列表中的线程所对应的标签页的表项设置该线程对应的插件对象所属的标签页ID,以便关闭标签页时便于查找该标签页中所有的插件对象对应的线程,并将该这些线程关闭,释放线程所占用的进程的系统资源。
本实施例中,对于进程的创建,默认是可以最大地创建256个进程的,并发地同时在浏览器中开启256个进程很少出现,所以256这个上限满足浏览器的使用也满足目前系统硬件上的实际情况。因此,浏览器还包括:进程判断器140,在创建进程之前,该进程判断器140判断与浏览器进程独立的页面中插件的类型的进程数是否到达进程阈值(即256),若达到,则为该类型的页面中插件创建新插件进程。
由于不同类型插件的插件进行相互独立,且都与浏览器进程独立,在浏览器运行过程中,可能存在进程间对系统资源的占用的竞争。因此,本实施例中,还包括:进程通信器150,页面中插件的类型的插件进程与浏览器进程之间通过互斥锁(不限于该进程通信方式)实现进程通信的互斥。
为了有效管理进程所占用的系统资源,本实施例的浏览器还包括:线程释放器160,适于当页面中插件所在的浏览器标签页关闭时,则关闭所述页面中插件的线程,并释放所述线程占用的内存空间,以重新分配系统资源。
在实际应用中,构建一个Session MGR类来管理上述进程、线程的查询、创建及释放的过程,该类的数据结构如图3所示,Session MGR类会生产并管理一片大的虚拟内存(share memory database)其中的维系有每个插件类别的进程信息,如图3中,为该类的每个插件类别的对象数据结构示意图,其中有CLSID(插件类别ID)、proc_count(进程数量)、currentprocID(当前进程ID)、Proc[](进程信息数组)。
该Proc[]数组包括有如下信息:procID(进程ID)、Prio(进程优先级,未创建时为创建该进程的优先级)、Quota(进程的配额数量)、clsid(该进程对应的插件类别ID)、threadcount(进程中的线程数量)、Tids[](上述进程中的线程(也可以是标签页的id号,因为一个线程对应一个标签页)的信息的数组,其中保存有线程的信息)。其中,进程阈值、线程阈值可通过全局变量设定,如:线程阈值设定为10。
图4为浏览器中打开三个标签页并加载Flash、BD Player和Qvod插件的实例图。在打开每个标签页时,通过拦截CoGetClassObject函数,从而hook住标签页中插件,获取该页面中插件的clsid。获取插件的clsid后便由上述Session MGR根据不同的clsid创建不同的插件进程及其中的线程。如图4中,浏览器共加载了3个类型的插件,分别是Flash、BDPlayer和Qvod插件。当打开T1标签页时,加载Flash、BD Player插件,Session MGR根据其不同的clsid分别创建Flash进程1和BD Player进程1,并分别在其中创建相应的线程,之后按图3中的数据结构设置相应的信息,如设置进程中的线程数量为1。为了便于关闭标签页时便于查找该标签页中所有的插件对象对应的线程,创建线程时在Tids[]中设置该线程所对应的标签页ID(即对应插件所属标签页ID)的信息设置该线程所属的标签页ID,从图中可看出Flash线程T1和BD Player线程T1都属于标签页T1。
在打开标签页T2时,加载Flash、Qvod插件,Session MGR查询当前已创建Flash进程1,而且其中的线程数为1,未超过线程阈值10,则直接在已创建的Flash进程1中创建标签页T2对应Flash插件对象的线程,并设置该线程所对应的标签页为T2。如图4中Flash进程1中的两个Flash线程分别对应标签页T1和T2。在加载Qvod插件时,Session MGR查询当前未创建该类插件的进程,因此创建Qvod进程1,并在其中创建Qvod线程,并设置该Qvod线程所对应的标签页为T2。
打开标签页T3的过程和上述过程类似,此处不再赘述。其中,当进程中的线程数量超过10个且该进程的配额超过例如1G时,会自动生成一个新的进程来运行该类型插件的线程,如Flash进程1中线程超过10个,再加载Flash插件时,则创建Flash进程2,并在其中创建相应的Flash线程。
本实施例的浏览器通过获取待加载插件的clsid,并为不同类型的插件创建独立于浏览器进程的插件进程,使不同类型的网页插件分别运行在不同的进程中,由此解决了由于插件崩溃导致的选项卡(或标签页)崩溃或甚至整个浏览器崩溃的问题,取得了使浏览器运行更稳定的有益效果。
本发明还提供了一种用于隔离网页插件的方法,其流程如图3所示,包括:
步骤S510,获取页面加载过程中待加载的页面中插件的类型。若待加载的网页中存在插件(即网页中插件),则网页源代码对应的网页元素中会以不同的类型ID,即CLSID来区分不同类型的网页中插件,因此,通过解析网页元素中插件的唯一ID,从而获取待加载的页面中插件的类型。
例如需要加载flash object对象,如下的网页源代码例子:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"width="360"height="210">。
解析时通过识别关键字clsid很容易解析出插件对象的类型,从而使浏览器很容易判断出采用哪种类别的插件来加载该插件对象。
获取到clsid后,浏览器会加载网页中插件的插件进程(如上述flash进程),进一步地,通过拦截CoGetClassObject函数,从而hook住被调用的待加载的网页中插件,获取被调用的待加载的页面中插件的clsid。通过hook到clsid后,便可加载网页中插件的插件进程。
步骤S520,为相同类型的页面中插件创建一独立于浏览器进程的插件进程。即为了避免由于插件崩溃导致的选项卡(或标签页)崩溃或甚至整个浏览器崩溃的问题,为不同类型的插件创建不同的进程,且都独立于浏览器进程,如:根据Flash、baidu player、Qvod插件的CLSID而创建不同的进程。
该步骤S520具体包括:
查询进程管理器的进程列表判断当前待加载页面中插件对应类型的进程是否已创建。由于一个浏览器可以有多个标签页,每个标签页中可能都有加载的插件对象,且类型可能相同,因此,后打开的标签页中待加载的插件对象对应的插件进程可能已被创建。
若未创建,或已创建的插件进程中线程数达到线程阈值或当前内存占用达到预定配额,则为该类型的页面中插件创建新插件进程,并更新页面中插件的类型的进程信息列表。其中,进程信息列表包括:新插件进程所属的页面中插件的类型、线程阈值(即进程中包含的最大线程数量)、线程信息列表等信息。其中,线程信息列表包括进程中当前已有的线程数及线程所对应的标签页等信息。
进一步地,在创建插件进程时,根据待加载页面的类型设置该页面中不同类型插件的进程优先级,并按所述进程优先级依次创建相应页面中插件的插件进程。例如对于视频网页中的视频的显示,就需要将该为flash插件建立的进程的优先级设的高一点。该进程优先级还会根据当前页面的类型和URL进行调整,从而高效地支持页面中的插件显示,优先生成对应的进程和线程。这里进程优先级同时也表示创建某类型插件的创建顺序的优先级,其中,对于某类型的页面,对其中不同类型插件创建进程的优先顺序的关系可通过配置文件的形式存储在浏览器的相应文件中,创建进程时先读取该配置文件,按该配置文件中的制定的顺序为不同类型的插件创建插件进程。
创建插件进程的具体步骤如下:
生成一个具有唯一进程ID的新插件进程,并为其分配预定配额的内存空间。
设置新插件进程所属的页面中插件的类型、线程阈值、线程信息列表。
该内存空间为虚拟内存空间,大小通常为1GB,线程阈值为10,即一个插件进程包含10个该类型插件的线程,内存空间大小和线程阈值可根据实际情况设定。
步骤S530,在该独立的插件进程中为各个相同类型的页面中插件创建一线程以运行页面中插件。创建线程时在上述线程信息列表中的线程所对应的标签页的表项设置该线程对应的插件对象所属的标签页ID,以便关闭标签页时便于查找该标签页中所有的插件对象对应的线程,并将该这些线程关闭,释放线程所占用的进程的系统资源。
本实施例中,对于进程的创建,默认是可以最大地创建256个进程的,并发地同时在浏览器中开启256个进程很少出现,所以256这个上限满足浏览器的使用也满足目前系统硬件上的实际情况。因此,在创建进程之前,判断与浏览器进程独立的页面中插件的类型的进程数是否到达进程阈值(即256),若达到,则为该类型的页面中插件创建新插件进程。
由于不同类型插件的插件进行相互独立,且都与浏览器进程独立,在浏览器运行过程中,可能存在进程间对系统资源的占用的竞争。因此,本实施例中,页面中插件的类型的插件进程与浏览器进程之间通过互斥锁实现进程通信的互斥。
为了有效管理进程所占用的系统资源,当页面中插件所在的浏览器标签页关闭时,则关闭页面中插件的线程,并释放所述线程占用的内存空间,以重新分配系统资源。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的用于隔离网页插件的浏览器中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (16)

1.一种用于隔离网页插件的浏览器,包括:
插件类型获取器,适于获取页面加载过程中待加载的页面中插件的类型;
插件进程创建器,适于为相同类型的页面中插件创建一独立于浏览器进程的插件进程;
插件线程创建器,适于在该独立的插件进程中为各个相同类型的页面中插件分别创建一线程以运行该独立的插件进程中各个相同类型的页面中插件;
线程释放器,适于当所述页面中插件所在的浏览器标签页关闭时,则关闭所述页面中插件的线程,并释放所述线程占用的内存空间。
2.如权利要求1所述的用于隔离网页插件的浏览器,其特征在于,所述插件类型获取器包括:
类型ID解析器,适于解析待加载页面中对应的网页元素,从中解析出标识所述待加载的页面中插件的唯一ID,从而获取待加载的页面中插件的类型。
3.如权利要求2所述的用于隔离网页插件的浏览器,其特征在于,所述插件类型获取器进一步包括:
类型ID拦截器,适于拦截CoGetClassObject函数,获取被调用的所述待加载的页面中插件的唯一ID。
4.如权利要求1所述的用于隔离网页插件的浏览器,其特征在于,所述插件进程创建器进一步包括:
进程查询器,适于查询所述页面中插件的类型的插件进程是否已创建;
进程创建器,适于未创建插件进程,或已创建的插件进程中线程数达到线程阈值或当前内存占用达到预定配额时为该类型的所述页面中插件创建新插件进程,并更新所述页面中插件的类型的进程信息列表。
5.如权利要求4所述的用于隔离网页插件的浏览器,其特征在于,所述进程创建器进一步适于根据待加载页面的类型设置该页面中不同类型插件的进程优先级,按所述进程优先级依次创建相应页面中插件的插件进程。
6.如权利要求4所述的用于隔离网页插件的浏览器,其特征在于,所述进程创建器进一步包括:
新进程生成器,适于生成一个具有唯一进程ID的新插件进程,并为其分配所述预定配额的内存空间;
新进程配置器,适于设置所述新插件进程所属的页面中插件的类型、线程阈值、线程信息列表。
7.如权利要求4所述的用于隔离网页插件的浏览器,其特征在于,所述浏览器还包括:
进程判断器,适于判断与所述浏览器进程独立的页面中插件的类型的进程数是否到达进程阈值,若未达到,则为该类型的所述页面中插件创建新插件进程。
8.如权利要求1~7中任一项所述的用于隔离网页插件的浏览器,其特征在于,所述浏览器还包括:
进程通信器,适于所述页面中插件的类型的插件进程与浏览器进程之间通过互斥锁实现进程通信的互斥。
9.一种用于隔离网页插件的方法,包括:
浏览器获取页面加载过程中待加载的页面中插件的类型;
所述浏览器为相同类型的页面中插件创建一独立于浏览器进程的插件进程;
所述浏览器在该独立的插件进程中为各个相同类型的页面中插件分别创建一线程以运行该独立的插件进程中各个相同类型的页面中插件;
当所述页面中插件所在的浏览器标签页关闭时,则所述浏览器关闭所述页面中插件的线程,并释放所述线程占用的内存空间。
10.如权利要求9所述的用于隔离网页插件的方法,其特征在于,所述获取页面加载过程中待加载的页面中插件的类型的步骤包括:
解析待加载页面中对应的网页元素,从中解析出标识所述待加载的页面中插件的唯一ID,从而获取待加载的页面中插件的类型。
11.如权利要求10所述的用于隔离网页插件的方法,其特征在于,进一步包括:
拦截CoGetClassObject函数,获取被调用的所述待加载的页面中插件的唯一ID。
12.如权利要求9所述的用于隔离网页插件的方法,其特征在于,所述为相同类型的页面中插件创建一独立于浏览器进程的插件进程包括:
查询所述页面中插件的类型的插件进程是否已创建;
若未创建,或已创建的插件进程中线程数达到线程阈值或当前内存占用达到预定配额,则为该类型的所述页面中插件创建新插件进程,并更新所述页面中插件的类型的进程信息列表。
13.如权利要求12所述的用于隔离网页插件的方法,其特征在于,所述为该类型的所述页面中插件创建新插件进程的步骤包括:
根据待加载页面的类型设置该页面中不同类型插件的进程优先级;
按所述进程优先级依次创建相应页面中插件的插件进程。
14.如权利要求12所述的用于隔离网页插件的方法,其特征在于,所述为该类型的所述页面中插件创建新插件进程的步骤进一步包括:
生成一个具有唯一进程ID的新插件进程,并为其分配所述预定配额的内存空间;
设置所述新插件进程所属的页面中插件的类型、线程阈值、线程信息列表。
15.如权利要求12所述的用于隔离网页插件的方法,其特征在于,所述为该类型的所述页面中插件创建新插件进程的步骤之前还包括:
判断与所述浏览器进程相独立的页面中插件的类型的进程的数目是否到达进程阈值,若未达到,则为该类型的所述页面中插件创建新插件进程。
16.如权利要求9~15中任一项所述的用于隔离网页插件的方法,其特征在于,所述页面中插件的类型的插件进程与浏览器进程之间通过互斥锁实现进程通信的互斥。
CN201210537541.9A 2012-12-12 2012-12-12 用于隔离网页插件的浏览器和方法 Active CN102982169B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210537541.9A CN102982169B (zh) 2012-12-12 2012-12-12 用于隔离网页插件的浏览器和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210537541.9A CN102982169B (zh) 2012-12-12 2012-12-12 用于隔离网页插件的浏览器和方法

Publications (2)

Publication Number Publication Date
CN102982169A CN102982169A (zh) 2013-03-20
CN102982169B true CN102982169B (zh) 2017-05-24

Family

ID=47856185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210537541.9A Active CN102982169B (zh) 2012-12-12 2012-12-12 用于隔离网页插件的浏览器和方法

Country Status (1)

Country Link
CN (1) CN102982169B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034495A (zh) * 2012-12-12 2013-04-10 北京奇虎科技有限公司 对网页中插件进行隔离的浏览器及网页插件的隔离方法
CN103150390B (zh) * 2013-03-21 2016-04-13 北京奇虎科技有限公司 一种对Flash窗口的处理方法和装置
CN103366019B (zh) * 2013-08-06 2016-09-28 飞天诚信科技股份有限公司 一种基于iOS设备的网页拦截方法和设备
CN103745621A (zh) * 2014-01-16 2014-04-23 苏州阔地网络科技有限公司 一种在线同步课堂中智能导播方法及系统
CN103970909A (zh) * 2014-05-27 2014-08-06 小米科技有限责任公司 显示浏览器标签的方法及装置
CN105791998A (zh) * 2016-02-25 2016-07-20 四川长虹电器股份有限公司 Dvb应用和浏览器应用共存的实现方法及系统
CN108268507B (zh) * 2016-12-30 2021-06-22 北京搜狗科技发展有限公司 一种基于浏览器的处理方法、装置及电子设备
US10140165B2 (en) 2017-02-02 2018-11-27 Microsoft Technology Licensing, Llc Shell action browser extensions
CN107832100B (zh) * 2017-10-27 2020-12-04 平安普惠企业管理有限公司 一种apk插件的加载方法及其终端
CN111385251A (zh) * 2018-12-28 2020-07-07 武汉斗鱼网络科技有限公司 一种提高客户端运行稳定性的方法、系统、服务器及存储介质
CN110716786B (zh) * 2019-10-16 2021-10-22 腾讯科技(深圳)有限公司 一种页面展示方法、系统及存储介质
CN113204385B (zh) * 2021-05-17 2024-07-09 南京统信软件技术有限公司 一种插件加载方法、装置、计算设备及可读存储介质
CN113741997A (zh) * 2021-08-11 2021-12-03 浙江大华技术股份有限公司 浏览器插件的隔离交互方法、系统、电子装置和存储介质
CN116991505A (zh) * 2023-09-26 2023-11-03 统信软件技术有限公司 插件加载方法、装置、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1410909A (zh) * 2001-09-27 2003-04-16 因特国风网络软件有限公司 互联网关键字的解析方法及系统
CN102232217A (zh) * 2008-12-02 2011-11-02 微软公司 插件的沙盒执行
CN102436507A (zh) * 2011-12-28 2012-05-02 奇智软件(北京)有限公司 一种浏览网页的方法及装置
CN103034495A (zh) * 2012-12-12 2013-04-10 北京奇虎科技有限公司 对网页中插件进行隔离的浏览器及网页插件的隔离方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009049088A1 (en) * 2007-10-10 2009-04-16 Sun Microsystems, Inc. Method and system for changing execution environments during application execution
CN105068866B (zh) * 2012-05-04 2019-06-04 北京奇虎科技有限公司 一种浏览器输入控件的进程控制方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1410909A (zh) * 2001-09-27 2003-04-16 因特国风网络软件有限公司 互联网关键字的解析方法及系统
CN102232217A (zh) * 2008-12-02 2011-11-02 微软公司 插件的沙盒执行
CN102436507A (zh) * 2011-12-28 2012-05-02 奇智软件(北京)有限公司 一种浏览网页的方法及装置
CN103034495A (zh) * 2012-12-12 2013-04-10 北京奇虎科技有限公司 对网页中插件进行隔离的浏览器及网页插件的隔离方法

Also Published As

Publication number Publication date
CN102982169A (zh) 2013-03-20

Similar Documents

Publication Publication Date Title
CN102982169B (zh) 用于隔离网页插件的浏览器和方法
CN107210931B (zh) 控制基础架构
CN104714828B (zh) 应用安装、运行方法及装置
US9697183B2 (en) Client side page processing
US8978019B2 (en) Instrumentation of software applications for configuration thereof
US8191039B2 (en) Developmental tool and method for automating detection and construction of notification-based component applications
CN105512190B (zh) 界面跳转方法及装置
CN102890724B (zh) 网页加载方法和装置
US9785452B2 (en) Framework for dependency management and automatic file load in a network environment
US20140289366A1 (en) Service providing method and system for instance hosting
EP3007408A2 (en) Service method for managing transactions using application properties and system therefor
CN103677823B (zh) 一种浏览器插件的管理方法和装置
KR102045602B1 (ko) 애플리케이션 코드 실행이 없는 라이브 타일들
CN113986226B (zh) 一种基于qiankun和Web Component的微前端架构及其构建方法
CN103034495A (zh) 对网页中插件进行隔离的浏览器及网页插件的隔离方法
CN104036019B (zh) 网页链接的开启方法及装置
CN102981846B (zh) 对密码输入框元素进行处理的方法及浏览器
CN110806873B (zh) 目标控件确定方法、装置、电子设备及存储介质
CN107798064B (zh) 页面处理方法、电子设备及计算机可读存储介质
CN112527459B (zh) 一种基于Kubernetes集群的日志分析方法及装置
US20130036108A1 (en) Method and system for assisting users with operating network devices
KR101340588B1 (ko) 웹페이지 구성방법 및 그 장치
CN114116078A (zh) 基于微前端的应用数据处理方法、装置、设备及介质
CN103560997A (zh) 应用程序下载管理的方法、装置及下载服务器
CN108885544A (zh) 前端页面国际化处理方法、应用服务器及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220719

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.