From ab38240acb9418a4aef893eb9831495087d6ad78 Mon Sep 17 00:00:00 2001 From: Yann PETITJEAN Date: Fri, 19 Jun 2026 17:16:13 +0200 Subject: [PATCH] chore: block chrome cookies in order to dont use browser service worker --- app/models/browser.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/models/browser.rb b/app/models/browser.rb index 75253c22..e39315db 100644 --- a/app/models/browser.rb +++ b/app/models/browser.rb @@ -1,3 +1,6 @@ +require "fileutils" +require "json" + class Browser PAGE_TIMEOUT = 1.minute PROCESS_TIMEOUT = 30.seconds @@ -45,6 +48,17 @@ class Browser "no-sandbox" => nil }.freeze + CHROME_CONTENT_SETTING_BLOCK = 2 + + CHROME_PROFILE_PREFERENCES = { + profile: { + block_third_party_cookies: true, + default_content_setting_values: { + cookies: CHROME_CONTENT_SETTING_BLOCK + } + } + }.freeze + STEALTH_EXTENSION = Rails.root.join("vendor/javascript/stealth.min.js").freeze class << self @@ -128,6 +142,8 @@ def run_script_on_html(html, script, script_tag) private def browser + prepare_user_data_dir + @browser ||= Ferrum::Browser.new(settings) end @@ -141,6 +157,13 @@ def user_data_dir @user_data_dir ||= "/tmp/chrome-#{SecureRandom.hex(8)}" end + def prepare_user_data_dir + preferences_path = File.join(user_data_dir, "Default", "Preferences") + + FileUtils.mkdir_p(File.dirname(preferences_path)) + File.write(preferences_path, JSON.generate(CHROME_PROFILE_PREFERENCES)) + end + def with_page page = create_page yield(page)