PhantomJS

1. 什么是PhantomJS?

  PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络监测、网页截屏、无需浏览器的 Web 测试、页面访问自动化等。

  目前都是基于命令行的调用,还没有代码直接调用,java只能通过Runtime.getRuntime().exec("exefile");执行命令。

2. PhantomJS能做什么?

  动态执行js脚本、网页截图、自动化网页测试。

3. PhantomJS下载包example里面的例子介绍

arguments.js 获取输入参数
child_process-examples.js 启动子线程执行命令行命令
colorwheel.js 执行canvas代码,画一个圆,并输出png图片
countdown.js 倒计时demo
detectsniff.js 监听浏览器的navigator属性,看网页有没有读取这个属性
echoToFile.js 写文件操作
features.js 显示浏览器支持的和不支持的特性
injectme.js 注入js代码
loadspeed.js 统计请求网页需要的时间,并不一定执行完了js
loadurlwithoutcss.js 不请求css文件
modernizr.js 浏览器特性功能检测
module.js 调用模块
netlog.js 监听request和response
netsniff.js 请求数据统计
openurlwithproxy.js 通过代理服务器访问
outputEncoding.js 设置输出字符的编码方式
page_events.js 事件监听
pagecallback.js 可能在网页里面调用window.callPhantom通知给phantomjs,非常实用。
phantomwebintro.js 抓取网页的内容
post.js 发送post请求
postjson.js 发送post请求(Data是JSON)
postserver.js 一台服务器和一个post请求
printenv.js phantomjs的环境变量
printheaderfooter.js 这个不知道是干嘛的,而且还有一个错误,第67行要加一个var,也就是var paperSize = page.paperSize;
printmargins.js 设置截图的边距
rasterize.js 截图
render_multi_url.js 多页面截图
responsive-screenshot.js 多个截图尺寸
run-jasmine.js 定时检测页面是否加载完成
run-jasmine2.js 定时检测页面是否加载完成
run-qunit.js 定时检测页面是否加载完成
scandir.js 扫描目录下的文件
server.js 创建一个服务器
serverkeepalive.js 创建一个keepalive的服务器
simpleserver.js 创建一个简单服务器
sleepsort.js 这个也不知道是干嘛的
stdin-stdout-stderr.js 读取控制台信息
universe.js 标准模块写法
unrandomize.js 在onInitialized里重新定义js原始函数,比如Math.random
useragent.js 修改userAgent的值
version.js 显示phantomjs版本
waitfor.js 定时检测页面是否加载完成
walk_through_frames.js 主frame和子frame之间切换

9. PhantomJS技巧

增加--ignore-ssl-errors=true设置,客户端无证书也可以访问。不加就访问不了。

phantomjs.exe --ignore-ssl-errors=true fetch_web_content.js https://localhost/index.html

原文地址:https://www.cnblogs.com/angelshelter/p/6815134.html