当我们使用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即可。(安装方法自行百度)
<?php $base64_body = substr(strstr($_POST[base64],','),1); $data= base64_decode($base64_body); file_put_contents($_SERVER[&q...
header() 函数向客户端发送原始的 HTTP 报头。(官方解释)通俗的讲header函数将参数中的字符串作为服务端的响应头来返回给客户端。什么是服务端的响应头?打开谷歌浏览器看看network中的请求response header信息即可。更多的参数百度response header即可浏览器...
(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...
最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...
<?php /** * @throws Exception */ function curl() { throw new \Exception('err...