无头浏览器是啥?它有啥用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无头浏览器是啥?它有啥用?相关的知识,希望对你有一定的参考价值。
参考技术A 什么是无头浏览器 平时我们上网查阅信息、观看视频等活动,一般都是通过浏览器完成的,IE、chrome、火狐等都是我们经常使用的浏览器,它们都拥有非常好用的可视化操作界面,配合鼠标就可以进行网上活动。而无头浏览器也叫做无界面浏览器,它可以运行在服务器端,也具有普通浏览器的能力,只是它没有界面,
常见的框架有Puppeteer、Phantomjs等
无头浏览器的特点
1、使用方式
我们以Phantomjs为例,既可以以cli方式使用,也可以在代码中require进去,它甚至可以提供一个类似于node那样的REPL环境。
2、加载网络资源
既然是浏览器,加载网络资源显然是其基本的能力,resourceReceived和resourceRequested这两个回调函数可以监控加载的资源,利用它们就可以做一些网络监控。既然能获取网页的内容,那么就可以用来做爬虫!
3、截图
既然是无界面的,那如果我们想看加载的页面是什么样子的,怎么办?它提供了截图功能,使用render方法就可以生成页面快照,还提供了设置网页大小等功能。
4、插入外部资源
它可以向页面中插入外部资源,比如插入一个js,这一点上比较像chrome插件。
5、生成自定义网页
它既能获取人家的网页,同时也能生成自己的网页,设置content属性就行。
6、提供document和window对象
在服务器中是不存在document和window对象的,但是Phantomjs提供了这两个变量。
7、操作页面
既然Phantomjs提供了document和window这两大对象,那么我们就可以像在普通浏览器里面一样使用它们的方法,比如操作dom元素、发送dom事件等。
8、测试
Phantomjs本身并不是测试框架,但是它可以配合jasmine等测试框架进行自动化测试。
无头就是headless 的中文,所谓无头浏览器就是没有用户界面的浏览器。
它可以运行在服务器端,通过命令行的方式调用,比如需要截取任意网站的截图,网址由用户输入,那就需要在服务器端装一个headless浏览器,可以命令调用来截图。
除了截图,还能操作DOM,做一些爬虫的事情,在服务器端完成自动化操作。
常用的有三个:Selenium,PhantomJS,Chrome-headless 。
使用举例:
这样就实现了截取百度这个网站的页面。
更复杂的操作就要看手册了
ActivityManager 中的奇怪函数:isUserAMonkey。这是啥意思,它有啥用?
【中文标题】ActivityManager 中的奇怪函数:isUserAMonkey。这是啥意思,它有啥用?【英文标题】:Strange function in ActivityManager: isUserAMonkey. What does this mean, what is its use?ActivityManager 中的奇怪函数:isUserAMonkey。这是什么意思,它有什么用? 【发布时间】:2011-12-09 04:17:15 【问题描述】:我在包android.app.ActivityManager
中找到了以下函数。
public static boolean isUserAMonkey ()
reference 描述:
public static boolean isUserAMonkey ()
自:API 8 级如果用户界面当前正被猴子弄乱,则返回“true”。
我被这个奇怪的功能震惊了。还有几个问题。
这是做什么的(用户界面当前被 猴子)是什么意思?
这个函数有什么实际用途?
为什么他们使用isUserAMonkey
作为函数名?
【问题讨论】:
没有适当的文档。那么我们如何使用该功能。他们应该对他们的文档进行审查。 根据HefferWolf的回答,这个方法用于android框架的一些自动测试(我认为),所以我们根本不需要使用这个功能..所以不需要PROPER文档。 震惊猴子 在我看来,它就像泄漏到生产库中的测试代码,在本例中是 ActivityManager。让您的生产代码知道它当前是否正在测试,并且可能基于该知识以任何方式改变它的行为,这与测试代码的整个点相悖,这很容易导致海森错误。它还增加了 API 的复杂性,使其更难理解和维护。这个 SO 问题甚至存在的事实就足够了。 看到这个方法我笑了 【参考方案1】:此方法用于检查当前用户是否为test user by some automatic testing, called 'monkey' by Android devs。
【讨论】:
没错。这个页面值得一看:developer.android.com/guide/developing/tools/monkey.html【参考方案2】:Monkey 是在您的模拟器或设备上运行并生成 用户事件的伪随机流,例如点击、触摸或手势, 以及一些系统级事件。你可以用猴子来 以随机但可重复的方式对您正在开发的应用程序进行压力测试。
也请参考这些链接:
http://developer.android.com/tools/help/monkey.html what is the use of ActivityManager.isUserAMonkey() method?【讨论】:
以上是关于无头浏览器是啥?它有啥用?的主要内容,如果未能解决你的问题,请参考以下文章