首页 > 编程语言 >注入html源码到浏览器的几种方式

注入html源码到浏览器的几种方式

时间:2022-12-20 11:07:25浏览次数:41  
标签:浏览器 html 接口 JS 源码 iframe document 注入


1、通过各浏览器提供的接口调用
IE的COM接口,FF的插件、Chrome的API接口等;类似的实现有Selenium的webdriver支持的各种driver,
它们都是调用了浏览器的原始接口。


2、通过已有的第三方程序来间接调用浏览器:
比如上面的所提到的webdriver所支持的各种driver;目前这些driver提供支持很多的浏览器操作,注入源码应该也提供了吧!
具体的还没有试过,但是也算是一种可能。


3、利用嵌入式浏览器引擎提供的接口:
CEF是webkit的嵌入式引擎,可以直接程序调用它来实现一个自定义的浏览器,国内大部分浏览器应该就是这样出来的吧;
所以注入点html源码应该是没有什么问题。


4、利用类浏览器程序来实现:
PhantomJS是一款基于webkit的无GUI浏览器引擎,可以做很多浏览器都支持的事情,更方便的是它有提供非常好的编程接口,
注入HTML就是其中一个。


5、利用JS注入到浏览器页面:
直接通过JS获取病改变HTML内容;或者新建一个iframe后注入HTML到iframe中,其实效果就等同于注入到一个新开的浏览器页面。


6、通过自动化工具直接注入:
类似selenium的自动化工具,其实都可以直接获取到document对象,所以也就可以直接操作dom从而修改页面内容,达到注入新html的目的。


因为前3种的研究和开发成本都较高,所以可以考虑选择4、5种方法;这里记录下4、5种方法的实现方式:




PhantomJS的注入样例:


var page = require('webpage').create();
page.viewportSize = { width: 400, height : 400 };
page.content = '<html><body><canvas id="surface"></canvas></body></html>'; //要注入的HTML代码
page.render('2.png'); //截屏
phantom.exit();


JS利用iframe注入的样例:


var iframe = '<iframe src="about:blank" frameborder="0" name="FirebugUI" id="FirebugUI" style="border: 0px; visibility: visible; z-index: 2147483647; position: fixed; width: 100%; left: 0px; bottom: 0px; height: 241px; display: block;"></iframe>';
$("body").append(iframe); //添加iframe
var ifs = $('#FirebugUI').contents().get(); //获取iframe的document对象
var ifs2 = document.getElementById('FirebugUI').contentWindow.document; //获取iframe的document对象
var ifs3 = window.frames["FirebugUI"].document;
ifs.head.innerHTML = "<title>test JS iframe</title>";
ifs.body.innerHTML = "<div>success</div>";



标签:浏览器,html,接口,JS,源码,iframe,document,注入
From: https://blog.51cto.com/u_15918230/5954439

相关文章

  • 直播网站程序源码,FlowLayoutManager 流式布局
    直播网站程序源码,FlowLayoutManager流式布局 importandroid.graphics.Rectimportandroid.util.Logimportandroid.util.SparseArrayimportandroid.view.Viewimport......
  • 在线直播系统源码,循环滚动RecyclerView的实现
    在线直播系统源码,循环滚动RecyclerView的实现 publicclassAutoRecyclerViewextendsRecyclerView{  privatestaticfinallongTIME_AUTO_POLL=16; private......
  • 直播小程序源码,配置tabbar底部导航栏
    直播小程序源码,配置tabbar底部导航栏 //配置tabbar导航栏"tabBar":{"borderStyle":"black","selectedColor":"#FB7299","color":"#444444","list":[{"pagePath":......
  • Dubbo架构设计与源码解析(一) 架构设计
    作者:黄金一、架构演变单应用架构---->垂直架构---->分布式架构---->微服务架构---->云原生架构二、Dubbo总体架构1、角色职能•Container:服务容器(to......
  • Python单元测试框架unittest+requests +HTMLTestRunnerNew
    1)写用例TestCase2)执行用例1:TestSuite存储用例,2:TestLoader找用例,存储用例,存放指定的TestSuite3)对比实际结果/期望结果,判定用例是否通过#断言Assert4)出局测试报告TextT......
  • Nginx内存池源码剖析
    Nginx源码版本:1.13.1Nginx内存池的定义主要位于如下两个文件中:ngx_palloc.hngx_palloc.c首先是几个重要的宏定义:#defineNGX_MAX_ALLOC_FROM_POOL(ngx_pagesi......
  • jsp企业财务管理系统设计与实现(论文+PPT+源码)
    毕业设计(论文)任务书第1页毕业设计(论文)题目:企业财务管理系统设计与实现毕业设计(论文)要求及原始数据(资料):了解企业费用管理流程的关键点;2.深入研究企业费用流程中的各个环节;3.熟......
  • Babel源码解析(一):源码调试(上)
    Babel源码解析(一):源码调试(上)Versions开发环境、npm包版本信息:名称版本babelv7.20.6nodev16.16.0npmv8.11.0OSmacOS13.1(22C65)ForkBabel......
  • Linux中源码安装软件
    源码安装以安装nginx为例:(1)安装准备:yuminstallgccgcc-c++gcc-g77;(2)下载源码包直接官网下载然后通过tar-zxvf命令解压到相应路径。 (3)安装源码包。编译安装软......
  • 无广告,注重隐私保护,这款手机浏览器亲测值得一用
    市面上的手机浏览器非常多,然而真正能做到无广告、注重隐私保护的浏览器却非常少。今天,给大家带来一款与众不同的浏览器,不仅内存小、无广告无新闻无推送,还非常得安全可靠,功......