簡體   English   中英

使用Greasemonkey或userscript將遠程JavaScript文件替換為本地調試副本

[英]Replace remote JavaScript file with a local debugging copy using Greasemonkey or userscript

在調試使用Google后端的客戶端應用時,我添加了一些調試版本的功能,並使用Chrome開發者工具腳本編輯器插入它們。

但是這種方法存在許多限制,首先是編輯器似乎並不總是使用去縮小文件,而當JS文件長度為35K行時,這是一個問題。

另一個問題是在加載時間內完成的所有初始化都使用原始的“未修補”函數,因此這並不理想。

我想用我自己的本地副本替換遠程javascript.js文件,大概是在文件名上使用一些正則表達式,或者任何合適的策略,我很樂意使用Firefox或Chrome,如果一個比另一個更容易。

所以基本上,正如@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代理。 Charles Web HTTP代理似乎是解決此問題的主要方法。 基本上它的工作方式是當你的瀏覽器向遠程HTTPS服務器發出請求時,ssl代理攔截請求,並從服務器的ip地址生成服務器證書,它與自己的根CA簽署,並發送回瀏覽器。 瀏覽器顯然抱怨自簽名證書,但是在這里你可以選擇將ssl代理根CA證書安裝到瀏覽器中,讓瀏覽器迷惑並允許ssl代理人在中間進行操作並對原始響應進行替換和過濾身體。

替代滾動你自己的chrome擴展我決定使用我自己的chrome擴展,我計划提供。 目前它處於一個非常硬編碼的我自己的要求狀態,但它工作得很好,即使對於https請求,另一個好處是瀏覽器插件解決方案可以與瀏覽器開發人員工具更緊密地集成。

還有一個工具Requestly - Chrome擴展可以用來重寫URL並用本地托管庫替換你的生產庫,設置簡單,界面非常友好。

看看這個:

在此輸入圖像描述

PS:我知道這已經得到了回答,但我仍然回答這個問題,因為它對未來的讀者非常有益。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM