将完整代码传递给phantomjs

Rog*_*ers 2 exec go phantomjs

我正在Go中编写一个服务,我正在使用phantomJS从给定的URL生成图像.从我的Go程序,我正在使用Exec启动phantomJS二进制文件.这工作正常,但现在我正在寻找一种方法来传递完整的代码,以及运行二进制文件的调用.我的代码如下:

var args = require('system').args;
var webPage = require('webpage');
var page = webPage.create();

page.viewportSize = {
    width: 1920,
    height: 1080
};

page.open("http://www.url2fetch.com", function (status) {
  var base64 = page.renderBase64('PNG');
  console.log(base64);
  phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)

这永远不会改变.除了获取的网址:).所以我的具体问题是:是否可以启动phantomJS并将上面的代码作为参数传递,以便可以通过一次调用执行.原因:我不想将phantomjs脚本与我的Go程序一起打包.

Art*_* B. 5

PhantomJS有一个交互式版本,您可以通过stdin传递代码,但是有一个错误(版本1.9.x和2.0.0),因为没有页面可以打开,这使得它实际上无法使用.

没有办法将脚本传递给PhantomJS进行解释.您需要至少有一个文件.你也可以

  1. 创建随可执行文件一起提供的模板文件,并使用该文件和附加(URL)参数调用PhantomJS

  2. 你生成文件进入一些临时目录,让PhantomJS使用它.

如果您有理由相信写入时间与使用时间漏洞将被利用,那么您应该使用变体1.

要完成第一个案例,您可以system.args在PhantomJS中使用来自go的传递的命令行选项,例如URL.