go - 将完整代码传递给phantomjs

标签 go phantomjs exec

我正在用 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();
});

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

最佳答案

PhantomJS 有一个交互式版本,您可以通过 stdin 传入代码,但有一个 bug (版本 1.9.x 和 2.0.0)因此无法打开任何页面,这使得它实际上无法使用。

无法将脚本传递到 PhantomJS 中进行解释。您需要至少有一个文件。您可以

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

  2. 您从某个临时目录生成文件并让 PhantomJS 使用它。

如果您有理由相信写入时与使用时漏洞会被利用,那么您应该选择变体 1。

要使第一个案例完整,您可以使用 system.args在 PhantomJS 中读取从 go 传递的命令行选项,例如 URL。

关于go - 将完整代码传递给phantomjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515665/

相关文章:

docker - Go App无法通过docker-compose中的websocket连接

java - 在 C++ 中 fork 一个新进程并执行一个 .jar 文件

php - 如何使用 PHP 的参数执行 .exe 并将输出放入 txt 文件?

go - 从 Golang 映射中读取字符串

go - 随着时间的流逝如何进行操纵?

Golang net.Listen IPv6

javascript - Babel es2015 预设不会将 Map 和 Set 转换为 es5

java - 如何确保我的程序生成的所有 Selenium Webdriver 在程序终止时都是 quit() ?

phantomjs - 运行脚本后自动关闭 PhantomJs

python - exec() 在遇到 : character 时引发 'unexpected EOF' 错误