phantomjs 另类用法

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_21158419/article/details/51744653 这几天接到了一个数据采集的项目 通过对网站的前期分析得到以下内容1.网站本身采用.NET开发2.需抓取内容采用DES加密虽然得到了前端javascript的加解密算法,但大家也知道跨语言算法想要交互开发难度是相当大的。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_21158419/article/details/51744653

这几天接到了一个数据采集的项目 

通过对网站的前期分析得到以下内容

1.网站本身采用.NET开发

2.需抓取内容采用DES加密

虽然得到了前端javascript的加解密算法,但大家也知道跨语言算法想要交互开发难度是相当大的。原打算修改现有php DES算法进行匹配发现难度太大,费时费力。后突然想到是否可以在php中调用js脚本来处理,这也就是本文章重点了phantomjs。其实很简单 第一版本打开网页直接执行解码方法,但用这种方法处理速度会被拉慢,毕竟有个网页访问的过程,之后就想是否可以调用本地自己构造的网页来进行同等的处理呢,我在Windows上测试是可行的,暂未在liunx上进行测试。

首先构造本地网页非常简单,就是一个引用解码脚本的空html文档,名为Demo.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript" src="webdes.js"></script>
</head>
<body>
</body>
</html>

然后开始写phantomjs处理脚本,名为Model.js

var page = require('webpage').create();
page.open('Demo.html', function (status) {
		if(status !== 'success' ){
		console.log('FAIL');
	}else{
		 var a = '{keys}';
		 var b = '{encrypt}';

		console.log(page.evaluate(function(c,d){
				return jsdecrypt(c,d);
			},a,b));
	}
    phantom.exit();
});
通过phantomjs的api page.evaluate来执行解密方法 ,原打算直接通过命令行直接传参数,发现无法成功,猜测因为加密字符串大小超过命令行最大字符长度。所以只能通过php读入js文件再进行替换了。

最后就是php部分

//模板数据替换
$str=file_get_contents("Model.js");//打开文件
$str=str_replace("{keys}",$a,$str);
$str=str_replace("{encrypt}",$b,$str);
file_put_contents("Decode.js",$str);//把替换的内容写到js文件中 
//解码操作
$command = "phantomjs Decode.js";  
print_r (passthru($command));  //因为输出内容为多行所以使用passthru方法

最后说明一下这种方法毕竟是调用第三方程序来处理,肯定比不上原生直接写算法要快,但速度还是可以接受的

我也就抛砖引玉一下,这个模板可以直接套用。




目录
相关文章
|
2月前
|
数据挖掘 Shell 测试技术
怎么用Python解析HTML轻松搞定网页数据
**Python解析HTML摘要** 本文介绍了使用Python处理HTML的常见需求,如数据提取、网络爬虫和分析,并讨论了三种解析方法。正则表达式适用于简单匹配,但对复杂HTML不理想;BeautifulSoup提供简单API,适合多数情况;lxml结合XPath,适合处理大型复杂文档。示例展示了如何用这些方法提取链接。
|
3月前
|
存储 Python
Python处理文件的常用代码
Python处理文件的常用代码
20 0
|
4月前
|
人工智能 物联网 测试技术
怎么用Python高仿一个任务管理器
怎么用Python高仿一个任务管理器
76 0
|
4月前
|
数据采集 自然语言处理 监控
分享53个杂七杂八的Python源代码总有一个是你想要的
分享53个杂七杂八的Python源代码总有一个是你想要的
57 1
|
4月前
|
数据采集 数据可视化 数据挖掘
分享40个Python源代码总有一个是你想要的
分享40个Python源代码总有一个是你想要的
169 0
|
4月前
|
数据采集 监控 数据可视化
分享78个Python源代码总有一个是你想要的
分享78个Python源代码总有一个是你想要的
42 0
|
4月前
|
人工智能 图形学 Python
分享40个Python游戏源代码总有一个是你想要的
分享40个Python游戏源代码总有一个是你想要的
326 0
|
程序员 Python
python是神马?
python是神马?
116 0
python是神马?
|
JavaScript 前端开发 开发工具
很方便的javascript开发工具--火狐的Scratchpad(代码草稿本)工具
火狐的console控制台可以很方便的测试单行js代码,就像这样:
131 0
很方便的javascript开发工具--火狐的Scratchpad(代码草稿本)工具
朱星烨教你制作拜年python软件——GUI妙用
2022年虎年,制作拜年软件,使用python技术的GUI,能够和收到祝福的朋友互动功能,设计软件后的美工调整
朱星烨教你制作拜年python软件——GUI妙用

相关实验场景

更多