Skip to content

Commit 054ac57

Browse files
authored
Ajout d'un onBeforeSendHeaders dans background.js pour intercepter le… (#317)
* Ajout d'un onBeforeSendHeaders dans background.js pour intercepter les requêtes vers /access/httpref/default.aspx et ajouter un referer maintenant requis par europresse. * N'effectue l'ajout d'un referrer si un consommable est présent
1 parent 59fbe00 commit 054ac57

File tree

2 files changed

+66
-2
lines changed

2 files changed

+66
-2
lines changed

ophirofox/background.js

+61
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,67 @@ async function injectEuropress() {
6969
});
7070
}
7171

72+
chrome.webRequest.onBeforeSendHeaders.addListener(
73+
function(details) {
74+
const url = new URL(details.url);
75+
const isTargetHost = url.hostname.includes("europresse.com") || url.hostname.includes("eureka.cc");
76+
const isTargetPath = url.pathname.startsWith("/access/httpref/default.aspx");
77+
78+
if (isTargetHost && isTargetPath) {
79+
return new Promise((resolve) => {
80+
chrome.storage.local.get(
81+
["ophirofox_request_type", "ophirofox_readPDF_request", "ophirofox_settings"],
82+
function(data) {
83+
const hasRequestType = data.ophirofox_request_type !== undefined;
84+
const hasReadPDFRequest = data.ophirofox_readPDF_request !== undefined;
85+
const hasConsumable = hasRequestType || hasReadPDFRequest;
86+
if (hasConsumable) {
87+
let referer = null;
88+
if (data.ophirofox_settings) {
89+
try {
90+
const settings = typeof data.ophirofox_settings === 'string'
91+
? JSON.parse(data.ophirofox_settings)
92+
: data.ophirofox_settings;
93+
const partner_name = settings.partner_name;
94+
const manifest = chrome.runtime.getManifest();
95+
const partners = manifest.browser_specific_settings.ophirofox_metadata.partners;
96+
const partner = partners.find(p => p.name === partner_name);
97+
98+
if (partner && partner.AUTH_URL) {
99+
const authUrl = new URL(partner.AUTH_URL);
100+
referer = `${authUrl.protocol}//${authUrl.hostname}`;
101+
}
102+
} catch (err) {
103+
console.error("Erreur lors de la détermination du referer:", err);
104+
}
105+
}
106+
107+
// Si un referer est déterminé, modifions l'en-têt
108+
if (referer) {
109+
// Chercher l'en-tête Referer existant ou en ajouter un nouveau
110+
let refererHeader = details.requestHeaders.find(header => header.name.toLowerCase() === "referer");
111+
112+
if (refererHeader) {
113+
refererHeader.value = referer;
114+
} else {
115+
details.requestHeaders.push({ name: "Referer", value: referer });
116+
}
117+
console.log(`Referer modifié pour ${details.url}: ${referer}`);
118+
}
119+
} else {
120+
console.log("Aucun consommable trouvé, referer non modifié");
121+
}
122+
resolve({ requestHeaders: details.requestHeaders });
123+
}
124+
);
125+
});
126+
}
127+
return { requestHeaders: details.requestHeaders };
128+
},
129+
{ urls: ["*://*.europresse.com/*", "*://*.eureka.cc/*"] },
130+
["blocking", "requestHeaders"]
131+
);
132+
72133
// update injection on permission change
73134
chrome.permissions.onAdded.addListener(injectEuropress);
74135
chrome.permissions.onRemoved.addListener(injectEuropress);

ophirofox/manifest.json

+5-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@
1414
"permissions": [
1515
"storage",
1616
"scripting",
17-
"https://nouveau.europresse.com/*"
17+
"webRequest",
18+
"webRequestBlocking",
19+
"https://nouveau.europresse.com/*",
20+
"https://eureka.cc/*"
1821
],
1922
"optional_permissions": [
20-
"webNavigation"
23+
"webNavigation"
2124
, "https://nouveau-europresse-com.essec.idm.oclc.org/*"
2225
, "https://nouveau-europresse-com.ezproxy.univ-catholille.fr/*"
2326
, "https://nouveau-europresse-com.ezproxy.upf.pf/*"

0 commit comments

Comments
 (0)