@@ -94,14 +94,16 @@ def get_headers(domain_name: str) -> Dict[str, str]:
9494
9595
9696def get_cookies (domain_name : str , raise_requirements_error : bool = True ,
97- single_browser : bool = False , cache_result : bool = True ) -> Dict [str , str ]:
97+ single_browser : Optional [ str ] = None , cache_result : bool = True ) -> Dict [str , str ]:
9898 """Load cookies for a given domain from all supported browsers."""
99- if domain_name in CookiesConfig .cookies :
99+ if single_browser != "all" and domain_name in CookiesConfig .cookies :
100100 return CookiesConfig .cookies [domain_name ]
101101
102102 cookies = load_cookies_from_browsers (domain_name , raise_requirements_error , single_browser )
103- if cache_result :
104- CookiesConfig .cookies [domain_name ] = cookies
103+ if single_browser != "all" and cache_result :
104+ if len (cookies ) > 0 :
105+ CookiesConfig .cookies [domain_name ] = cookies
106+ return CookiesConfig .cookies .get (domain_name , {})
105107 return cookies
106108
107109
@@ -115,23 +117,26 @@ def set_cookies(domain_name: str, cookies: Cookies = None) -> None:
115117
116118def load_cookies_from_browsers (domain_name : str ,
117119 raise_requirements_error : bool = True ,
118- single_browser : bool = False ) -> Cookies :
120+ single_browser : Optional [ str ] = None ) -> Cookies :
119121 """Helper to load cookies from all supported browsers."""
120122 if not has_browser_cookie3 :
121123 if raise_requirements_error :
122124 raise MissingRequirementsError ('Install "browser_cookie3" package' )
123125 return {}
124126
125127 cookies = {}
128+ all_cookies = {}
126129 for cookie_fn in BROWSERS :
130+ all_cookies [cookie_fn .__name__ ] = {}
127131 try :
128132 cookie_jar = cookie_fn (domain_name = domain_name )
129- if cookie_jar :
130- debug .log (f"Read cookies from { cookie_fn .__name__ } for { domain_name } " )
131133 for cookie in cookie_jar :
132134 if cookie .name not in cookies and (not cookie .expires or cookie .expires > time .time ()):
133135 cookies [cookie .name ] = cookie .value
134- if single_browser and cookie_jar :
136+ all_cookies [cookie_fn .__name__ ][cookie .name ] = cookie .value
137+ if len (all_cookies [cookie_fn .__name__ ]) > 0 :
138+ debug .log (f"Total cookies loaded for { domain_name } from { cookie_fn .__name__ } : { len (all_cookies [cookie_fn .__name__ ])} " )
139+ if single_browser is True and cookie_jar :
135140 break
136141 except BrowserCookieError :
137142 pass
@@ -140,6 +145,8 @@ def load_cookies_from_browsers(domain_name: str,
140145 break
141146 except Exception as e :
142147 debug .error (f"Error reading cookies from { cookie_fn .__name__ } for { domain_name } : { e } " )
148+ if single_browser == "all" :
149+ return all_cookies
143150 return cookies
144151
145152
0 commit comments