Firefox расширение - фильтрация и изменение данных HTTP POST с помощью onBeforeRequest - PullRequest
0 голосов
/ 07 января 2020

Использование browser.webRequest.onBeforeRequest.addListener() Я могу фильтровать HTTP-запросы и изменять источник страниц, прежде чем они будут возвращены. Мне нужно перехватить HTTP-запросы POST и изменить данные, отправленные формой, перед отправкой на сервер. Проверьте код:

browser.webRequest.onBeforeRequest.addListener(
    function(details) {
        // The code in this if is just some experimentation.
        if(details.method == "POST") {
            let filter = browser.webRequest.filterResponseData(details.requestId)
            let decoder = new TextDecoder("utf-8")
            let encoder = new TextEncoder()
            filter.ondata = event => {
                let str = decoder.decode(event.data, {
                    stream: true
                });
                console.log(str)
            }
            // This is a where I attempt to modify POST data.
            let formData = details.requestBody.formData;
            //console.log(formData)
            if(formData) {
                Object.keys(formData).forEach(key => {
                    formData[key].forEach(value => {
                        //console.log(key)
                        if(key == 'testField'){
                            //console.log("found", formData[key])
                            details.requestBody.formData[key] = "INJECTED"
                            console.log('injected', details.requestBody.formData[key])
                        }
                    })
                })
            }

            return {details: details};
        }
    },
    {urls: ["https://example.com/*"]},
    ["blocking", "requestBody"]
);

Последний console.log печатает измененное значение, но возврат details не передает измененное значение на сервер. Как я могу использовать onBeforeRequest (или любой другой метод) в расширении Firefox для изменения переменных POST перед их отправкой на сервер?

Я не хочу вставлять код в веб-страницу. Я хочу отфильтровать траффи c.

...