我想将几个本地.js文件注入网页。我只是指客户端,就像在我的浏览器中一样,我不需要任何其他人访问该页面就可以看到它。我只需要一个.js文件,然后制作它就好像该文件一直通过<script>
标签包含在页面的html中。
如果页面加载后本地文件中的内容可用,则可以使用一秒钟。
如果我必须在电脑上“手动”使用控制台或其他东西,这是可以的。
我一直试图这样做两天,我尝试过Greasemonkey,我尝试使用JavaScript控制台手动加载文件。让我感到惊讶的是,没有(显然)已有的方法可以做到这一点,这似乎是一件非常简单的事情。不过,我认为简单与普通不同。
如果有帮助,我想这样做的原因是在基于JS的聊天客户端上运行聊天机器人。一些机器人的代码被混合到预先存在的聊天代码中 - 为此,我让Fiddler拦截对... / chat.js的请求并将其替换为本地文件。但我有两个.js文件,它们与页面本身的任何内容“独立”。页面上没有我可以替换它们的任何.js文件,所以我不能使用Fiddler。
答案 0 :(得分:4)
由于你已经使用了fiddler脚本,你可以在OnBeforeResponse(oSession: Session)
函数中执行类似的操作
if ( oSession.oResponse.headers.ExistsAndContains("Content-Type", "html") &&
oSession.hostname.Contains("MY.TargetSite.com") ) {
oSession.oResponse.headers.Add("DEBUG1_WE_EDITED_THIS", "HERE");
// Remove any compression or chunking
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
// Find the end of the HEAD script, so you can inject script block there.
var oRegEx = oRegEx = /(<\/head>)/gi
// replace the head-close tag with new-script + head-close
oBody = oBody.replace(oRegEx, "<script type='text/javascript'>console.log('We injected it');</script></head>");
// Set the response body to the changed body string
oSession.utilSetResponseBody(oBody);
}
www.html5rocks.com的工作示例:
if ( oSession.oResponse.headers.ExistsAndContains("Content-Type", "html") &&
oSession.hostname.Contains("html5rocks") ) { //goto html5rocks.com
oSession.oResponse.headers.Add("DEBUG1_WE_EDITED_THIS", "HERE");
oSession.utilDecodeResponse();
var oBody = System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
var oRegEx = oRegEx = /(<\/head>)/gi
oBody = oBody.replace(oRegEx, "<script type='text/javascript'>alert('We injected it')</script></head>");
oSession.utilSetResponseBody(oBody);
}
注意,您必须在fiddler中关闭流媒体:http://www.fiddler2.com/fiddler/help/streaming.asp我认为您需要解码HTTPS:http://www.fiddler2.com/fiddler/help/httpsdecryption.asp
我越来越少地使用fiddler脚本,支持fiddler .Net Extensions - http://fiddler2.com/fiddler/dev/IFiddlerExtension.asp
答案 1 :(得分:4)
如果您使用的是Chrome,请查看dotjs。
它会完全符合您的要求!
答案 2 :(得分:0)
如何使用jquery的jQuery.getScript()方法?
答案 3 :(得分:0)
将普通的html页面保存到文件系统,手动添加js文件,然后使用fiddler拦截这些调用,以便获得html文件的版本