我正在开展一个项目,我需要废弃网页,所以我经历了教程,我发现phantomJs将是最好的选择。因为它允许我们获取angularJs站点和基于ajax的视图站点的HTML内容,我已经为它编写代码并且工作正常,但问题是我无法获得css和js文件,如果它只写了短文件的路径。
如果受害者使用网站的完整网址,如下所示
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
它工作正常,因为受害者正在使用我可以使用的js的完整URL。 但如果受害者正在使用网址
<script src="assets/js/jquery.min.js"></script>
然后这对我来说是一个问题我无法获得当前HTML内容的css和js,所以就我所做的我写了一些幻像代码。我已在下面发布。
var page = new WebPage()
var fs = require('fs');
page.onLoadFinished = function() {
console.log("page load finished");
page.render('export.png');
fs.write('1.html', page.content, 'w');
phantom.exit();
};
page.open("http://insttaorder.com/", function() {
page.evaluate(function() {
});
});
我需要的是,我需要在我的本地计算机上使用所有css和js文件,我在google,GitHub上搜索过但没有得到任何特定的解决方案,
答案 0 :(得分:2)
解决任务的策略是:
虽然可以使用PhantomJS 来下载和保存文件,但这样做会非常不理想。相反,让我们遵循unix philisophy,一个程序应该只完成一项工作,但做得好。我们将使用优秀的wget
实用程序从PhantomJS准备的列表中下载文件。
var page = require('webpage').create();
var fs = require('fs');
page.open('http://insttaorder.com/', function(status)
{
// Get all links to CSS and JS on the page
var links = page.evaluate(function(){
var urls = [];
$("[rel=stylesheet]").each(function(i, css){
urls.push(css.href);
});
$("script").each(function(i, js){
if(js.src) {
urls.push(js.src);
}
});
return urls;
});
// Save all links to a file
var url_file = "list.txt";
fs.write(url_file, links.join("\n"), 'w');
// Launch wget program to download all files from the list.txt to current folder
require("child_process").execFile("wget", ["-i", url_file], null, function (err, stdout, stderr) {
console.log("execFileSTDOUT:", stdout);
console.log("execFileSTDERR:", stderr);
// After wget finished exit PhantomJS
phantom.exit();
});
});
答案 1 :(得分:1)
您可以通过onResourceRequested
活动获取所有请求的资源。
通过检查请求方法和URL,您可以过滤掉您不想要的资源,并在以后自行下载。
您无需担心路径,您从活动中获得的url
始终是完整的。
var webPage = require('webpage');
var page = webPage.create();
page.onResourceRequested = function(req) {
if(req.method === 'GET')
if(req.url.endsWith('.css')) console.log('requested css file', JSON.stringify(req));
else if (req.url.endsWith('.js')) console.log('requested js file', JSON.stringify(req));
};
的更多信息