CN115795209A - 基于浏览器插件的Eval函数执行方法、装置、设备及介质 - Google Patents
基于浏览器插件的Eval函数执行方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115795209A CN115795209A CN202211268704.8A CN202211268704A CN115795209A CN 115795209 A CN115795209 A CN 115795209A CN 202211268704 A CN202211268704 A CN 202211268704A CN 115795209 A CN115795209 A CN 115795209A
- Authority
- CN
- China
- Prior art keywords
- webpage
- script
- function
- eval
- execution
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请属于互联网技术领域,涉及一种基于浏览器插件的Eval函数执行方法,包括获取网页注入脚本,在网页注入脚本中配置网页注入运行函数;调用网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将网页注入执行脚本传送给浏览器插件;通过浏览器插件向待加载网页引入所述网页注入执行脚本,并执行网页注入执行脚本中的Eval源码数据,得到执行结果。本申请还提供一种基于浏览器插件的Eval函数执行装置、设备及介质。此外,本申请还涉及区块链技术,网页注入执行脚本可存储于区块链中。本申请能够使得浏览器插件在不同的扩展规范下执行Eval函数,实现Eval函数的兼容性。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于浏览器插件的Eval函数执行方法、装置、设备及介质。
背景技术
随着终端技术的快速发展,终端具备的功能越来越多,浏览器已成为终端的标准配置,用户通过浏览器可以浏览网页,获取其需要的信息。浏览器加载网页,可以通过浏览器插件进行驱动加载。
JavaScript是一种网络脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。Eval函数是JavaScript内置函数,Eval函数允许动态执行JavaScript源代码,很多场景需要用到Eval函数来获取代码片段的执行结果,例如,替换网页页面上下文的一些原生函数。在ManifestV2规范下,Eval函数是允许在浏览器插件的background(后台)里面执行的,但是,在ManifestV3规范下被禁止使用,使得Eval函数在不同规范下不具备兼容性。
发明内容
本申请实施例的目的在于提出一种基于浏览器插件的Eval函数执行方法、装置、设备及介质,以解决相关技术中Eval函数在不同规范下不具备兼容性的技术问题。
为了解决上述技术问题,本申请实施例提供一种基于浏览器插件的Eval函数执行方法,采用了如下所述的技术方案:
获取网页注入脚本,在所述网页注入脚本中配置网页注入运行函数;
调用所述网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将所述网页注入执行脚本传送给浏览器插件;
通过所述浏览器插件向待加载网页引入所述网页注入执行脚本,并执行所述网页注入执行脚本中的所述Eval源码数据,得到执行结果。
进一步的,所述执行所述网页注入执行脚本中的所述Eval源码数据,得到执行结果的步骤包括:
通过所述浏览器插件的插件后台接收所述网页注入执行脚本中的所述Eval源码数据,并调用预先设置的网页注入函数将所述Eval源码数据传递至所述待加载网页的网页脚本;
通过所述网页脚本将所述Eval源码数据传输给所述浏览器插件的脚本执行函数;
通过所述脚本执行函数执行所述Eval源码数据,得到执行结果。
进一步的,所述调用预先设置的网页注入函数将所述Eval源码数据传递至所述待加载网页的网页脚本的步骤包括:
通过预先设置的网页注入函数引入所述待加载网页的网页脚本并进行加载;
响应于所述网页脚本加载的完成,触发所述网页注入函数中的网页注入事件;
基于所述网页注入事件,将所述Eval源码数据传递至所述网页脚本。
进一步的,所述通过预先设置的网页注入函数引入所述待加载网页的网页脚本并进行加载的步骤包括:
通过所述网页注入函数获取脚本标签中的与所述网页脚本对应的路径属性,根据所述路径属性获得所述网页脚本;
通过所述网页注入函数执行所述网页脚本以进行资源加载。
进一步的,在所述通过所述脚本执行函数执行所述Eval源码数据,得到执行结果的步骤之前还包括:
调用所述浏览器插件的标签获取函数获取所述待加载网页的标签页信息,从所述标签页信息中获取到标签标识;
通过所述插件后台将所述标签标识传给所述浏览器插件的脚本执行函数。
进一步的,所述通过所述脚本执行函数执行所述Eval源码数据,得到执行结果的步骤包括:
调用所述脚本执行函数根据所述标签标识获取待加载网页的网页网址;
通过所述网页注入函数,根据所述网页网址将所述Eval源码数据注入所述待加载网页;
调用所述脚本执行函数执行所述Eval源码数据,得到执行结果。
进一步的,所述将所述网页注入执行脚本发送给浏览器插件的步骤包括:
使用所述网页注入运行函数调用浏览器消息传递函数,将所述网页注入执行脚本发送给所述浏览器插件。
为了解决上述技术问题,本申请实施例还提供一种基于浏览器插件的Eval函数执行装置,采用了如下所述的技术方案:
配置模块,用于获取网页注入脚本,在所述网页注入脚本中配置网页注入运行函数;
获取模块,用于调用所述网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将所述网页注入执行脚本传送给浏览器插件;
执行模块,用于通过所述浏览器插件向待加载网页引入所述网页注入执行脚本,并执行所述网页注入执行脚本中的所述Eval源码数据,得到执行结果。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
该计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如上所述的基于浏览器插件的Eval函数执行方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如上所述的基于浏览器插件的Eval函数执行方法的步骤。
与现有技术相比,本申请实施例主要有以下有益效果:
本申请通过获取网页注入脚本,在网页注入脚本中配置网页注入运行函数;调用网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将网页注入执行脚本传送给浏览器插件;通过浏览器插件向待加载网页引入所述网页注入执行脚本,并执行网页注入执行脚本中的Eval源码数据,得到执行结果;本申请通过网页注入脚本中配置的网页注入运行函数调用Eval源码数据,得到网页注入执行脚本,基于浏览器插件向待加载网页引入网页注入执行脚本并执行,可以使得浏览器插件在不同的扩展规范下执行Eval函数,实现Eval函数的兼容性。
附图说明
为了更清楚地说明本申请中的方案,下面将对本申请实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的基于浏览器插件的Eval函数执行方法的一个实施例的流程图;
图3是图2中步骤S203的一种具体实施方式的流程图;
图4是根据本申请的基于浏览器插件的Eval函数执行装置的一个实施例的结构示意图;
图5是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了使本技术领域的人员更好地理解本申请方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请提供了一种基于浏览器插件的Eval函数执行方法,可以应用于如图1所示的系统架构100中,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于浏览器插件的Eval函数执行方法一般由服务器/终端设备执行,相应地,基于浏览器插件的Eval函数执行装置一般设置于服务器/终端设备中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
Eval函数是JavaScript内置函数,Eval函数允许动态执行JavaScript源代码,很多场景需要用到Eval函数来获取代码片段的执行结果。在ManifestV2规范下,Eval函数在浏览器插件的background里面是允许执行的,但是,在ManifestV3规范下被禁止使用。为了解决Eval函数在最新的ManifestV3规范下,在浏览器插件的background里面被禁止使用的问题,本申请提出了一种基于浏览器插件的Eval函数执行方法。参考图2,示出了根据本申请的基于浏览器插件的Eval函数执行方法的一个实施例的流程图,包括以下步骤:
步骤S201,获取网页注入脚本,在网页注入脚本中配置网页注入运行函数。
在本实施例中,网页注入脚本是浏览器插件注入到网页中的脚本代码,用contentScript表示,在网页注入脚本contentScript中定义一个函数,即预先配置一个网页注入运行函数,网页注入运行函数用runtimeInjectPageScript表示,该网页注入运行函数中定义有源码调用参数,用于获取Eval源码数据。
步骤S202,调用网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将网页注入执行脚本传送给浏览器插件。
在本实施例中,调用网页注入运行函数runtimeInjectPageScript中的源码调用参数获取Eval源码数据,将Eval源码数据传入至源码调用参数对应的参数值,得到网页注入执行脚本。
其中,Eval源码数据为通过Eval函数执行的代码内容,Eval源码数据以字符串类型传入源码调用参数对应的参数值。举例说明,调用网页注入运行函数runtimeInjectPageScript的源码调用参数传入一段代码,代码内容是申明一个变量,赋值为123,则得到runtimeInjectPageScript(‘var test=123’),此时网页注入脚本contentScript中的网页注入运行函数为runtimeInjectPageScript(‘var test=123’),此时的脚本则为网页注入执行脚本。
在本实施例中,通过网页注入运行函数runtimeInjectPageScript内部将网页注入执行脚本传送给浏览器插件。
终端设备101、102、103上至少安装有一个浏览器,每个浏览器安装有浏览器插件,浏览器插件作为第三方应用程序,可以预先由开发测试人员生成得到,在终端设备101、102、103出厂之后,可以由开发测试人员将生成的浏览器插件安装在浏览器中。浏览器插件可以用于驱动浏览器执行网页注入执行脚本,进而让Eval函数执行对应的源码数据,实现浏览器对网页的加载。
浏览器插件的SDK(Software Development Kit,软件开发工具包)中包含的方法函数有用于发送消息的函数browser.runtime.sendMessage,用于接收消息的函数browser.runtime.onMessage,用于获取标签页信息的函数browser.tabs.query,用于执行脚本的函数browser.scripting.executeScript。
需要强调的是,为进一步保证网页注入执行脚本的私密和安全性,上述网页注入执行脚本还可以存储于一区块链的节点中。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
步骤S203,通过浏览器插件向待加载网页引入网页注入执行脚本,并执行网页注入执行脚本中的Eval源码数据,得到执行结果。
在本实施例中,浏览器插件向待加载网页引入网页注入执行脚本,网页注入执行脚本则会在待加载网页中自动执行,产生页面信息,Eval源码数据属于网页注入执行脚本的一部分,在网页注入执行脚本执行过程中,会调用内置的Eval函数执行Eval源码数据,生成执行结果。
本申请通过网页注入脚本中配置的网页注入运行函数调用Eval源码数据,得到网页注入执行脚本,基于浏览器插件向待加载网页引入网页注入执行脚本并执行,可以使得浏览器插件在不同的扩展规范下执行Eval函数,例如在最新的ManifestV3规范执行Eval函数,实现Eval函数的兼容性。
在本实施例的一些可选的实现方式中,上述步骤S203中的执行网页注入执行脚本中的Eval源码数据,得到执行结果的步骤包括:
步骤S301,通过浏览器插件的插件后台接收网页注入执行脚本中的Eval源码数据,并调用预先设置的网页注入函数将Eval源码数据传递至待加载网页的网页脚本。
在本实施例中,浏览器插件的插件后台用background表示,background主要用于逻辑处理,例如网络拦截等。background接收到Eval源码数据后,调用预先设置的网页注入函数将Eval源码数据传递至待加载网页的网页脚本。
其中,网页注入函数是自定义的,用injectPageScript表示,主要用于将目标代码插入到网页内。
在本实施例中,上述调用预先设置的网页注入函数将Eval源码数据传递至待加载网页的网页脚本的步骤包括:
通过预先设置的网页注入函数引入待加载网页的网页脚本并进行加载;
响应于网页脚本加载的完成,触发网页注入函数中的网页注入事件;
基于网页注入事件,将Eval源码数据传递至网页脚本。
其中,网页脚本用page-script.js脚本表示,网页注入函数injectPageScript引入page-script.js脚本,当page-script.js脚本加载完成,触发网页注入事件。网页注入事件为网页注入函数injectPageScript中包含的,用自定义事件injectPageScript表示。
page-script.js脚本用于监听自定义事件injectPageScript,并且调用Eval函数执行Eval源码数据。自定义事件injectPageScript触发时,网页注入函数injectPageScript传递Eval源码数据,同时,当page-script.js脚本监听到自定义事件injectPageScript被触发时,接收网页注入函数injectPageScript传递过来的Eval源码数据。
在本实施例中,通过将Eval源码数据传递给引入的网页脚本,可以利用网页脚本调用Eval函数执行Eval源码数据,可以克服Eval函数在不同扩展规范下的执行壁垒,实现执行Eval函数的兼容性,避免了进行复杂的执行程序配置过程。
步骤S302,通过网页脚本将Eval源码数据传输给浏览器插件的脚本执行函数。
在本实施例中,网页脚本page-script.js脚本将接收到的Eval源码数据传输给浏览器插件的脚本执行函数browser.scripting.executeScript,最终利用脚本执行函数browser.scripting.executeScript实现Eval函数的效果。
步骤S303,通过脚本执行函数执行Eval源码数据,得到执行结果。
在本实施例中,通过脚本执行函数browser.scripting.executeScript调用网页注入函数injectPageScript,并通过网页注入函数injectPageScript执行Eval源码数据。
其中,网页注入函数injectPageScript执行Eval源码数据,具体的,网页注入函数injectPageScript引入网页脚本page-script.js脚本,page-script.js脚本调用Eval函数执行Eval源码数据,得到执行结果。
在本实施例中,脚本执行函数browser.scripting.executeScript起到串联作用,将Eval函数与浏览器插件串联起来,使得Eval函数可以在不同版本的扩展规范,例如在ManifestV2规范和ManifestV3规范下执行,实现Eval函数的兼容性,不受规范版本限制。
在本实施例中,上述通过预先设置的网页注入函数引入待加载网页的网页脚本并进行加载的步骤包括:
通过网页注入函数获取脚本标签中的与网页脚本对应的路径属性,根据路径属性获得网页脚本;
通过网页注入函数执行网页脚本以进行资源加载。
其中,网页注入函数injectPageScript在进行自定义时,先创建一个脚本标签,即script标签,该标签中有一个路径属性,即src属性。src属性是资源路径,即所引用资源的位置。
在本实施例中,src属性设置的资源链接为网页脚本page-script.js脚本的链接,src属性设置page-script.js脚本的链接后,网页注入函数injectPageScript会自动加载这个链接的资源,即page-script.js脚本加载。
在本实施例中,通过路径属性获取脚本资源,可以提升资源获取效率。
在一些可选的实现方式中,在上述通过脚本执行函数执行Eval源码数据,得到执行结果的步骤之前还包括:
调用浏览器插件的标签获取函数获取待加载网页的标签页信息,从标签页信息中获取到标签标识;
通过插件后台将标签标识传给浏览器插件的脚本执行函数。
在本实施例中,在自定义网页注入函数injectPageScript的同时,通过调用浏览器插件的标签获取函数获取待加载网页的标签页信息,则标签获取函数会直接返回当前待加载网页的全部标签页信息。
其中,标签获取函数为函数browser.tabs.query,浏览器插件的插件后台background接收到Eval源码数据后,调用函数browser.tabs.query获取当前待加载网页的全部标签页信息,标签页信息包括但不限于标签标识(即标签id)、index索引、active是否选中、title标签页标题等,从标签页信息中提取标签标识,插件后台background再把标签标识传给脚本执行函数browser.scripting.executeScript。
在本实施例中,通过浏览器插件的插件后台调用标签获取函数获取到待加载网页的标签标识,并将其传递给脚本执行函数,可以实现对待加载网页的定位,以便后续在待加载网页执行Eval源码数据。
在本实施例中,上述步骤S303中的通过脚本执行函数执行Eval源码数据,得到执行结果的步骤包括:
调用脚本执行函数根据标签标识获取待加载网页的网页网址;
通过网页注入函数,根据网页网址将Eval源码数据注入待加载网页;
调用脚本执行函数执行Eval源码数据,得到执行结果。
插件后台background把标签标识传给脚本执行函数browser.scripting.executeScript,脚本执行函数browser.scripting.executeScript根据标签标识获取待加载网页相应的网页网址,通过脚本执行函数browser.scripting.executeScript调用网页注入函数injectPageScript,根据网页网址将Eval源码数据注入待加载网页,并通过page-script.js脚本调用Eval函数执行Eval源码数据,得到执行结果。
在本实施例中,通过执行脚本执行函数browser.scripting.executeScript接收三个参数,三个参数分别为标签标识、网页注入函数injectPageScript以及Eval源码数据,脚本执行函数browser.scripting.executeScript利用上述三个参数以及自定义事件injectPageScript的触发与监听,最终实现eval函数的效果,并返回执行结果。
示例的,假设Eval源码数据为“var test=123”,脚本执行函数browser.scripting.executeScript接收到标签标识、网页注入函数injectPageScript和Eval源码数据这三个参数,具体如下:
browser.scripting.executeScript(target:{tabId:tab.id},//标签ID
func:injectPageScript,//网页注入函数injectPageScript
args:[‘var test=123’])//Eval源码数据
在浏览器按下F12键,打开控制台,选择console标签(控制台的标签),输入test,就可以看到控制台输出test的值是123,代表整个流程成功,最终实现了Eval函数的效果。
在本实施例中,通过脚本执行函数browser.scripting.executeScript接收标签标识、网页注入函数injectPageScript和Eval源码数据三个参数,并通过网页注入函数injectPageScript引入page-script.js脚本,利用page-script.js脚本调用Eval函数执行Eval源码数据,使得浏览器插件在最新的ManifestV3规范下执行Eval函数,进而使得Eval函数不受规范限制。
在本实施例的一些可选的实现方式中,上述将网页注入执行脚本发送给浏览器插件的步骤包括:
使用网页注入运行函数调用浏览器消息传递函数,将网页注入执行脚本发送给浏览器插件。
其中,浏览器消息传递函数是浏览器插件本身包含的方法,即函数browser.runtime.sendMessage,网页注入运行函数runtimeInjectPageScript获取到Eval源码数据后,该函数内部通过调用函数browser.runtime.sendMessage将网页注入执行脚本传送给浏览器插件,由插件后台background进行处理。
本实施例利用浏览器插件本身的函数进行数据传送,过程简单方便,无需额外的配置,节省开发成本。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,该计算机可读指令可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
进一步参考图4,作为对上述图2所示方法的实现,本申请提供了一种基于浏览器插件的Eval函数执行装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例所述的基于浏览器插件的Eval函数执行装置400包括:配置模块401、获取模块402以及执行模块403。其中:
配置模块401用于获取网页注入脚本,在网页注入脚本中配置网页注入运行函数;
获取模块402用于调用网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将网页注入执行脚本传送给浏览器插件;
执行模块403用于通过浏览器插件向待加载网页引入网页注入执行脚本,并执行网页注入执行脚本中的Eval源码数据,得到执行结果。
需要强调的是,为进一步保证网页注入执行脚本的私密和安全性,上述网页注入执行脚本还可以存储于一区块链的节点中。
基于上述基于浏览器插件的Eval函数执行装置400,通过网页注入脚本中配置的网页注入运行函数调用Eval源码数据,得到网页注入执行脚本,基于浏览器插件向待加载网页引入网页注入执行脚本并执行,可以使得浏览器插件在不同的扩展规范下执行Eval函数,实现Eval函数的兼容性。
在一些可选的实现方式中,执行模块403包括第一传输子模块、第二传输子模块和执行子模块,其中:
第一传输子模块用于通过浏览器插件的插件后台接收网页注入执行脚本中的Eval源码数据,并调用预先设置的网页注入函数将Eval源码数据传递至待加载网页的网页脚本;
第二传输子模块用于通过网页脚本将Eval源码数据传输给浏览器插件的脚本执行函数;
执行子模块用于通过脚本执行函数执行Eval源码数据,得到执行结果。
本实施例通过脚本执行函数browser.scripting.executeScript将Eval函数与浏览器插件串联起来,使得Eval函数可以在不同版本的扩展规范,例如在ManifestV2规范和ManifestV3规范下执行,实现Eval函数的兼容性,不受规范版本限制。
在本实施例中,第一传输子模块包括加载单元、触发单元和传输单元,其中,加载单元用于通过预先设置的网页注入函数引入待加载网页的网页脚本并进行加载;触发单元用于响应于网页脚本加载的完成,触发网页注入函数中的网页注入事件;传输单元用于基于网页注入事件,将Eval源码数据传递至网页脚本。
本实施例通过将Eval源码数据传递给引入的网页脚本,可以利用网页脚本调用Eval函数执行Eval源码数据,可以克服Eval函数在不同扩展规范下的执行壁垒,实现执行Eval函数的兼容性,避免了进行复杂的执行程序配置过程
在本实施例的一些可选的实现方式中,加载单元进一步用于:通网页注入函数获取脚本标签中的与网页脚本对应的路径属性,根据路径属性获得网页脚本;通过网页注入函数执行网页脚本以进行资源加载。
本实施例通过路径属性获取脚本资源,可以提升资源获取效率。
在本实施例中,执行模块403还包括标签获取子模块,用于:调用浏览器插件的标签获取函数获取待加载网页的标签页信息,从标签页信息中获取到标签标识;通过插件后台将标签标识传给浏览器插件的脚本执行函数。
本实施例通过浏览器插件的插件后台调用标签获取函数获取到待加载网页的标签标识,并将其传递给脚本执行函数,可以实现对待加载网页的定位,以便后续在待加载网页执行Eval源码数据。
在本实施例中,执行子模块包括获取单元、注入单元和执行单元,其中:
获取单元用于调用脚本执行函数根据标签标识获取待加载网页的网页网址;
注入单元用于通过网页注入函数,根据网页网址将Eval源码数据注入待加载网页;
执行单元用于调用脚本执行函数执行Eval源码数据,得到执行结果。
本实施例可以使得浏览器插件在最新的ManifestV3规范下执行Eval函数,进而使得Eval函数不受规范限制。
在本实施例的一些可选的实现方式中,获取模块402包括传送子模块,用于使用网页注入运行函数调用浏览器消息传递函数,将网页注入执行脚本发送给浏览器插件。
本实施例利用浏览器插件本身的函数进行数据传送,过程简单方便,无需额外的配置,节省开发成本。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图5,图5为本实施例计算机设备基本结构框图。
所述计算机设备5包括通过系统总线相互通信连接存储器51、处理器52、网络接口53。需要指出的是,图中仅示出了具有组件51-53的计算机设备5,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器51至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器51可以是所述计算机设备5的内部存储单元,例如该计算机设备5的硬盘或内存。在另一些实施例中,所述存储器51也可以是所述计算机设备5的外部存储设备,例如该计算机设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。当然,所述存储器51还可以既包括所述计算机设备5的内部存储单元也包括其外部存储设备。本实施例中,所述存储器51通常用于存储安装于所述计算机设备5的操作系统和各类应用软件,例如基于浏览器插件的Eval函数执行方法的计算机可读指令等。此外,所述存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制所述计算机设备5的总体操作。本实施例中,所述处理器52用于运行所述存储器51中存储的计算机可读指令或者处理数据,例如运行所述基于浏览器插件的Eval函数执行方法的计算机可读指令。
所述网络接口53可包括无线网络接口或有线网络接口,该网络接口53通常用于在所述计算机设备5与其他电子设备之间建立通信连接。
本实施例通过处理器执行存储在存储器的计算机可读指令时实现如上述实施例基于浏览器插件的Eval函数执行方法的步骤,通过网页注入脚本中配置的网页注入运行函数调用Eval源码数据,得到网页注入执行脚本,基于浏览器插件向待加载网页引入网页注入执行脚本并执行,可以使得浏览器插件在不同的扩展规范下执行Eval函数,实现Eval函数的兼容性。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可读指令,所述计算机可读指令可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于浏览器插件的Eval函数执行方法的步骤,通过网页注入脚本中配置的网页注入运行函数调用Eval源码数据,得到网页注入执行脚本,基于浏览器插件向待加载网页引入网页注入执行脚本并执行,可以使得浏览器插件在不同的扩展规范下执行Eval函数,实现Eval函数的兼容性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。
Claims (10)
1.一种基于浏览器插件的Eval函数执行方法,其特征在于,包括下述步骤:
获取网页注入脚本,在所述网页注入脚本中配置网页注入运行函数;
调用所述网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将所述网页注入执行脚本传送给浏览器插件;
通过所述浏览器插件向待加载网页引入所述网页注入执行脚本,并执行所述网页注入执行脚本中的所述Eval源码数据,得到执行结果。
2.根据权利要求1所述的基于浏览器插件的Eval函数执行方法,其特征在于,所述执行所述网页注入执行脚本中的所述Eval源码数据,得到执行结果的步骤包括:
通过所述浏览器插件的插件后台接收所述网页注入执行脚本中的所述Eval源码数据,并调用预先设置的网页注入函数将所述Eval源码数据传递至所述待加载网页的网页脚本;
通过所述网页脚本将所述Eval源码数据传输给所述浏览器插件的脚本执行函数;
通过所述脚本执行函数执行所述Eval源码数据,得到执行结果。
3.根据权利要求2所述的基于浏览器插件的Eval函数执行方法,其特征在于,所述调用预先设置的网页注入函数将所述Eval源码数据传递至所述待加载网页的网页脚本的步骤包括:
通过预先设置的网页注入函数引入所述待加载网页的网页脚本并进行加载;
响应于所述网页脚本加载的完成,触发所述网页注入函数中的网页注入事件;
基于所述网页注入事件,将所述Eval源码数据传递至所述网页脚本。
4.根据权利要求3所述的基于浏览器插件的Eval函数执行方法,其特征在于,所述通过预先设置的网页注入函数引入所述待加载网页的网页脚本并进行加载的步骤包括:
通过所述网页注入函数获取脚本标签中的与所述网页脚本对应的路径属性,根据所述路径属性获得所述网页脚本;
通过所述网页注入函数执行所述网页脚本以进行资源加载。
5.根据权利要求2所述的基于浏览器插件的Eval函数执行方法,其特征在于,在所述通过所述脚本执行函数执行所述Eval源码数据,得到执行结果的步骤之前还包括:
调用所述浏览器插件的标签获取函数获取所述待加载网页的标签页信息,从所述标签页信息中获取到标签标识;
通过所述插件后台将所述标签标识传给所述浏览器插件的脚本执行函数。
6.根据权利要求5所述的基于浏览器插件的Eval函数执行方法,其特征在于,所述通过所述脚本执行函数执行所述Eval源码数据,得到执行结果的步骤包括:
调用所述脚本执行函数根据所述标签标识获取待加载网页的网页网址;
通过所述网页注入函数,根据所述网页网址将所述Eval源码数据注入所述待加载网页;
调用所述脚本执行函数执行所述Eval源码数据,得到执行结果。
7.根据权利要求1至6任一项所述的基于浏览器插件的Eval函数执行方法,其特征在于,所述将所述网页注入执行脚本发送给浏览器插件的步骤包括:
使用所述网页注入运行函数调用浏览器消息传递函数,将所述网页注入执行脚本发送给所述浏览器插件。
8.一种基于浏览器插件的Eval函数执行装置,其特征在于,包括:
配置模块,用于获取网页注入脚本,在所述网页注入脚本中配置网页注入运行函数;
获取模块,用于调用所述网页注入运行函数获取Eval源码数据,得到网页注入执行脚本,并将所述网页注入执行脚本传送给浏览器插件;
执行模块,用于通过所述浏览器插件向待加载网页引入所述网页注入执行脚本,并执行所述网页注入执行脚本中的所述Eval源码数据,得到执行结果。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述处理器执行所述计算机可读指令时实现如权利要求1至7中任一项所述的基于浏览器插件的Eval函数执行方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被处理器执行时实现如权利要求1至7中任一项所述的基于浏览器插件的Eval函数执行方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211268704.8A CN115795209A (zh) | 2022-10-17 | 2022-10-17 | 基于浏览器插件的Eval函数执行方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211268704.8A CN115795209A (zh) | 2022-10-17 | 2022-10-17 | 基于浏览器插件的Eval函数执行方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115795209A true CN115795209A (zh) | 2023-03-14 |
Family
ID=85433127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211268704.8A Pending CN115795209A (zh) | 2022-10-17 | 2022-10-17 | 基于浏览器插件的Eval函数执行方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115795209A (zh) |
-
2022
- 2022-10-17 CN CN202211268704.8A patent/CN115795209A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416458A (zh) | 基于ReactNative的预加载方法、装置、计算机设备及存储介质 | |
CN113536185B (zh) | 应用页面的加载方法、存储介质、及其相关设备 | |
CN112631910A (zh) | 前端测试方法、装置、计算机设备及存储介质 | |
CN113452579B (zh) | H5页面加载方法、装置、计算机设备及存储介质 | |
CN115098186A (zh) | 项目处理方法、装置、计算机设备及存储介质 | |
CN114996619A (zh) | 一种页面显示的方法、装置、计算机设备及存储介质 | |
CN113259342A (zh) | 登录验证方法、装置、计算机设备及介质 | |
CN111552463A (zh) | 一种页面跳转方法、装置、计算机设备及存储介质 | |
CN110765610B (zh) | Pdm集成方法、装置、计算机设备及存储介质 | |
CN112685115A (zh) | 国际提示语生成方法、系统、计算机设备及存储介质 | |
CN114626352B (zh) | 报表自动化生成方法、装置、计算机设备及存储介质 | |
CN115733685A (zh) | Web会话认证管理方法、装置、计算机设备及存储介质 | |
CN115795209A (zh) | 基于浏览器插件的Eval函数执行方法、装置、设备及介质 | |
CN113315829A (zh) | 客户端离线化h5页面加载方法、装置、计算机设备及介质 | |
CN114615325A (zh) | 消息推送方法、装置、计算机设备及存储介质 | |
CN112632192A (zh) | 节点维护方法、装置、计算机设备及介质 | |
CN114238466A (zh) | 一种消息推送方法、装置、计算机设备及存储介质 | |
CN107450946A (zh) | Chrome网页与终端软件通讯方法、设备及存储介质 | |
CN116108814B (zh) | 甘特图处理方法、装置、计算机设备及存储介质 | |
CN117290019A (zh) | 一种接口调用方法、装置、计算机设备和存储介质 | |
CN115756417A (zh) | 一种源码跳转方法、装置、计算机设备及存储介质 | |
CN116467145A (zh) | 页面性能数据采集方法、装置、计算机设备及存储介质 | |
CN117851014A (zh) | 一种应用程序的调用方法、装置、计算机设备和存储介质 | |
CN118113376A (zh) | 用于控制矿灯的应用程序启动方法及相关设备 | |
CN116382719A (zh) | 插件处理方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |