javascript – Phantomjs进程间通信
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Phantomjs进程间通信,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2664字,纯文字阅读大概需要4分钟。
内容图文
![javascript – Phantomjs进程间通信](/upload/InfoBanner/zyjiaocheng/954/523c386786484384ac85dd2a2e93cca1.jpg)
我正在尝试实现一个解决方案,通过使用PhantomJS,Web位置被打开评估,输出被保存到文件进行处理.特别是扫描恶意脚本.我已经能够使用运行一次的PhantomJS来实现该解决方案.例如,这完美地工作……
var system = require('system');
var page = require('webpage').create();
var lastReceived = new Date().getTime();
var requestCount = 0;
var responseCount = 0;
var requestIds = [];
var fileSystem = require('fs');
var startTime = new Date().getTime();
page.onResourceReceived = function (response) {
if(requestIds.indexOf(response.id) !== -1) {
lastReceived = new Date().getTime();
responseCount++;
requestIds[requestIds.indexOf(response.id)] = null;
}
};
page.onResourceRequested = function (request) {
if(requestIds.indexOf(request.id) === -1) {
requestIds.push(request.id);
requestCount++;
}
};
page.open('http://adserver.example.com/adserve/;ID=164857;size=300x250;setID=162909;type=iframe', function () {});
var checkComplete = function () {
// We don't allow it to take longer than 5 seconds but
// don't return until all requests are finished
if((new Date().getTime() - lastReceived > 300 && requestCount === responseCount) || new Date().getTime() - startTime > 5000) {
clearInterval(checkCompleteInterval);
console.log(page.content);
phantom.exit();
}
}
var checkCompleteInterval = setInterval(checkComplete, 1);
但是,我在创建和自动化系统时遇到了巨大的困难,不需要PhantomJS不断重启,这有很大的开销.
我尝试使用命名管道进行读取然后尝试打开传递的URL,但由于某种原因它无法正常打开.我很乐意并非常感谢任何关于此的指导.
解决方法:
值得一提的是,PhantomJS在HTTP通信方面表现优异.这就是为什么高级功能和性能更好,我总是使用资源池模式webserver模块.这个模块仍然被标记为实验,但直到现在我总是发现它非常稳定.
因此,我认为在您的情况下最好通过HTTP进行通信比通过文件IO进行通信更好.
这是一个非常基本的例子:
var page = require('webpage').create();
var server = require('webserver').create();
var system = require('system');
var host, port;
if (system.args.length !== 2) {
console.log('Usage: server.js <some port>');
phantom.exit(1);
} else {
port = system.args[1];
var listening = server.listen(port, function (request, response) {
var page=require('webpage').create();
page.open(request.post.target, function(status){
response.write("Hello "+page.title);
response.close();
});
});
if (!listening) {
console.log("could not create web server listening on port " + port);
phantom.exit();
}
//test only
var url = "http://localhost:" + port + "/";
console.log("SENDING REQUEST TO:");
console.log(url);
var data='target=https://stackoverflow.com/';
page.open(url,'post', data, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
console.log("GOT REPLY FROM SERVER:");
console.log(page.content);
}
phantom.exit();
});
}
内容总结
以上是互联网集市为您收集整理的javascript – Phantomjs进程间通信全部内容,希望文章能够帮你解决javascript – Phantomjs进程间通信所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。