Harder conditions for Sentry patching
This commit is contained in:
parent
5c1c786cf9
commit
5a85d6e78e
|
@ -93,7 +93,21 @@ export default definePlugin({
|
|||
// Ensure this is most likely the Sentry WebpackInstance.
|
||||
// Function.g is a very generic property and is not uncommon for another WebpackInstance (or even a React component: <g></g>) to include it
|
||||
const { stack } = new Error();
|
||||
if (!(stack?.includes("discord.com") || stack?.includes("discordapp.com")) || this.c != null || !String(this).includes("exports:{}")) {
|
||||
if (!(stack?.includes("discord.com") || stack?.includes("discordapp.com")) || !String(this).includes("exports:{}") || this.c != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
const assetPath = stack?.match(/\/assets\/.+?\.js/)?.[0];
|
||||
if (!assetPath) {
|
||||
return;
|
||||
}
|
||||
|
||||
const srcRequest = new XMLHttpRequest();
|
||||
srcRequest.open("GET", assetPath, false);
|
||||
srcRequest.send();
|
||||
|
||||
// Final condition to see if this is the Sentry WebpackInstance
|
||||
if (!srcRequest.responseText.includes("window.DiscordSentry=")) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -102,11 +116,6 @@ export default definePlugin({
|
|||
configurable: true,
|
||||
|
||||
get() {
|
||||
// One more condition to check if this is the Sentry WebpackInstance
|
||||
if (Array.isArray(this)) {
|
||||
return { exports: {} };
|
||||
}
|
||||
|
||||
new Logger("NoTrack", "#8caaee").info("Disabling Sentry by proxying its WebpackInstance cache");
|
||||
Object.setPrototypeOf(this, new Proxy(this, {
|
||||
get() {
|
||||
|
@ -114,8 +123,10 @@ export default definePlugin({
|
|||
}
|
||||
}));
|
||||
|
||||
Reflect.deleteProperty(Function.prototype, "g");
|
||||
Reflect.deleteProperty(Object.prototype, cacheExtractSym);
|
||||
Reflect.deleteProperty(window, "DiscordSentry");
|
||||
|
||||
return { exports: {} };
|
||||
}
|
||||
});
|
||||
|
@ -130,6 +141,8 @@ export default definePlugin({
|
|||
|
||||
set() {
|
||||
new Logger("NoTrack", "#8caaee").error("Failed to disable Sentry. Falling back to deleting window.DiscordSentry");
|
||||
|
||||
Reflect.deleteProperty(Function.prototype, "g");
|
||||
Reflect.deleteProperty(window, "DiscordSentry");
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue