创建 Firefox 插件来观看并修改 XHR 请求和反应
更新:我想主题给出了一个错误的想法,即我正在寻找现有的插件。这是一个自定义问题,我不想要现有的解决方案。
我希望编写(或更恰当地说,修改并现有)插件。
这是我的要求:
- 我希望我的插件仅适用于特定站点
- 页面上的数据使用 2 路哈希进行编码
- 大量信息由 XHR 请求加载,有时 显示在动画气泡等中。
我的插件的当前版本通过 XPath 解析页面 表达式,解码数据并替换它们
问题出在那些显示的冒泡框上 鼠标悬停事件
- ,我意识到创建一个 XHR 可能是一个好主意 可以监听所有数据并动态解码/编码的桥
- 经过几次搜索,我遇到了 nsITraceableInterface[1][2][3]
只是想知道我是否走在正确的路径上。如果“是”,那么请 提供任何可能合适的额外指示和建议; 如果“否”,那么..好吧,请帮助提供正确的指示:)
谢谢,
比平。
[1]。 https://developer.mozilla.org/en/NsITraceableChannel
[2]。 http://www.softwareishard.com/blog/firebug/nsitraceablechannel -拦截-http-traffic/
[3]。 http://www.ashita.org/howto-xhr -通过-firefox-addon监听/
Update: I guess the subject gave a wrong notion that I'm looking for an existing addon. This is a custom problem and I do NOT want an existing solution.
I wish to WRITE (or more appropriately, modify and existing) Addon.
Here's my requirement:
- I want my addon to work for a particular site only
- The data on the pages are encoded using a 2 way hash
- A good deal of info is loaded by XHR requests, and sometimes
displayed in animated bubbles etc. The current version of my addon parses the page via XPath
expressions, decodes the data, and replaces themThe issue comes in with those bubblified boxes that are displayed
on mouse-over event- Thus, I realized that it might be a good idea to create an XHR
bridge that could listen to all the data and decode/encode on the fly - After a couple of searches, I came across nsITraceableInterface[1][2][3]
Just wanted to know if I am on the correct path. If "yes", then kindly
provide any extra pointers and suggestions that may be appropriate;
and if "No", then.. well, please help with correct pointers :)
Thanks,
Bipin.
[1]. https://developer.mozilla.org/en/NsITraceableChannel
[2]. http://www.softwareishard.com/blog/firebug/nsitraceablechannel-intercept-http-traffic/
[3]. http://www.ashita.org/howto-xhr-listening-by-a-firefox-addon/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
nsITraceableChannel 确实是正确的选择。 Jan Odvarko (softwareishard.com) 和我自己 (ashita.org) 的博客文章展示了如何做到这一点。您可能还想查看 http://www. ashita.org/implementing-an-xpcom-firefox-interface-and-creating-observers/,但是实际上没有必要在 XPCOM 组件中执行此操作。
步骤基本上是:
下面是实际代码我编写的一个特定于站点的附加组件,据我所知,其行为与您的非常相似。
在上面的代码中,
originalListener
是我们在链之前插入的侦听器。在创建跟踪侦听器时保留该信息并在所有三个回调中传递数据至关重要。否则什么都不会起作用(页面甚至无法加载。Firefox 本身是链中的最后一个)。注意:上面的代码中调用了一些函数,它们是piratequesting附加组件的一部分,例如:
parseQuery()
和dumpError()
nsITraceableChannel is indeed the way to go here. the blog posts by Jan Odvarko (softwareishard.com) and myself (ashita.org) show how to do this. You may also want to see http://www.ashita.org/implementing-an-xpcom-firefox-interface-and-creating-observers/, however it isn't really necessary to do this in an XPCOM component.
The steps are basically:
Below is actual code from a site-specific add-on I wrote that behaves very similarly to yours from what I can tell.
In the above code,
originalListener
is the listener we are inserting ourselves before in the chain. It is vital that you keep that info when creating the Tracing Listener and pass on the data in all three callbacks. Otherwise nothing will work (pages won't even load. Firefox itself is last in the chain).Note: there are some functions called in the code above which are part of the piratequesting add-on, e.g.:
parseQuery()
anddumpError()
篡改数据插件。另请参阅如何使用页面
Tamper Data Add-on. See also the How to Use it page
您可以尝试制作一个 Greasemonkey 脚本并覆盖
XMLHttpRequest
。代码看起来像:
另请注意,您可以将 GM 脚本转换为 Firefox 的插件。
You could try making a Greasemonkey script and overwriting the
XMLHttpRequest
.The code would look something like:
Also note that you can turn a GM script into an addon for Firefox.