Hacer que el selenium tome todas las cookies.

Me dijeron que hiciera una auditoría de cookies de nuestros sitios web frontales, ahora somos dueños de muchos dominios, por lo que realmente no voy a revisar manualmente cada uno de ellos extrayendo las cookies. Decidí irme con el selenium. Esto funciona hasta el punto en el que quiero tomar cookies de terceros.

Actualmente (python) puedo hacer

driver.get_cookies() 

Para todas las cookies que se configuran desde mi dominio, pero esto no me da ninguna Google, Twitter, Vimeo u otras cookies de terceros

He intentado modificar los permisos de las cookies en el controlador de Firefox, pero no ayuda. Alguien sabe como puedo conseguirlo.

Selenium solo puede obtener las cookies del dominio actual:

getCookies

java.util.Set getCookies ()

Obtenga todas las cookies para el dominio actual. Esto es equivalente a llamar “document.cookie” y analizar el resultado

De todos modos, escuché que alguien usó un complemento de Firefox que pudo guardar todas las cookies en XML. Por lo que yo sé, es tu mejor opción.

Su pregunta ha sido respondida en StackOverflow aquí

Paso 1: debe descargar e instalar la extensión “Obtener todas las cookies en XML” para Firefox desde aquí (no olvide reiniciar Firefox después de instalar la extensión).

Paso 2: ejecuta este código de Python para que FirefoxWebDriver de Selenium guarde todas las cookies en un archivo xml y luego lee este archivo:

 from xml.dom import minidom from selenium import webdriver import os import time def determine_default_profile_dir(): """ Returns path of Firefox's default profile directory @return: directory_path """ appdata_location = os.getenv('APPDATA') profiles_path = appdata_location + "/Mozilla/Firefox/Profiles/" dirs_files_list = os.listdir(profiles_path) default_profile_dir = "" for item_name in dirs_files_list: if item_name.endswith(".default"): default_profile_dir = profiles_path + item_name if not default_profile_dir: assert ("did not find Firefox default profile directory") return default_profile_dir #load firefox with the default profile, so that the "Get All Cookies in XML" addon is enabled default_firefox_profile = webdriver.FirefoxProfile(determine_default_profile_dir()) driver = webdriver.Firefox(default_firefox_profile) #trigger Firefox to save value of all cookies into an xml file in Firefox profile directory driver.get("chrome://getallcookies/content/getAllCookies.xul") #wait for a bit to give Firefox time to write all the cookies to the file time.sleep(40) #cookies file will not be saved into directory with default profile, but into a temp directory. current_profile_dir = driver.profile.profile_dir cookie_file_path = current_profile_dir+"/cookie.xml" print "Reading cookie data from cookie file: "+cookie_file_path #load cookies file and do what you need with it cookie_file = open(cookie_file_path,'r') xmldoc = minidom.parse(cookie_file) cookie_file.close() driver.close() #process all cookies in xmldoc object 

Sí, no creo que Selenium le permita interactuar con otras cookies que no sean su dominio actual.

Si conoce los dominios en cuestión, entonces podría navegar a ese dominio, pero supongo que esto es poco probable.

Sería un riesgo masivo de seguridad si pudiera acceder a las cookies en varios sitios.