【问题标题】:Replace remote JavaScript file with a local debugging copy using Greasemonkey or userscript使用 Greasemonkey 或用户脚本将远程 JavaScript 文件替换为本地调试副本
【发布时间】:2011-12-08 14:02:40
【问题描述】:

在调试使用 Google 后端的客户端应用时,我添加了一些函数的调试版本并使用 Chrome 开发者工具脚本编辑器插入它们。

但是这种方法有很多限制,首先是编辑器似乎并不总是处理去缩小的文件,当 JS 文件长 35K 行时,这是一个问题。

另一个问题是在加载期间完成的所有初始化都使用原始的“未修补”函数,因此这并不理想。

我想用我自己的本地副本替换远程 javascript.js 文件,大概在文件名上使用一些正则表达式,或者任何合适的策略,我很乐意使用 Firefox 或 Chrome,如果一个比另一个。

【问题讨论】:

  • Replace jQuery version of a page with Greasemonkey 的副本——展示了如何用本地版本替换远程 JS。
  • @Brock Adams 该解决方案是特定于 Windows 的,不适用于 unix-y 操作系统。不知道这对 OP 是否重要,但如果有人有一个通用的解决方案,那就太好了。
  • @Daniel Mendel,那里有 2 个解决方案。一个人可能会为 OP 工作,因为他在 Windows 上。另一个解决方案不仅限于 Windows,还解释了尝试使用用户脚本或 Greasemonkey 面部执行此操作的限制(尽管当移植到 Chrome 时答案可能会更好——我没有测试,因为我只使用 Chrome少量)。
  • @BrockAdams 很公平,我想事实是,实现这一目标的唯一无缝方法是进入浏览器和网络之间,您可以在其中欺骗请求,这样的解决方案总会结束特定于操作系统,因为它基本上是一种自我造成的中间人攻击。任何通用的解决方案都将在请求周期结束后进行,因此很麻烦。
  • 如果这没有得到令人满意的跨操作系统答案,一旦 SO 允许,我将提供赏金。

标签: javascript google-chrome firebug greasemonkey


【解决方案1】:

还有一个工具Requestly - Chrome 扩展程序,可用于重写 URL 并用本地托管库替换您的生产库,设置非常简单,界面非常友好。

看看这个:

PS:我知道有人回答了这个问题,但我仍然回答了这个问题,因为这对未来的读者非常有益。

【讨论】:

  • 很棒的工具。谢谢!
  • Requestly 也可用于 Firefox。从这里下载:requestly.in
  • 我不推荐。聊天中有一个内置功能,谁知道他们从您那里获取了哪些数据而无需提及。或者不提及它,以便您只需忽略描述即可知道。
【解决方案2】:

所以基本上,正如@BrockAdams 所指出的那样,根据要求,这些类型的问题有几种解决方案,它们遵循两种方法中的一种。

  1. 浏览器 API 切换。
  2. 基于代理的拦截问题。

浏览器 API 切换。 firefox 和 chrome 都支持浏览器扩展,这些扩展可以利用平台特定的 API 分别在 firefox 和 chrome 的情况下为“onbeforeload”或“onBeforeRequest”注册事件处理程序。 chrome API 目前是实验性的,因此这些工具可能会在 firefox 下得到更好的开发。 AdBlock plusJsdeminifier 这两个工具肯定可以做类似的事情,这两个工具都有可用的源代码。

这 2 个 firefox 应用程序的关键在于,它们在浏览器获取它并在 http/https 加密阶段的另一端操作之前 拦截 Web 请求,因此可以看到解密后的响应,但是正如the other post 中所指出的那样,尽管 jsdeminifier 非常有用,但我没有找到完全符合我要求的 firefox 插件,但我可以从之前的那些中看到插件,firefox 和 chrome 都可以使用。虽然他们实际上并没有按要求做事。

基于代理的拦截混淆 这绝对是普通 HTTP 环境中更好的选择,有一大堆代理,例如 pivoxy、fiddler2、Charles Web HTTP 代理,大概还有一些我没有特别关注诸如支持某种过滤的 snort。

对我来说最简单的解决方案是firefox上的foxyproxy和privoxy,并配置一个user.action和user.filter来检测页面的url,然后应用一个过滤器替换掉原来的src标签,为我自己一个。

https 案例。代理与插件 当请求是 https 时,代理看不到请求 url 或响应正文,所以它不能做很酷的交换东西。但是,对于那些喜欢弄乱浏览器的人来说,有一种选择。这就是中间人 SSL 代理。 Charles Web HTTP proxy 似乎是这个问题的主要解决方案。基本上它的工作方式是,当您的浏览器向远程 HTTPS 服务器发出请求时,ssl 代理会拦截该请求,并从服务器的 ip 地址动态生成服务器证书,并使用自己的根 CA 进行签名,并发送回浏览器。浏览器显然抱怨自签名证书,但是在这里您可以选择将 ssl 代理根 CA 证书安装到浏览器中,迷惑浏览器并允许 ssl 代理在中间进行替换和过滤原始响应身体。

替代滚动您自己的 chrome 扩展 我决定推出我自己的 chrome 扩展程序,我计划提供它。目前它处于我自己的需求状态的硬编码状态,但它工作得很好,即使对于 https 请求也是如此,另一个好处是浏览器插件解决方案可以更紧密地与浏览器开发工具集成。

【讨论】:

  • 我也非常有兴趣开发这样的解决方案(FF 或 Chrome 扩展)。你认为有可能看到你的插件或理解方法吗?
  • FF 扩展可以在 Charles 下载页面底部找到charlesproxy.com/download
猜你喜欢
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2021-06-26
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多