在浏览器扩展中编译C++代码
Compiling C++ code in a browser extension
我正在 Firefox 中开发浏览器扩展程序来拦截 HTTP 请求并更改它们。由于我项目的目的,我需要合并一个内置于C++的项目,以便处理该信息。重写C++项目需要太多的工作(这是一个大项目)。我读到我可以将C++代码制作成.dll文件并使用它,但我不确定如何做到这一点(编程扩展的新手。确实做了很多网络开发)。
我一直在做很多研究,NPAPI 似乎是要走的路(我知道它正在逐步淘汰,但该项目只是我需要工作的概念证明)。但是,我不确定像FireBreath这样的框架是否可以进行扩展。它也需要在Firefox中,因为我的公司不使用其他任何东西。
有没有访问扩展中C++代码的好方法?如果有的话,我希望有一些教程的链接。我确实阅读了之前的线程,但它并没有给出关于使用什么的可靠结论。另外,如果有更好/更简单的方法可以做到这一点(插件等),我很想知道!
抱歉,如果这是在错误的论坛。这里还是新的:S
我同意评论,即在选择这个之前,您应该绝对检查所有其他可能性。 我可能会考虑编写自己的代理服务器(类似于Charles的工作方式),当它运行时,它会做任何你想做的事情。
FireBreath 可用于创建插件,并且只能用于创建插件。 但是,您可以在扩展中使用插件,至少目前是这样(您已经知道计划的逐步淘汰)。 因此,如果您可以使用扩展捕获数据(我不知道扩展,所以我不确定您是否可以),那么您可以使用 javascript 扩展将其传递到插件实例中,以便执行您想要做的处理。
不过,经验法则:如果可以通过插件以外的任何其他方式完成,don't use a plugin
.
@taxilian说得对:
如果可以通过插件以外的任何其他方式完成,请不要使用插件。
编写一个实际的 Firefox 扩展会更合适。现在建议你使用js-ctypes与二进制blob(DLL,所以,dylib)进行交互。你会怎么做:
- 用Javascript编写大部分附加组件,因为这是通常完成的方式,因为它是最简单的方法。有一些方法可以拦截,修改和跟踪http请求/响应,例如http观察者是它的入口点。看看MDN和其他操纵HTTP请求的代码(其他附加组件),看看不同的部分(观察者,
nsIHttpChannel
,nsITracableChannel
- 为现有库创建仅限 C 的 API,包装加载项需要访问的C++ API。一般经验法则:保持简单。
- 将 js-ctypes 绑定组合到该仅限 C 的 API,以便您可以从 Javascript 使用它,并在其他扩展代码中使用这些绑定。
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值