70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
const patterns = ["https://www.msn.com/*/news/*", "https://www.msn.com/*/tv/*","https://www.msn.com/*/movies/*" , "https://www.msn.com/*/sports/*", "https://www.msn.com/*/health/*", "https://www.msn.com/*/channel/*", "https://www.msn.com/*/travel/*", "https://www.msn.com/*/health/*", "https://www.msn.com/*/lifestyle/*"];
|
|
var found = 0;
|
|
var redirectUrl = "";
|
|
//Finds original article URL from DuckDuckGo dork.
|
|
async function findOrigUrl(title, site) {
|
|
var siteUrl = await ddGet("https://duckduckgo.com/html/?q=" + site);
|
|
console.log("Site Url: " + siteUrl);
|
|
var articleUrl = await ddGet("https://duckduckgo.com/html/?q=title:" + title + " site:" + siteUrl);
|
|
return articleUrl;
|
|
}
|
|
|
|
async function ddGet(url){
|
|
var results = await fetch(url)
|
|
.then(res => res.text());
|
|
var resultParse = results.split("<!-- This is the visible part -->");
|
|
var findUrl = resultParse[1].split('href="//duckduckgo.com/l/?uddg=');
|
|
var extractUrl = findUrl[1].split('>');
|
|
var trimUrl = extractUrl[0].split("&");
|
|
var url = decodeURIComponent(trimUrl[0]);
|
|
return url;
|
|
}
|
|
|
|
//Redirects the URL
|
|
async function redirect(requestDetails){
|
|
if(requestDetails.method === "POST" && requestDetails.requestBody && found != 1){
|
|
var rawData = requestDetails.requestBody.raw[0].bytes;
|
|
const decoder = new TextDecoder("utf-8");
|
|
var dataString = decoder.decode(rawData);
|
|
var data = JSON.parse(dataString);
|
|
var targetURL = "";
|
|
if(data.data.page.content.brand){
|
|
var brand = data.data.page.content.brand;
|
|
var title = data.data.page.content.title;
|
|
console.log(brand);
|
|
targetUrl = await findOrigUrl(title, brand);
|
|
console.log(targetUrl);
|
|
redirectUrl = targetUrl;
|
|
found = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Listener for any URL in the patterns list.
|
|
browser.webRequest.onBeforeRequest.addListener(
|
|
redirect,
|
|
{ urls: [ "https://browser.events.data.msn.com/*" ], },
|
|
["blocking", "requestBody"]
|
|
);
|
|
|
|
browser.webRequest.onBeforeRequest.addListener(
|
|
function (requestDetails){
|
|
found = 0;
|
|
},
|
|
{ urls: patterns },
|
|
["blocking"]
|
|
);
|
|
|
|
browser.browserAction.onClicked.addListener(
|
|
function (){
|
|
if(redirectUrl != ""){
|
|
let creating = browser.tabs.create({
|
|
url: redirectUrl,
|
|
});
|
|
redirectUrl = "";
|
|
creating.then(onCreated, onError);
|
|
|
|
}
|
|
|
|
});
|