ich versuche alle Cookies (first und third party) einer beliebigen Webseite aus zu lesen.
Mein erster Ansatz war mit selenium und dem chromedriver eine komplette Seite zu durchlaufen (also alle Links rekursiv zu verfolgen) und hinterher die Cookie-Datenbank von Google Chrome aus zu lesen. Da selenium von sich aus keine third party Cookies auslesen kann, hielt ich das für die sinnvollste Idee. Erstmal hat das auch funktioniert, nur bei manchen Webseiten ist aus irgendeinem Grund die Datenbank leer, obwohl in Google Chrome die Cookies angezeigt werden. Wenn ich nach beenden des Browsers die Cookie sqlite3 Datenbank per Datenbankbrowser öffne, sind manchmal die Cookies in der Datenbank aber manchmal auch nicht.
Hier ein Beispielcode:
Code: Alles auswählen
from selenium import webdriver
import os, shutil, sqlite3
browser_list_place = 0
browser_list = []
profiles_folder = "profiles"
def getcookies(url):
if os.path.isdir(profiles_folder):
shutil.rmtree(profiles_folder)
co = webdriver.ChromeOptions()
co.add_argument("--no-sandbox")
co.add_argument("--user-data-dir=" + profiles_folder + "/" + str(browser_list_place))
browser_list.append(webdriver.Chrome('D:\crawler\chromedriver.exe', options=co))
browser_list[browser_list_place].set_page_load_timeout(30)
browser_list[browser_list_place].get(url)
#browser_list[browser_list_place].quit()
for folder in range(0, browser_list_place + 1):
con = sqlite3.connect(profiles_folder + "/" + str(folder) + "/Default/Cookies")
cur = con.cursor()
cur.execute("SELECT * FROM cookies")
rows = cur.fetchall()
for row in rows:
print(row)
getcookies('https://developer.mozilla.org/de/')
Hier auch nochmal ein Screenshot:
Meine zwei Hauptfragen sind nun:
1. Warum ist die Datenbank manchmal leer und manchmal nicht? Was mache ich falsch?
2. Gibt es evtl. einen effizienteren und/oder einfacheren Weg alle Cookies (first und third party) ohne selenium aus zu lesen?
Danke schon mal für eure Hilfe!