Linux上无头,可编写脚本的Firefox / Webkit?

时间:2010-01-15 17:20:26

标签: firefox webkit screen-scraping headless-browser

我希望自动化一些网络互动,即从安全网站定期下载文件。这主要涉及输入我的用户名/密码并导航到相应的URL。

我在Python中尝试过简单的脚本,然后是更复杂的脚本,只是发现这个特定的网站正在使用一些讨厌的基于javascript和flash的机制进行登录,渲染我的方法毫无用处。

然后我尝试了HTMLUnit,但这似乎也不想工作。我怀疑使用Flash是个问题。

我真的不想再考虑它了,所以我倾向于编写一个实际的浏览器脚本来登录并获取我需要的文件。

要求是:

  • 在linux服务器上运行(即没有X运行)。如果我真的需要X,我可以做到这一点,但我不会高兴。
  • 要可靠。我想开始这件事,再也不去想它了。
  • 可编写脚本。没有什么太复杂,但我应该能够告诉浏览器要采取的各种步骤和访问页面。

对于无头,无X脚本的浏览器,是否有任何好的工具包?你有没有尝试过这样的事情?如果有的话,你有没有任何智慧的话语?

7 个答案:

答案 0 :(得分:39)

phantomjs怎么样?

答案 1 :(得分:17)

我用IE嵌入式浏览器做了相关的任务(尽管它是带有隐藏浏览器组件面板的gui应用程序)。实际上你可以采用任何layout engine并削减输出逻辑。导航应该通过触发类似脚本的事件来完成。

您可以使用Crowbar。它是firefox(Gecko引擎)的无头版本。它将浏览器转换为可以接受请求的RESTful服务器(“获取URL”)。所以它解析html,将其表示为DOM,等待所有脚本执行的定义延迟。

适用于linux。我想你可以使用JS和丰富的XULrunner功能轻松扩展它以实现你的目标。

答案 2 :(得分:9)

你试过Selenium吗?它允许您使用Firefox的扩展记录使用场景,以后可以使用多种不同的方法进行播放。

编辑:我刚才意识到这是一个非常晚的回应。 :)

答案 3 :(得分:6)

看看WebKitDriver。该项目包括WebKit的无头实现。

答案 4 :(得分:1)

我不知道如何进行Flash交互(我也感兴趣),但对于html / javascript,您可以使用Chickenfoot

要在Linux上使用无头+可编写脚本的浏览器,您可以使用Qt webkit libraryHere is an example use

答案 5 :(得分:0)

要完成此操作,我只需编写发布到CouchDBs(example及其Futon)的Chrome扩展程序。将Couch添加到清单中的权限以允许跨域XHR。

(我来到这个线程寻找一个无头的替代我已经做的事情;找到这个线程,我将在某个时候尝试Crowbar。)

另外,考虑到这个网站奇特的特点,我不禁想知道你是否可以利用一些安全漏洞绕过Flash和Javascript。

答案 6 :(得分:-1)

iMacros for Linux允许您编写Firefox和Chrome脚本:http://wiki.imacros.net/Linux