mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
修正初始化session时cookies的设置
This commit is contained in:
parent
a91b22df49
commit
2c6aa439fd
@ -6,9 +6,11 @@
|
||||
@File : config.py
|
||||
"""
|
||||
from configparser import ConfigParser, NoSectionError, NoOptionError
|
||||
from http.cookiejar import Cookie
|
||||
from pathlib import Path
|
||||
from typing import Any, Union
|
||||
|
||||
from requests.cookies import RequestsCookieJar
|
||||
from selenium import webdriver
|
||||
from selenium.webdriver.chrome.options import Options
|
||||
|
||||
@ -175,8 +177,8 @@ class SessionOptions(object):
|
||||
if options_dict.get('cert', None) is not None:
|
||||
self._cert = options_dict['cert']
|
||||
|
||||
if options_dict.get('adapters', None) is not None:
|
||||
self._adapters = options_dict['adapters']
|
||||
# if options_dict.get('adapters', None) is not None:
|
||||
# self._adapters = options_dict['adapters']
|
||||
|
||||
if options_dict.get('stream', None) is not None:
|
||||
self._stream = options_dict['stream']
|
||||
@ -682,8 +684,15 @@ def _session_options_to_dict(options: Union[dict, SessionOptions, None]) -> Unio
|
||||
return options
|
||||
|
||||
re_dict = dict()
|
||||
attrs = ['headers', 'cookies', 'auth', 'proxies', 'hooks', 'params', 'verify',
|
||||
'adapters', 'stream', 'trust_env', 'max_redirects']
|
||||
attrs = ['headers', 'auth', 'proxies', 'hooks', 'params', 'verify',
|
||||
'stream', 'trust_env', 'max_redirects'] # 'adapters',
|
||||
|
||||
val = options.__getattribute__(f'_cookies')
|
||||
if val is not None:
|
||||
if isinstance(val, (list, tuple)):
|
||||
re_dict['cookies'] = val
|
||||
elif isinstance(val, RequestsCookieJar):
|
||||
re_dict['cookies'] = [_cookie_to_dict(cookie) for cookie in val]
|
||||
|
||||
for attr in attrs:
|
||||
val = options.__getattribute__(f'_{attr}')
|
||||
@ -694,3 +703,13 @@ def _session_options_to_dict(options: Union[dict, SessionOptions, None]) -> Unio
|
||||
re_dict['cert'] = options.__getattribute__('_cert')
|
||||
|
||||
return re_dict
|
||||
|
||||
|
||||
def _cookie_to_dict(cookie: Cookie) -> dict:
|
||||
# TODO: 其它值?
|
||||
cookie_dict = {'name': cookie.name, 'value': str(cookie.value), 'path': cookie.path, 'domain': cookie.domain}
|
||||
|
||||
if cookie.expires:
|
||||
cookie_dict['expiry'] = cookie.expires
|
||||
|
||||
return cookie_dict
|
||||
|
@ -17,7 +17,7 @@ from selenium.webdriver.chrome.webdriver import WebDriver
|
||||
from tldextract import extract
|
||||
|
||||
from .config import (_dict_to_chrome_options, _session_options_to_dict,
|
||||
SessionOptions, DriverOptions, _chrome_options_to_dict, OptionsManager)
|
||||
SessionOptions, DriverOptions, _chrome_options_to_dict, OptionsManager, _cookie_to_dict)
|
||||
|
||||
|
||||
class Drission(object):
|
||||
@ -160,14 +160,14 @@ class Drission(object):
|
||||
self._session = Session()
|
||||
|
||||
attrs = ['headers', 'auth', 'proxies', 'hooks', 'params', 'verify',
|
||||
'cert', 'adapters', 'stream', 'trust_env', 'max_redirects']
|
||||
'cert', 'stream', 'trust_env', 'max_redirects'] # , 'adapters'
|
||||
|
||||
if 'cookies' in data:
|
||||
if isinstance(data['cookies'], (list, tuple)):
|
||||
pass
|
||||
# for cookie in data['cookies']:
|
||||
# kwargs = {x: cookie[x] for x in cookie if x not in ('name', 'value')}
|
||||
# self._session.cookies.set(cookie['name'], cookie['value'], **kwargs)
|
||||
for cookie in data['cookies']:
|
||||
kwargs = {x: cookie[x] for x in cookie if x not in ('name', 'value')}
|
||||
self._session.cookies.set(cookie['name'], cookie['value'], **kwargs)
|
||||
|
||||
elif isinstance(data['cookies'], RequestsCookieJar):
|
||||
for cookie in data['cookies']:
|
||||
self._session.cookies.set_cookie(cookie)
|
||||
@ -212,11 +212,7 @@ class Drission(object):
|
||||
|
||||
# 翻译cookies
|
||||
for i in [x for x in session.cookies if domain in x.domain]:
|
||||
cookie_data = {'name': i.name, 'value': str(i.value), 'path': i.path, 'domain': i.domain}
|
||||
|
||||
if i.expires:
|
||||
cookie_data['expiry'] = i.expires
|
||||
|
||||
cookie_data = _cookie_to_dict(i)
|
||||
self._ensure_add_cookie(cookie_data, driver=driver)
|
||||
|
||||
def _ensure_add_cookie(self, cookie, override_domain=None, driver=None) -> None:
|
||||
|
Loading…
x
Reference in New Issue
Block a user