Skip to content

Instantly share code, notes, and snippets.

@BlueSkyXN
Created March 29, 2024 06:04
Show Gist options
  • Select an option

  • Save BlueSkyXN/60229825f02d04d8c4af32ab83d31804 to your computer and use it in GitHub Desktop.

Select an option

Save BlueSkyXN/60229825f02d04d8c4af32ab83d31804 to your computer and use it in GitHub Desktop.
X-Forwarded-For Header eventPage.js
(function () {
let settings = {
spoofIp: '',
previous: [],
headers: ['X-Forwarded-For']
};
browser.storage.sync.get(settings).then((loadedSettings) => {
settings = loadedSettings;
setBadge(settings.spoofIp);
});
const extraInfoSpec = "chrome" === "chrome" ?
['blocking', 'requestHeaders', 'extraHeaders'] :
['blocking', 'requestHeaders'];
browser.webRequest.onBeforeSendHeaders.addListener(
(details) => {
if (settings.spoofIp) {
settings.headers.forEach(headerName => {
let index = details.requestHeaders.findIndex((el) => {
return (el.name === headerName)
});
if (index > -1) {
details.requestHeaders[index].value = settings.spoofIp;
} else {
details.requestHeaders.push({
'name': headerName,
'value': settings.spoofIp
});
}
});
}
return { requestHeaders: details.requestHeaders };
},
{ urls: ['<all_urls>'] },
extraInfoSpec
);
browser.storage.onChanged.addListener((changes, namespace) => {
console.log("storage changed", changes);
Object.entries(changes).forEach(([key, { newValue }]) => {
settings[key] = newValue;
if (key === 'spoofIp') {
spoofIp = changes['spoofIp'].newValue;
setBadge(spoofIp);
}
})
});
function setBadge(spoofIp) {
if (spoofIp) {
browser.browserAction.setIcon({ path: 'assets/logo-38.png' });
browser.browserAction.setTitle({ title: 'Spoofing ' + spoofIp });
} else {
browser.browserAction.setIcon({ path: 'assets/logo-38-bw.png' });
browser.browserAction.setTitle({ title: 'Currently not spoofing any IP Address. Click to set IP.' });
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment