From c708a80c6cbccf1fef852745efc0cce64674f202 Mon Sep 17 00:00:00 2001 From: g1879 Date: Wed, 8 Mar 2023 23:19:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96cookies=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=EF=BC=9B=E6=8F=90=E9=AB=98=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E5=8F=AF=E7=94=A8=E6=80=A7=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/chromium_base.py | 7 ++++++- DrissionPage/chromium_tab.py | 2 +- DrissionPage/commons/tools.py | 1 + DrissionPage/mixpage/drission.py | 4 ++-- DrissionPage/mixpage/session_page.py | 2 +- DrissionPage/session_page.py | 2 +- DrissionPage/web_page.py | 2 +- 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/DrissionPage/chromium_base.py b/DrissionPage/chromium_base.py index ded7f40..d69eb48 100644 --- a/DrissionPage/chromium_base.py +++ b/DrissionPage/chromium_base.py @@ -1004,7 +1004,12 @@ class ChromiumBaseSetter(object): result_cookies = [] for cookie in cookies: if not cookie.get('domain', None): - cookie['domain'] = urlparse(self._page.url).netloc + netloc = urlparse(self._page.url).netloc + if netloc.replace('.', '').isdigit(): # ip + cookie['domain'] = netloc + else: # 域名 + u = netloc.split('.') + cookie['domain'] = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else netloc result_cookies.append({'value': '' if cookie['value'] is None else cookie['value'], 'name': cookie['name'], 'domain': cookie['domain']}) diff --git a/DrissionPage/chromium_tab.py b/DrissionPage/chromium_tab.py index 61aca56..885a2d6 100644 --- a/DrissionPage/chromium_tab.py +++ b/DrissionPage/chromium_tab.py @@ -291,7 +291,7 @@ class WebPageTab(SessionPage, ChromiumTab): domain = netloc else: # 域名 u = netloc.split('.') - domain = f'{u[-2]}.{u[-1]}' if len(u) > 1 else netloc + domain = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else netloc cookies = [] for cookie in super().get_cookies(): if not cookie.get('domain', None): diff --git a/DrissionPage/commons/tools.py b/DrissionPage/commons/tools.py index c3e942d..1a70f15 100644 --- a/DrissionPage/commons/tools.py +++ b/DrissionPage/commons/tools.py @@ -120,6 +120,7 @@ def port_is_using(ip, port): """ from socket import socket, AF_INET, SOCK_STREAM s = socket(AF_INET, SOCK_STREAM) + s.settimeout(.1) result = s.connect_ex((ip, int(port))) s.close() return result == 0 diff --git a/DrissionPage/mixpage/drission.py b/DrissionPage/mixpage/drission.py index 540b3f9..813caa0 100644 --- a/DrissionPage/mixpage/drission.py +++ b/DrissionPage/mixpage/drission.py @@ -272,7 +272,7 @@ class Drission(object): cookie_domain = browser_domain else: # 域名 u = browser_domain.split('.') - cookie_domain = f'{u[-2]}.{u[-1]}' if len(u) > 1 else browser_domain + cookie_domain = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else browser_domain else: raise ValueError('cookie中没有域名或浏览器未访问过URL。') @@ -336,7 +336,7 @@ class Drission(object): domain = ex_url else: # 域名 u = ex_url.split('.') - domain = f'{u[-2]}.{u[-1]}' if len(u) > 1 else ex_url + domain = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else ex_url cookies = [] for cookie in self.session.cookies: diff --git a/DrissionPage/mixpage/session_page.py b/DrissionPage/mixpage/session_page.py index 427072c..fbedcf8 100644 --- a/DrissionPage/mixpage/session_page.py +++ b/DrissionPage/mixpage/session_page.py @@ -215,7 +215,7 @@ class SessionPage(BasePage): domain = netloc else: # 域名 u = netloc.split('.') - domain = f'{u[-2]}.{u[-1]}' if len(u) > 1 else netloc + domain = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else netloc 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) diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py index f09d6f1..d6d9414 100644 --- a/DrissionPage/session_page.py +++ b/DrissionPage/session_page.py @@ -195,7 +195,7 @@ class SessionPage(BasePage): domain = netloc else: # 域名 u = netloc.split('.') - domain = f'{u[-2]}.{u[-1]}' if len(u) > 1 else netloc + domain = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else netloc 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) diff --git a/DrissionPage/web_page.py b/DrissionPage/web_page.py index aede90a..2a853c0 100644 --- a/DrissionPage/web_page.py +++ b/DrissionPage/web_page.py @@ -365,7 +365,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage): domain = netloc else: # 域名 u = netloc.split('.') - domain = f'{u[-2]}.{u[-1]}' if len(u) > 1 else netloc + domain = f'.{u[-2]}.{u[-1]}' if len(u) > 1 else netloc cookies = [] for cookie in super().get_cookies(): if not cookie.get('domain', None):