Loading... ### 搭建phantomjs 首先进入[http://phantomjs.org/download.html](http://phantomjs.org/download.html) 选择你的操作系统进行下载安装包 小杰拿centos7.x 64位的VPS进行搭建的 运行命令 ```shell wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 ``` ![](https://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rBSKY2T2S0Xd8c1SOLzj9V6ko0ztcsdnWA/0) 下载文件到服务器,因为文件是bz2格式,所以我们需要使用bzip2命令进行解压 ```shell bzip2 -d phantomjs-2.1.1-linux-x86_64.tar.bz2 ``` 之后在执行tar解压命令到目录/user/local/ ```shell tar xvf phantomjs-2.1.1-linux-x86_64.tar -C /usr/local/ ``` 然后安装依赖软件 ```shell yum -y install wget fontconfig ``` ![](https://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rOnUJ11yDiaZjegsO5ttH0iczplGI5v0Gstw/0) 之后我们重命名文件夹 ```shell mv /usr/local/phantomjs-2.1.1-linux-x86_64/ /usr/local/phantomjs ``` 之后创建一个软链接,具体作用就是能直接调用phantomjs,就跟安装python等软件是一个原理 ```shell ln -s /usr/local/phantomjs/bin/phantomjs /usr/bin/ ``` 然后我们执行**phantomjs** ```shell [root@root ~]# phantomjs phantomjs> ``` 到这样就完成了安装phantomjs。上面的安装教程是参考[https://www.cnblogs.com/zengguowang/p/6911812.html](https://www.cnblogs.com/zengguowang/p/6911812.html) ### php调用phantomjs 下面是说说如何在web上运行phantomjs phantomjs是系统软件,我们需要用到php的**shell_exec**函数,启动这个函数后一定要重启php服务才能生成 首先我们在网站根目录中创建一个test.js的文件,内容代码如下 ```js var page = require('webpage').create(); //viewportSize being the actual size of the headless browser page.viewportSize = { width: 1024, height: 768 }; //the clipRect is the portion of the page you are taking a screenshot of page.clipRect = { top: 0, left: 0, width: 1024, height: 768 }; //the rest of the code is the same as the previous example page.open('<a href="https://www.bk1314.com/'" title="https://www.bk1314.com/'">https://www.bk1314.com/'</a>, function() { page.render('germy.png'); phantom.exit(); }); ``` 然后我们在服务器中路径移动到网站根目录,然后执行命令 ```shell [root@root blog.youngxj.cn]# phantomjs test.js ``` 等待服务器执行完成后,你就会在网站根目录发现多出一张图片 ![](https://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rHrtZ2pcLibjJIDC2dYpK7FyFuFUfuHiaHTw/0) 图片上虽然显示的不完整,但是说明我们的网站截图服务能正常使用了 那如何在web中调用运行呢,下面给大家写个小案例,你就能看懂了 ```js var page = require('webpage').create(); var sys = require('system');//创建system对象 var url = sys.args[1]; var filename = sys.args[2]; // 浏览器窗口大小 page.viewportSize = { width: 1024, height: 768 }; // 网页截图窗口大小 page.clipRect = { top: 0, left: 0, width: 1024, height: 768 }; // 进行网页打开并保存为图片的操作 page.open(url, function() { page.render(filename); phantom.exit(); }); ``` 以上代码重新保存为**test1.js** 以下代码保存为**index.php** ```php <?php // 网站url[一定要加http://] $url = $_GET['url']; // 图片名称[一定要写上图片格式] $filename = $_GET['name']; $ex = "phantomjs test1.js $url $filename"; shell_exec($ex); ``` 之后我们访问 **http://域名/index.php?url=https://www.bk1314.com&name=a.png** 就会发现根目录出现一个a.png ![](https://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rEwFjpz5JH0k3afTa4WKWefDrK3ibmBMZOQ/0) 到现在我们的php就能够利用get参数进行网站截图了。 很多眼睛细的同学应该会发现两个截图效果中没有中文字符,全是乱码 这个是服务器本身不包含中文字符,需要自己手动安装中文字符字体(具体如何操作可以参考[https://www.linuxidc.com/Linux/2016-09/135548.htm](.com/Linux/2016-09/135548.htm)) 当然phantomjs远不止这么点功能,他还支持模拟head头,cookie,ua等数据,还可以进行控制台信息输出,网站加载项记录等等功能,更多参数可以参考官网[http://phantomjs.org/](http://phantomjs.org/) 也可以参考(中文):[https://www.cnblogs.com/liuliliuli2017/p/6746555.html](https://www.cnblogs.com/liuliliuli2017/p/6746555.html) 最后修改:2022 年 06 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏