类似 Opera Mini 的开源软件

8
我正在寻找任何相关的开源项目,可以在服务器端渲染网页并以图像形式传递到客户端(移动设备),就像Opera Mini和SkyFire一样。到目前为止,谷歌没有给我任何线索,因为我无法确定使用哪个术语。你们能给我一个提示吗?谢谢。

你可能想尝试搜索“代理(proxy)”,因为可能有一个开源的代理可以使用Webkit或类似技术来预渲染/优化/折叠页面。正如亚历山大的帖子所暗示的那样,这比仅仅将其呈现为图像更加复杂。即使是像Squid这样的普通HTTP代理也可以配置为缓存和压缩图像,从而使移动浏览比其他情况下更快。 - ravuya
我的母语不被任何主要的手机操作系统支持,而且我的国家刚刚开始提供移动互联网服务。为了让我们的人民能够查看网页,我需要创建一个类似于Opera Mini的软件,在服务器端呈现网页(这样我们就可以呈现复杂的脚本文本)。 - VOX
1
如果有一个关于这个的开源工作正在进行,那么开发它所需的成本和时间就会更少,因此可以免费发布。 - VOX
@VOX 你找到任何解决方案了吗? - Petr
4个回答

2

CutyCapt 似乎是你正在寻找的工具。它使用 WebKit 并将渲染的页面保存在不同的格式中。例如:./CutyCapt --url=http://www.example.org --out=example.png


CutyCapt似乎对此没有用处,因为CutyCapt不允许任何形式的交互。它只提供静态图像,而我需要使用JavaScript操作DOM,即当ajax轮询请求完成时,图片必须更新。我不确定是否可以通过使用phantomjs事件“onResourceReceived”来构建这样的流式渲染服务器。 - KIC

1

Opera Mini 服务器在将网站发送到手机之前不会将其处理为图像,而是处理为 OBML 格式


这对于浏览器来说是有意义的。你仍然需要处理链接等的点击。用一些PNG图像来完成这个任务似乎是很费力的。 - user405725

0

好的,这个问题仍未得到解答,我也对这样的解决方案感兴趣。由于在网络上找不到有用的东西,我将尝试一下。请将此答案理解为一个概念,而不是一个可直接使用的解决方案。

想象一个简单的工作流程,没有用户交互。用户打开网站,您的服务器加载网站,渲染图像并将图像提供给您的移动设备。

为确保您的图像是最新的,您需要在任何来自JavaScript的DOM操作时更新您的图像。这是一个棘手的问题,因为没有像“domChanged”这样的JavaScript事件。那么你能做什么呢?

我尝试构建了一个非常小的JavaScript,并与phantomjs一起使用。

var page = require('webpage').create();
var i = 0;

page.onResourceReceived = function(response) {
  page.render('stocktwits.' + (i++) + '.png');
};

page.open("http://stocktwits.com/home#people-and-stocks");

我假设请求的资源可能会与dom混淆。但这并不涵盖任何纯javascript setInterval或setTimout函数。

一旦你获得了所有“被动”的东西,你可以尝试提取任何超链接、表单元素和所有样式为“cursor: pointer;”的元素。这是我现在卡住的地方...而且由于这更像是一个“业余项目”,我打算放弃了 :-) 但如果有人继续下去,请告诉我。


0

有一个类似的开源项目 Browsh,它在终端中显示网页,并使用真彩块作为图片,从而显著减少数据使用量。甚至还有一个托管版本 html.brow.sh,不过终端版具有更多功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接