使用Greasemonkey或userscript将远程JavaScript文件替换为本地调试副本

Tom*_*m H 34 javascript firebug greasemonkey google-chrome

在调试使用Google后端的客户端应用程序时,我添加了一些调试版本的函数,并使用Chrome Developer Tools脚本编辑器插入它们.

但是这种方法存在许多限制,首先是编辑器似乎并不总是使用去缩小文件,而当JS文件长度为35K行时,这是一个问题.

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

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

Tom*_*m H 19

所以基本上,正如@BrockAdams所确定的,根据要求,这些类型的问题有几种解决方案,它们遵循2种方法中的任何一种.

  1. 浏览器API switcharoo.
  2. 基于代理的拦截欺骗.

浏览器API switcharoo. firefox和chrome都支持浏览器扩展,可以利用特定于平台的API分别在firefox和chrome的情况下为"onbeforeload"或"onBeforeRequest"注册事件处理程序.chrome API目前是实验性的,因此这些工具很可能在firefox下更好地开发.肯定会做出类似需求的2个工具是AdBlock plusJsdeminifier,它们都有源代码可用.

这两个firefox应用程序的关键点是它们在浏览器获取它之前拦截Web请求并在http/https加密阶段的另一侧操作,因此可以看到解密的响应,但是在另一个中确定,他们没有做这件事,虽然jsdeminifier是非常有用的,我没有找到一个Firefox插件做的正是我想要的,但我可以从这些以前的插件看到,这有可能与Firefox和铬.虽然他们实际上并没有按要求行事.

代理基于拦截befiddlement这绝对是在一个普通的HTTP环境是更好的选择,也有一大堆的代理,如pivoxy的fiddler2,查尔斯网页的HTTP代理,想必一些我没看具体如Snort的支持某种过滤.

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

https案例.代理vs插件 当请求是https时,代理无法看到请求网址或响应正文,因此无法进行冷却交换.但是,有一个选项适用于那些喜欢搞乱浏览器的人.这就是中间人SSL代理.在查尔斯的Web HTTP代理似乎是主要的解决这个问题.基本上它的工作方式是当你的浏览器向远程HTTPS服务器发出请求时,ssl代理拦截请求,并从服务器的ip地址生成服务器证书,它与自己的根CA签署,并发送回浏览器.浏览器显然抱怨自签名证书,但是在这里你可以选择将ssl代理根CA证书安装到浏览器中,让浏览器迷惑并允许ssl代理人在中间进行操作并对原始响应进行替换和过滤身体.

替代滚动你自己的chrome扩展 我决定使用我自己的chrome扩展,我计划提供.目前它处于一个非常硬编码的我自己的要求状态,但它工作得很好,即使对于https请求,另一个好处是浏览器插件解决方案可以与浏览器开发人员工具更紧密地集成.


sac*_*024 17

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

看看这个:

在此输入图像描述

PS:我知道这已经得到了回答,但我仍然回答这个问题,因为它对未来的读者非常有益.