Firefox — Компиляция кода C ++ в расширении браузера

Я работаю над расширением браузера в Firefox, чтобы перехватывать HTTP-запросы и изменять их. Из-за цели моего проекта мне нужно будет включить проект, который построен на C ++, для обработки этой информации. Переписывание проекта на C ++ заняло бы слишком много времени (это большой проект). Я прочитал, что могу превратить код C ++ в файл .dll и использовать его, но я не уверен, как это сделать (что-то новое для расширений программирования. Много сделал для веб-разработчиков).

Я провел много исследований, и NPAPI, кажется, является подходящим способом (я знаю, что он постепенно сворачивается, но проект — просто подтверждение концепции, над которой мне нужно работать). Однако я не уверен, что фреймворки, такие как FireBreath, могут делать расширения. Это также должно быть в Firefox, так как моя компания больше ничего не использует.

Есть ли хороший способ доступа к коду C ++ в расширении? Я хотел бы некоторые ссылки на учебники, если таковые имеются. Я читал эта предыдущая тема, но это не дало твердого заключения о том, что использовать. Кроме того, если есть лучший / более простой способ сделать это (плагины и т. Д.), Я хотел бы знать!

Извините, если это не на том форуме. Все еще новенькое здесь: S

-1

Решение

Я согласен с комментариями, что вы должны абсолютно проверить все другие возможности, прежде чем идти с этим. Я бы, наверное, посмотрел на написание собственного прокси-сервера (похоже на Чарльз работает), что когда он работает, он делает все, что вы хотите сделать.

FireBreath можно использовать для создания плагинов и только для создания плагинов. тем не мение, Вы можете использовать плагин внутри расширения, по крайней мере, на данный момент (вы уже знаете о запланированном прекращении работы). Таким образом, если вы можете захватить данные с помощью расширения (а я не знаю расширений, поэтому я не уверен, можете ли вы это сделать или нет), то вы можете передать его в экземпляр плагина, используя ваше расширение javascript, чтобы выполнить обработку что ты хочешь сделать.

Правило большого пальца, хотя: Если это может быть сделано любым другим способом, чем плагин, don't use a plugin,

1

Другие решения

@taxilian правильно сказать:

Если это можно сделать любым другим способом, кроме плагина, не используйте плагин.

Написание фактического расширения Firefox было бы более подходящим. В эти дни рекомендуется использовать JS-ctypes для взаимодействия с двоичными двоичными объектами (DLL, так, dylib). Что бы вы сделали:

  • Напишите большую часть своего дополнения в Javascript, потому что именно так это обычно делается и потому что это самый простой способ. Существуют способы перехвата, изменения и отслеживания http запроса / ответа, например, http наблюдатели своего рода точка входа в это. Посмотрите на MDN и другой код (другие надстройки), которые манипулируют HTTP-запросами, чтобы увидеть, как разные части (наблюдатели, nsIHttpChannel, nsITracableChannel
  • Создайте C-only API для вашей существующей библиотеки, оборачивая C ++ API, к которому вам нужен доступ для вашего дополнения. Общее практическое правило: не усложняйте.
  • компоновать JS-ctypes привязки к этому C-only API, так что вы можете использовать его из Javascript и использовать эти привязки в вашем другом коде расширения.
1

По вопросам рекламы [email protected]