当我们使用php爬虫采集网站时经常会遇到内容使用ajax异步加载。一般采取的方案是PHP模拟再请求api接口获取数据,但是有时候前端js加密非常麻烦,我们需要将js的加密方法转换为php方法方便curl请求。当然通过了解我们可以通过3种方案解决。
第一种:使用phpv8js扩展执行js代码。(pecl自行下载安装,windows安装方法http://www.yuzhiwei.com.cn/archives/238.html/comment-page-1)
<?php
//初始化
$v8 = new V8Js();
//js代码
$js = "
var char = 'abcdef';
var password = '123456';
function sign(char,password)
{
return char+password;
}
var token = sign(char,password);
token;
";
//尝试执行js
try
{
$ret = $v8->executeString($js, 'auth.js');
echo '执行成功:' . PHP_EOL;
var_dump($ret);
}
catch (Exception $e)
{
echo '代码异常' . PHP_EOL;
var_dump($e->getMessage());
}输出:abcdef123456
第二种:使用phantomjs加载网页,phantomjs软件内置一款webkit内核的浏览器,通过php的api调用完成真正的模拟访问,等待页面加载完成提取dom即可。(安装方法自行百度)
代码1:for循环批量插入100W数据<?php set_time_limit(0); $servername = "localhost"; $username = "root"; $password ...
001源码:/* * $xml_str是xml字符串 */ function xmltoarray($xml_str) { //禁止XML实体扩展攻击 libxml_disable_entity_loader(true); //拒绝包含...
md5/sha1+salt方式是目前各大cms常用的加密方式,虽然salt安全,但是各大md5网站也在研究这个方向,那么我们应该选择password_hash动态hash来助力,一种密码有多种hash结果.看代码模拟登陆.<?php //01.注册 $user ='zhang...
在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...
重构框架的时候想要考虑支持下cli模式,于是参考了thinkphp的底层。/** * 获取应用根目录 * @return string */ public static function getRootP...
elasticsearch的操作都是基于http协议的,已经有现成的php类库,composer安装即可。{ "require": { &...