我正在尝试创建一个反向代理来工作http://www.meowbify.com/,这是一个很酷的平台,可以用猫动画替换图像。我尝试了 Apache 和 nginx“反向代理”,只是为了反向代理一个现有网站,它与 www.bcc.co.uk 等网站配合良好,但与 edition.cnn.com/ 不兼容。(我在 apache 中使用常规的 ReverseProxyPass,在 nginx 中使用 proxy_pass)。在 apache 中,我还使用了 proxy_html_module,以便重写链接。
那么如何http://www.meowbify.com/有用吗?我搜索了 mobifiy 网站,其中说明:
工作原理:Mobify.js 使用一种称为客户端适配的技术在浏览器中重新混合 HTML。浏览器会解释重新混合的内容,就好像服务器首先发送了它一样!
Mobify.js 标签引导适配并加载执行该适配的 Mobify.js 文件。该标签可在 iOS、Android 和 BlackBerry 浏览器中激活。默认情况下,Mobify.js 文件从开发服务器加载。
开发服务器是 Mobify Client 的一部分,Mobify Client 是用于构建 Mobify.js 项目的命令行工具。它会根据请求动态编译 Mobify.js 文件。该文件包含两部分:Mobify.js API 和站点特定适配。
适配表现为对源 DOM(由页面的原始 HTML 构建的 DOM)的一系列操作。可以选择 HTML 元素,然后使用模板进行渲染。最后,将渲染后的模板写入浏览器。
长话短说,它使用了一些 CSS 魔法来显示适合每个浏览器的网站。
我猜测 mewbifity 的诡计就是操纵网站目录(即 cat.'site'.meowbify.com/)。
那么我怎样才能做类似的事情呢?
提前致谢,Guyl
答案1
- 设置一个带有处理程序的网站,该处理程序接受 URL 作为查询字符串的一部分
- 每次向该网站发出请求时,都与传递的 URL 建立自己的网络连接
- 抓取生成的 HTML 中的
<img>
标签 src
将每个标签中的属性值替换<img>
为你自己的图片的 URL- 响应原始请求,提供替换后的 HTML
- ????
- 利润。
至于具体如何执行上述任何/所有操作,这些将是支持您首选语言的社区的编程问题。
请记住,这不会改变您的目标客户(受害者?)的整个网络,只会改变那些指定他们想要代理的 URL 的用户。
答案2
Meowbify 实际上是开源的,因此你可以查看 github 上的代码并在需要时获得启发:https://github.com/mobify/meowbify
它使用一种非常简单的方法对所需的 URL 进行编码:cat/cats 指定 http 或 https 协议,然后是原始主机名,然后是 .meowbify.com,然后是原始 URL 中的路径和查询字符串。
在请求所需的文档后,它使用 SAX 样式的流式 XML 解析器来查找并重写它感兴趣的标签(在本例中,主要是元素src
的属性<img>
),然后提供生成的 HTML。