tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

cookies.py (1049B)


      1 import json
      2 
      3 # TODO(https://crbug.com/406819294): Simplify relative import for util.
      4 import importlib
      5 util = importlib.import_module("speculation-rules.prefetch.resources.util")
      6 
      7 def main(request, response):
      8  cookies = json.dumps({
      9      key.decode("utf-8"): request.cookies[key].value.decode("utf-8")
     10      for key in request.cookies
     11  })
     12 
     13  sec_purpose = request.headers.get("Sec-Purpose", b"").decode("utf-8")
     14 
     15  cookie_count = int(
     16      request.cookies[b"count"].value) if b"count" in request.cookies else 0
     17  response.set_cookie("count", f"{cookie_count+1}",
     18                      secure=True, samesite="None")
     19  response.set_cookie(
     20      "type", "prefetch" if sec_purpose.startswith("prefetch") else "navigate")
     21 
     22  headers = [(b"Content-Type", b"text/html"), (b"Cache-Control", b"no-store")]
     23 
     24  if b"cookieindices" in request.GET:
     25    headers.extend([(b"Vary", b"Cookie"), (b"Cookie-Indices", b"\"vary1\", \"vary2\"")])
     26 
     27  content = util.get_executor_html(
     28    request,
     29    f'window.requestCookies = {cookies};')
     30 
     31  return headers, content