-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackground.js
106 lines (92 loc) · 4.26 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
let extensionEnabled = true;
chrome.storage.sync.get('extensionEnabled', function(data) {
extensionEnabled = data.extensionEnabled !== false;
});
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {
if (extensionEnabled) {
var cookiesToSet = {
'_lang': 'us',
'__gpi': 'null',
'__gads': 'null',
'__utma': 'null',
'__utmb': 'null', //Google tracking cookie
'__utmc': 'null', //Google tracking cookie
'__utmt': 'null', //Google tracking cookie
'__utmz': 'null', //Google tracking cookie
'_ga': 'null', //Google tracking cookie
'datr': 'null', //Facebook tracking cookie
'personalization_id': 'null', //Twitter tracking cookie
'guest_id': 'null', //Twitter tracking cookie
's_cc': 'null', //Adobe tracking cookie
's_sq': 'null', //Adobe tracking cookie
's_vi': 'null', //Adobe tracking cookie
'UserMatchHistory': 'null', //LinkedIn tracking cookie
'bcookie': 'null', //LinkedIn tracking cookie
'lidc': 'null', //LinkedIn tracking cookie
'clhf03028ja': '133.7.66.6', // iplogger.org cookie for ip address
// Add more cookies as needed
};
details.requestHeaders = details.requestHeaders.map(header => {
if (header.name.toLowerCase() === 'cookie') {
// Split the Cookie header into individual cookies
var cookies = header.value.split('; ');
var cookieMap = {};
// Map each cookie to its value
cookies.forEach(cookie => {
var parts = cookie.split('=');
cookieMap[parts[0]] = parts[1];
});
// Set or overwrite cookies
Object.keys(cookiesToSet).forEach(name => {
cookieMap[name] = cookiesToSet[name];
});
// Rebuild the Cookie header value
header.value = Object.entries(cookieMap).map(([name, value]) => `${name}=${value}`).join('; ');
}
return header;
});
// If no Cookie header exists, add a new header with all cookies
if (!details.requestHeaders.some(header => header.name.toLowerCase() === 'cookie')) {
var cookieHeader = Object.entries(cookiesToSet).map(([name, value]) => `${name}=${value}`).join('; ');
details.requestHeaders.push({name: 'Cookie', value: cookieHeader});
}
details.requestHeaders.push(
{ name: 'X-Originating-IP', value: '1.1.1.1' },
{ name: 'X-Forwarded-For', value: '1.1.1.1' },
{ name: 'X-Remote-IP', value: '1.1.1.1' },
{ name: 'X-Remote-Addr', value: '1.1.1.1' },
{ name: 'X-Client-IP', value: '1.1.1.1' },
{ name: 'X-Host', value: '1.1.1.1' },
{ name: 'X-Forwarded-Host', value: '1.1.1.1' },
{ name: 'X-Forwarded-For', value: '1.1.1.1' },
{ name: 'user-agent', value: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.111 Safari/537.36' },
{ name: 'sec-ch-ua', value: 'Mozilla";v="116.0.5845.111", "Chromium";v="98' },
//{ name: 'referer', value: 'https://google.com/' }, is very buggy on certain websites
{ name: 'DNT', value: '1' },
{ name: 'Accept-Language', value: 'en-US,en;q=0.5' },
{ name: 'Cache-Control', value: 'no-store, no-cache, must-revalidate, max-age=0' },
{ name: 'Pragma', value: 'no-cache' },
//{ name: 'origin', value: 'https://google.com/' }, is very buggy on certain websites
//{ name: 'user-agents', value: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.111 Safari/537.36' }
);
}
return { requestHeaders: details.requestHeaders };
},
{ urls: ["<all_urls>"] },
["blocking", "requestHeaders", "extraHeaders"]
);
chrome.storage.onChanged.addListener(function(changes, namespace) {
if (changes.extensionEnabled) {
extensionEnabled = changes.extensionEnabled.newValue;
}
});
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.action === 'getEnabledState') {
sendResponse({ enabled: extensionEnabled });
} else if (request.action === 'toggleExtension') {
const newEnabledState = !extensionEnabled;
chrome.storage.sync.set({ extensionEnabled: newEnabledState });
sendResponse(newEnabledState);
}
});