Skip to content

Commit 8eb03f7

Browse files
fix cookies/browser
1 parent 95d19d4 commit 8eb03f7

File tree

2 files changed

+52
-12
lines changed

2 files changed

+52
-12
lines changed

OpacityCore/src/main/assets/extension/background.js

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
browser.webRequest.onHeadersReceived.addListener(
22
function (details) {
33
let url = details.url;
4-
5-
let domain = new URL(url).hostname;
4+
let request_domain = new URL(url).hostname;
5+
let cookie_domain;
66

77
let cookiesHeaders = details.responseHeaders.filter(
88
(header) => header.name.toLowerCase() === "set-cookie"
@@ -24,17 +24,39 @@ browser.webRequest.onHeadersReceived.addListener(
2424
// Parse cookies
2525
let cookieDict = {};
2626
cookies.split("\n").forEach((cookie) => {
27-
let cookieParts = cookie.split(";")[0].split("=");
28-
let cookieName = cookieParts[0].trim();
29-
let cookieValue = cookieParts[1].trim();
30-
cookieDict[cookieName] = cookieValue;
27+
console.log("Cookie: " + cookie);
28+
browser.runtime.sendNativeMessage("gecko", {
29+
event: "test",
30+
domain: cookie,
3131
});
32+
let parts = cookie.split(";").map(p => p.trim());
33+
34+
let [name, value] = parts[0].split("=");
35+
36+
cookieDict[name] = value;
37+
38+
parts.slice(1).forEach(attr => {
39+
let [key, val] = attr.split("=");
40+
if (key.toLowerCase() === "domain") {
41+
/** RFC 6265
42+
* If the first character of the attribute-value string is %x2E ("."):
43+
Let cookie-domain be the attribute-value without the leading %x2E
44+
(".") character.
45+
*/
46+
if (val.startsWith(".")) {
47+
val = val.substring(1);
48+
}
49+
cookie_domain = val;
50+
}
51+
});
52+
});
53+
3254

3355
// Send cookies back to the app (GeckoView) via messaging
3456
browser.runtime.sendNativeMessage("gecko", {
3557
event: "cookies",
3658
cookies: cookieDict,
37-
domain: domain,
59+
domain: cookie_domain || request_domain,
3860
});
3961
},
4062
{ urls: ["<all_urls>"] }, // Intercept all URLs

OpacityCore/src/main/kotlin/com/opacitylabs/opacitycore/InAppBrowserActivity.kt

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.mozilla.geckoview.AllowOrDeny
2020
import org.mozilla.geckoview.GeckoResult
2121
import org.mozilla.geckoview.GeckoSession
2222
import org.mozilla.geckoview.GeckoSession.ContentDelegate
23+
import org.mozilla.geckoview.GeckoSessionSettings
2324
import org.mozilla.geckoview.GeckoView
2425
import org.mozilla.geckoview.WebExtension
2526

@@ -40,8 +41,18 @@ class InAppBrowserActivity : AppCompatActivity() {
4041
) {
4142
val receiver = intent.getParcelableExtra<CookieResultReceiver>("receiver")
4243
val domain = java.net.URL(currentUrl).host
43-
val browserCookies = cookies[domain] ?: JSONObject()
44-
receiver?.onReceiveResult(browserCookies)
44+
val matchedCookies = JSONObject()
45+
for ((cookieDomain, cookieObject) in cookies) {
46+
val cleanDomain = cookieDomain.trimStart('.')
47+
if (domain == cleanDomain || domain.endsWith(".$cleanDomain")) {
48+
val keys = cookieObject.keys()
49+
while (keys.hasNext()) {
50+
val key = keys.next()
51+
matchedCookies.put(key, cookieObject.get(key))
52+
}
53+
}
54+
}
55+
receiver?.onReceiveResult(matchedCookies)
4556
}
4657
}
4758
}
@@ -151,8 +162,8 @@ class InAppBrowserActivity : AppCompatActivity() {
151162
cookies[domain] =
152163
cookies[domain]?.let { existingCookies ->
153164
JsonUtils.mergeJsonObjects(
154-
receivedCookies,
155-
existingCookies
165+
existingCookies,
166+
receivedCookies
156167
)
157168
}
158169
?: receivedCookies
@@ -169,8 +180,15 @@ class InAppBrowserActivity : AppCompatActivity() {
169180
"gecko"
170181
)
171182

183+
val settings = GeckoSessionSettings.Builder()
184+
.usePrivateMode(true)
185+
.useTrackingProtection(true)
186+
.allowJavascript(true)
187+
.build()
188+
189+
172190
geckoSession =
173-
GeckoSession().apply {
191+
GeckoSession(settings).apply {
174192
setContentDelegate(object : ContentDelegate {})
175193
open(OpacityCore.getRuntime())
176194
}

0 commit comments

Comments
 (0)