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方法

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

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




目录
相关文章
|
3月前
|
数据采集 自然语言处理 监控
分享53个杂七杂八的Python源代码总有一个是你想要的
分享53个杂七杂八的Python源代码总有一个是你想要的
20 1
|
3月前
|
数据采集 监控 数据可视化
分享78个Python源代码总有一个是你想要的
分享78个Python源代码总有一个是你想要的
18 0
|
3月前
|
数据采集 数据可视化 数据挖掘
分享40个Python源代码总有一个是你想要的
分享40个Python源代码总有一个是你想要的
70 0
|
4月前
|
前端开发 测试技术 Python
软件测试/测试开发|Python selenium CSS定位方法详解
软件测试/测试开发|Python selenium CSS定位方法详解
30 0
|
JavaScript
web自动化之selenium的特殊用法(一)
文章目录 web自动化之selenium的特殊用法(一) 1、get_attribute() 2、js滚动页面 3、Tab键点击页面未展示元素 4、通过空格键执行页面滚动操作 1.摁空格键 2.报错:TypeError: list indices must be integers or slices, not WebElement ———————————————— 版权声明:本文为CSDN博主「梦无矶」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_46158060/article/details/
310 0
|
机器学习/深度学习 人工智能 Python
Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
36626 0
Python3,为了考研,我用了9.9行代码,搞出一个GUI翻译器,从此再也不用百度翻译了。
|
SQL 数据挖掘 测试技术
怎么才能写出好看的Python代码?这五个工具你得用上
怎么才能写出好看的Python代码?这五个工具你得用上
185 0
怎么才能写出好看的Python代码?这五个工具你得用上
|
前端开发
web自动化之selenium的特殊用法(二)
文章目录 web自动化之selenium的特殊用法(二) selenium-键盘操作,keys的的使用 (1)keys包的导入 (2)组合键使用 (4)常用组合键 (5)常用功能键 Python-Selenium:如何通过click在新的标签页打开链接? selenium 带有空格的class name且不唯一的元素定位
124 0
朱星烨教你制作拜年python软件——GUI妙用
2022年虎年,制作拜年软件,使用python技术的GUI,能够和收到祝福的朋友互动功能,设计软件后的美工调整
朱星烨教你制作拜年python软件——GUI妙用
|
Web App开发
Chrome插件Vimium的基础用法
Chrome插件Vimium的基础用法
591 0