From b9a1930ff86e7487ad71cad56b7277257d903253 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 20:24:23 +0800 Subject: [PATCH 1/5] =?UTF-8?q?set=5Fcookies()=E5=A2=9E=E5=8A=A0refresh?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/mix_page.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/DrissionPage/mix_page.py b/DrissionPage/mix_page.py index a6fc180..4e4e0a7 100644 --- a/DrissionPage/mix_page.py +++ b/DrissionPage/mix_page.py @@ -140,9 +140,10 @@ class MixPage(Null, SessionPage, DriverPage): elif self._mode == 'd': return super(SessionPage, self).title - def set_cookies(self, cookies: Union[RequestsCookieJar, list, tuple, str, dict]) -> None: + def set_cookies(self, cookies: Union[RequestsCookieJar, list, tuple, str, dict], refresh: bool = True) -> None: """设置cookies \n :param cookies: cookies信息,可为CookieJar, list, tuple, str, dict + :param refresh: 设置cookies后是否刷新页面 :return: None """ if self._mode == 's': @@ -150,6 +151,9 @@ class MixPage(Null, SessionPage, DriverPage): elif self._mode == 'd': self.drission.set_cookies(cookies, set_driver=True) + if refresh: + self.refresh() + def get_cookies(self, as_dict: bool = False, all_domains: bool = False) -> Union[dict, list]: """返回cookies \n :param as_dict: 是否以字典方式返回 From f294a777ed377f17b91fea56e6a920ae37235f64 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 20:53:32 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=94=B9=E8=BF=9B=5Fcookie=5Fto=5Fdict()?= =?UTF-8?q?=E5=92=8C=5Fcookies=5Fto=5Ftuple()=E4=B8=AD=E5=A4=84=E7=90=86co?= =?UTF-8?q?okie=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DrissionPage/config.py b/DrissionPage/config.py index b7ea249..17fccd0 100644 --- a/DrissionPage/config.py +++ b/DrissionPage/config.py @@ -732,7 +732,7 @@ def _cookie_to_dict(cookie: Union[Cookie, str, dict]) -> dict: cookie_dict = cookie elif isinstance(cookie, str): - cookie = cookie.split(';') + cookie = cookie.split(',' if ',' in cookie else ';') cookie_dict = {} for key, attr in enumerate(cookie): @@ -761,7 +761,7 @@ def _cookies_to_tuple(cookies: Union[RequestsCookieJar, list, tuple, str, dict]) cookies = tuple(_cookie_to_dict(cookie) for cookie in cookies) elif isinstance(cookies, str): - cookies = tuple(dict([cookie.lstrip().split("=", 1)]) for cookie in cookies.split(";")) + cookies = tuple(_cookie_to_dict(cookie.lstrip()) for cookie in cookies.split(";")) elif isinstance(cookies, dict): cookies = tuple({'name': cookie, 'value': cookies[cookie]} for cookie in cookies) From 54d734089a13b4809245ec6b4f412a0ec55aaa9d Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 20:56:12 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=AE=8C=E5=96=84get=5Fcookies()=EF=BC=8C?= =?UTF-8?q?=E6=B2=A1=E6=9C=89domain=E7=9A=84cookie=E4=B9=9F=E8=83=BD?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/session_page.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py index ca7ca0c..060e50d 100644 --- a/DrissionPage/session_page.py +++ b/DrissionPage/session_page.py @@ -77,9 +77,12 @@ class SessionPage(object): if all_domains: cookies = self.session.cookies else: - url = extract(self.url) - domain = f'{url.domain}.{url.suffix}' - cookies = tuple(x for x in self.session.cookies if domain in x.domain) + if self.url: + url = extract(self.url) + domain = f'{url.domain}.{url.suffix}' + cookies = tuple(x for x in self.session.cookies if domain in x.domain or x.domain == '') + else: + cookies = tuple(x for x in self.session.cookies) if as_dict: return {x.name: x.value for x in cookies} From cbb98870203c3f4885f6e417fecdd4eb425a62cd Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 20:59:39 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=94=B9=E8=BF=9Bcookies=5Fto=5Fdriver()?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E3=80=82=E5=9F=9F=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84cookie=E4=BC=A0=E7=BB=99driver=E6=97=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=B7=BB=E5=8A=A0=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/drission.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/DrissionPage/drission.py b/DrissionPage/drission.py index e305a54..dca4931 100644 --- a/DrissionPage/drission.py +++ b/DrissionPage/drission.py @@ -245,9 +245,21 @@ class Drission(object): :param url: 作用域 :return: None """ - url = extract(url) - domain = f'{url.domain}.{url.suffix}' - cookies = tuple(x for x in self.session.cookies if domain in x.domain) + browser_domain = extract(self.driver.current_url).fqdn + ex_url = extract(url) + + if ex_url.fqdn not in browser_domain: + self.driver.get(url) + + domain = f'{ex_url.domain}.{ex_url.suffix}' + + cookies = [] + for cookie in self.session.cookies: + if cookie.domain == '': + cookie.domain = domain + + if domain in cookie.domain: + cookies.append(cookie) self.set_cookies(cookies, set_driver=True) From b508aa20abc3113e31fa11d427f23577779735f3 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 8 Dec 2020 20:59:55 +0800 Subject: [PATCH 5/5] 1.7.3 --- README.en.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.en.md b/README.en.md index d4b43e1..78aa983 100644 --- a/README.en.md +++ b/README.en.md @@ -1416,7 +1416,9 @@ Set cookies. Parameter Description: -- cookies: Union[RequestsCookieJar, list, tuple, str, dict] - cookies information, can be CookieJar, list, tuple, str, dict +- cookies: Union[RequestsCookieJar, list, tuple, str, dict] - cookies information, can be CookieJar, list, tuple, str, + dict +- refresh: bool - Whether to refresh the page after setting cookies Returns: None