From d7ec6179880b540fea05920d9b5953fd47d06d4e Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 5 Dec 2023 22:34:09 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=8F=AA=E7=9B=91=E5=90=ACGE?= =?UTF-8?q?T=E5=92=8CPOST=E8=AF=B7=E6=B1=82=EF=BC=9B=E4=BF=AE=E5=A4=8Dcook?= =?UTF-8?q?ie=E8=AE=BE=E7=BD=AEexpires=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/_commons/web.py | 15 ++++++++++++++- DrissionPage/_units/listener.py | 8 ++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/DrissionPage/_commons/web.py b/DrissionPage/_commons/web.py index 5c1d182..2a726b3 100644 --- a/DrissionPage/_commons/web.py +++ b/DrissionPage/_commons/web.py @@ -3,6 +3,7 @@ @Author : g1879 @Contact : g1879@qq.com """ +from datetime import datetime from html import unescape from http.cookiejar import Cookie from re import sub @@ -250,7 +251,19 @@ def set_browser_cookies(page, cookies): cookie['expires'] = int(cookie['expiry']) cookie.pop('expiry') if 'expires' in cookie: - cookie['expires'] = int(cookie['expires']) + if cookie['expires'].isdigit(): + cookie['expires'] = int(cookie['expires']) + + elif cookie['expires'].replace('.', '').isdigit(): + cookie['expires'] = float(cookie['expires']) + + else: + try: + cookie['expires'] = datetime.strptime(cookie['expires'], + '%a, %d %b %Y %H:%M:%S GMT').timestamp() + except ValueError: + cookie['expires'] = datetime.strptime(cookie['expires'], + '%a, %d %b %y %H:%M:%S GMT').timestamp() if cookie['value'] is None: cookie['value'] = '' if cookie['name'].startswith('__Secure-'): diff --git a/DrissionPage/_units/listener.py b/DrissionPage/_units/listener.py index 2e7e4d8..a864db9 100644 --- a/DrissionPage/_units/listener.py +++ b/DrissionPage/_units/listener.py @@ -43,11 +43,11 @@ class Listener(object): """返回监听目标""" return self._targets - def set_targets(self, targets=True, is_regex=False, method=None): + def set_targets(self, targets=True, is_regex=False, method=('GET', 'POST')): """指定要等待的数据包 :param targets: 要匹配的数据包url特征,可用list等传入多个,为True时获取所有 :param is_regex: 设置的target是否正则表达式 - :param method: 设置监听的请求类型,可用list等指定多个,为None时监听全部 + :param method: 设置监听的请求类型,可指定多个,为None时监听全部 :return: None """ if targets is not None: @@ -68,11 +68,11 @@ class Listener(object): else: raise TypeError('method参数只能是str、list、tuple、set类型。') - def start(self, targets=None, is_regex=False, method=None): + def start(self, targets=None, is_regex=False, method=('GET', 'POST')): """拦截目标请求,每次拦截前清空结果 :param targets: 要匹配的数据包url特征,可用list等传入多个,为True时获取所有 :param is_regex: 设置的target是否正则表达式 - :param method: 设置监听的请求类型,可用list等指定多个,为None时监听全部 + :param method: 设置监听的请求类型,可指定多个,为None时监听全部 :return: None """ if targets or method: