-
Notifications
You must be signed in to change notification settings - Fork 8
/
background.js
132 lines (121 loc) · 5.22 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Ignore X-Frame-Options header - Original code from: https://gist.github.com/dergachev/e216b25d9a144914eae2
chrome.webRequest.onHeadersReceived.addListener(
function(details) {
for (var i = 0; i < details.responseHeaders.length; ++i) {
if (details.responseHeaders[i].name.toLowerCase() == 'x-frame-options') {
details.responseHeaders.splice(i, 1);
return {
responseHeaders: details.responseHeaders
};
}
}
}, {
urls: ["*://www.bing.com/*", "*://www.google.com/*", "*://www.google.co.in/*"],
types: [ 'sub_frame' ]
}, ["blocking", "responseHeaders", "extraHeaders"]
);
// Update request headers
chrome.webRequest.onBeforeSendHeaders.addListener(
changeRequestHeaders,
{
urls: ["*://www.bing.com/*", "*://www.google.com/*", "*://www.google.co.in/*"],
},
['blocking', 'requestHeaders', 'extraHeaders']
);
// Add Edge as a user agent to support Bing chat
function changeRequestHeaders(details) {
for (var i = 0; i < details.requestHeaders.length; ++i) {
if (
details.requestHeaders[i].name.toLowerCase() === 'user-agent'
&& details.url.indexOf('Edg') <= -1
) {
details.requestHeaders[i].value = details.requestHeaders[i].value + ' Edg/111.0.1661.44';
}
if (
details.requestHeaders[i].name.toLowerCase() === 'sec-ch-ua'
&& details.url.indexOf('Google Chrome') <= -1
) {
let value = details.requestHeaders[i].value;
let valueList = value.split(', ');
valueList[valueList.length - 1] = '"Microsoft Edge";v="114"'
value = valueList.join(', ')
details.requestHeaders[i].value = value;
}
}
return {
requestHeaders: details.requestHeaders,
};
}
// !! https://developer.chrome.com/extensions/settings_override
//urls: ["*://www.bing.com/*", "*://www.google.com/*"]
// This event is fired with the user accepts the input in the omnibox.
chrome.omnibox.onInputEntered.addListener(function(query) {
if (query.startsWith('chat ')) {
var searchUrl = `https://www.bing.com/search?q=${encodeURIComponent(query.substring(5))}&showconv=1&sendquery=1&FORM=hpcodx`;
var bardUrl = 'https://bard.google.com/';
chrome.tabs.create({ url: bardUrl }, function(tab) {
var bardTabId = tab.id;
chrome.tabs.executeScript(bardTabId, { code: 'var iframe = document.createElement("iframe");' +
'iframe.src = "' + searchUrl + '";' +
'iframe.style = "width:50%;height:100%;position:absolute;top:0;right:0;z-index:99999";' +
'document.body.appendChild(iframe);'
});
});
} else {
var search_url = chrome.runtime.getURL("search.html");
search_url = search_url + "?q=" + encodeURIComponent(query);
navigate(search_url);
}
});
function navigate(url) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.update(tabs[0].id, {url: url});
});
}
const shopPrefix = "shop";
const chatPrefix = "chat";
chrome.webRequest.onBeforeRequest.addListener(
function (details) {
if (details.url.indexOf("https://www.doubleshotsearch.download/chrome-extension/search/?q=") !== -1
|| details.url.indexOf("chrome-extension://" + chrome.runtime.id + "/?q=") !== -1) {
var url = $.url(details.url);
var query = url.param("q");
var search_url = chrome.runtime.getURL("search.html");
search_url = search_url + "?q=" + encodeURIComponent(query);
let queryWords = query.split(" ");
if (queryWords.length > 1) {
switch (queryWords[0].toLowerCase()) {
case shopPrefix:
queryWords[0] = shopPrefix;
query = queryWords.join(" ");
break;
case chatPrefix:
queryWords[0] = chatPrefix;
query = queryWords.join(" ");
break;
default:
break;
}
}
if (query.startsWith("chat ")) {
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
chrome.tabs.update(tabs[0].id, { url: "https://bard.google.com/" }, function () {
setTimeout(() => {
chrome.tabs.sendMessage(tabs[0].id, {
action: "chat",
chatText: query.substring(5),
});
}, 2000);
});
});
} else {
// Update to support the Edge version: 111.0.1661.54
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
chrome.tabs.update(tabs[0].id, { url: search_url });
});
}
}
},
{urls: ["<all_urls>"]},
["blocking"]
);