Art*_* B. 11
这取决于多种情况.我只概述以下问题的答案的每个组合的步骤.
注册到onResourceRequested监听器并request.abort()根据匹配的URL.
只有在以下代码块不依赖于不应删除的代码时(这是不可能的),才能执行此操作.这很可能是在DOM中注册的单击事件所必需的.
在这种情况下取消请求,如1.,通过XHR下载脚本,删除不需要的代码部分并向DOM添加代码块.为此,您需要禁用Web安全性,否则如果资源不在同一个域中,则无法请求资源:--web-security=false.
onload(ol)执行&可以完全删除(rc)这可能非常容易出错.你会开始的时间间隔与setInterval(function(){}, 5)从page.onInitialized回调.在区间内,您需要检查window.onload页面上下文中是否设置了(或者您可以接触的其他内容).如果它确实是您要通过检查删除的功能,则将其删除window.onload.toString().match(/something/).
这可以直接完全在页面上下文(内部page.evaluate)中完成.
onload(ol)执行并包含其他代码(nr)从3开始,但window.onload你可以做,而不是删除
eval("window.onload = " + window.onload.toString().replace(/something/,''))
Run Code Online (Sandbox Code Playgroud)
您可以将页面加载为XHR,替换文本并将调整后的内容应用于页面.这基本上是一个填充about:blank页面.为此,您需要禁用Web安全性,否则如果资源不在同一个域中,则无法请求资源:--web-security=false或--local-to-remote-url-access=true.这也适用于3.和4.
但仍有一个问题.页面大多数时间不使用完整URL.所以当脚本或元素引用stuff.phpPhantomJS时无法请求它.当page.content设置,然后在网页URL本质上是关于:空白和不完整的URL的所有请求指向file:///....显然没有这样的文件.必须使用完整的URL对应替换这些资源.
这种URL有三种类型:
//example.com/resource.php 变量协议/resource.php 变量协议和域resource.php 变量协议,域和资源路径完整的例子:
var page = require('webpage').create(),
url = 'http://www.example.com';
page.open(url, function(status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
var content = page.evaluate(function(url){
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.send();
return xhr.responseText;
}, url);
page.render("test_example.png");
page.content = content.replace(/xample/g,"asy");
page.render("test_easy.png");
console.log("url "+page.url); // about:blank
phantom.exit();
}
});
Run Code Online (Sandbox Code Playgroud)
除了简单的字符串替换之外,您可能希望研究正确的操作技术.
| 归档时间: |
|
| 查看次数: |
6313 次 |
| 最近记录: |