From f7db81a03b76b6b55a374e28ec86fe3a409f1b0a Mon Sep 17 00:00:00 2001 From: FoxRefire <155989196+FoxRefire@users.noreply.github.com> Date: Fri, 26 Apr 2024 10:53:24 +0900 Subject: [PATCH] Records requestBody from POST requests --- background.js | 21 ++++++++++++++++++++- popup.js | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/background.js b/background.js index b67b6f2..9df0a2a 100644 --- a/background.js +++ b/background.js @@ -1,15 +1,19 @@ let psshs=[]; let requests=[]; +let bodys=[]; let pageURL=""; function convertHeaders(obj){ return JSON.stringify(Object.fromEntries(obj.map(header => [header.name, header.value]))) } + +//Get URL and headers from POST requests chrome.webRequest.onBeforeSendHeaders.addListener( function(details) { if (details.method === "POST") { requests.push({ url:details.url, - headers:convertHeaders(details.requestHeaders) + headers:convertHeaders(details.requestHeaders), + body:bodys.find((b) => b.id == details.requestId).body }); } }, @@ -17,6 +21,20 @@ chrome.webRequest.onBeforeSendHeaders.addListener( ["requestHeaders"] ); +//Get requestBody from POST requests +chrome.webRequest.onBeforeRequest.addListener( + function(details) { + if (details.method === "POST") { + bodys.push({ + body:btoa(String.fromCharCode(...new Uint8Array(details.requestBody.raw[0]['bytes']))), + id:details.requestId + }); + } + }, + {urls: [""]}, + ["requestBody"] +); + //Receive PSSH from content.js chrome.runtime.onMessage.addListener( function (request, sender, sendResponse) { @@ -24,6 +42,7 @@ chrome.runtime.onMessage.addListener( case "RESET": psshs=[]; requests=[]; + bodys=[]; break; case "PSSH": psshs.push(request.text) diff --git a/popup.js b/popup.js index d52ef34..f3280e7 100644 --- a/popup.js +++ b/popup.js @@ -11,6 +11,7 @@ async function guess(){ let vars=`pssh="${document.getElementById('pssh').value}"\n` vars+=`licUrl="${requests[userInputs['license']]['url']}"\n` vars+=`licHeaders='${requests[userInputs['license']]['headers'].replace(/\\/g, "\\\\")}'\n` + vars+=`licBody="${requests[userInputs['license']]['body']}"\n` let pre=await fetch('python/pre.py').then(res=>res.text()) let after=await fetch('python/after.py').then(res=>res.text()) let scheme=await fetch(`python/schemes/${document.getElementById("scheme").value}.py`).then(res=>res.text())