mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
修复切换模式headers设置问题
This commit is contained in:
parent
173a323a42
commit
66e52f6fbe
@ -13,4 +13,4 @@ from ._configs.chromium_options import ChromiumOptions
|
|||||||
from ._configs.session_options import SessionOptions
|
from ._configs.session_options import SessionOptions
|
||||||
|
|
||||||
__all__ = ['ChromiumPage', 'ChromiumOptions', 'SessionOptions', 'SessionPage', 'WebPage', '__version__']
|
__all__ = ['ChromiumPage', 'ChromiumOptions', 'SessionOptions', 'SessionPage', 'WebPage', '__version__']
|
||||||
__version__ = '4.0.0b19'
|
__version__ = '4.0.0b20'
|
||||||
|
@ -304,7 +304,7 @@ class WebPageTab(SessionPage, ChromiumTab, BasePage):
|
|||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
def cookies_to_session(self, copy_user_agent=True):
|
def cookies_to_session(self, copy_user_agent=True):
|
||||||
"""把driver对象的cookies复制到session对象
|
"""把浏览器的cookies复制到session对象
|
||||||
:param copy_user_agent: 是否复制ua信息
|
:param copy_user_agent: 是否复制ua信息
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
@ -313,7 +313,7 @@ class WebPageTab(SessionPage, ChromiumTab, BasePage):
|
|||||||
|
|
||||||
if copy_user_agent:
|
if copy_user_agent:
|
||||||
user_agent = self.run_cdp('Runtime.evaluate', expression='navigator.userAgent;')['result']['value']
|
user_agent = self.run_cdp('Runtime.evaluate', expression='navigator.userAgent;')['result']['value']
|
||||||
self.session.headers.update({"User-Agent": user_agent})
|
self._headers.update({"User-Agent": user_agent})
|
||||||
|
|
||||||
set_session_cookies(self.session, super(SessionPage, self).get_cookies())
|
set_session_cookies(self.session, super(SessionPage, self).get_cookies())
|
||||||
|
|
||||||
|
@ -49,6 +49,8 @@ class SessionPage(BasePage):
|
|||||||
|
|
||||||
elif isinstance(session_or_options, Session):
|
elif isinstance(session_or_options, Session):
|
||||||
self._session_options = SessionOptions()
|
self._session_options = SessionOptions()
|
||||||
|
self._headers = session_or_options.headers
|
||||||
|
session_or_options.headers = None
|
||||||
self._session = session_or_options
|
self._session = session_or_options
|
||||||
|
|
||||||
def _s_set_runtime_settings(self):
|
def _s_set_runtime_settings(self):
|
||||||
@ -305,12 +307,12 @@ class SessionPage(BasePage):
|
|||||||
parsed_url = urlparse(url)
|
parsed_url = urlparse(url)
|
||||||
hostname = parsed_url.hostname
|
hostname = parsed_url.hostname
|
||||||
scheme = parsed_url.scheme
|
scheme = parsed_url.scheme
|
||||||
if not check_headers(kwargs, self.session.headers, 'Referer'):
|
if not check_headers(kwargs, self._headers, 'Referer'):
|
||||||
kwargs['headers']['Referer'] = self.url if self.url else f'{scheme}://{hostname}'
|
kwargs['headers']['Referer'] = self.url if self.url else f'{scheme}://{hostname}'
|
||||||
if 'Host' not in kwargs['headers']:
|
if 'Host' not in kwargs['headers']:
|
||||||
kwargs['headers']['Host'] = hostname
|
kwargs['headers']['Host'] = hostname
|
||||||
|
|
||||||
if not check_headers(kwargs, self.session.headers, 'timeout'):
|
if not check_headers(kwargs, self._headers, 'timeout'):
|
||||||
kwargs['timeout'] = self.timeout
|
kwargs['timeout'] = self.timeout
|
||||||
|
|
||||||
kwargs['headers'] = {**self._headers, **kwargs['headers']}
|
kwargs['headers'] = {**self._headers, **kwargs['headers']}
|
||||||
|
@ -274,7 +274,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
|||||||
|
|
||||||
if copy_user_agent:
|
if copy_user_agent:
|
||||||
user_agent = self.run_cdp('Runtime.evaluate', expression='navigator.userAgent;')['result']['value']
|
user_agent = self.run_cdp('Runtime.evaluate', expression='navigator.userAgent;')['result']['value']
|
||||||
self.session.headers.update({"User-Agent": user_agent})
|
self._headers.update({"User-Agent": user_agent})
|
||||||
|
|
||||||
set_session_cookies(self.session, super(SessionPage, self).get_cookies())
|
set_session_cookies(self.session, super(SessionPage, self).get_cookies())
|
||||||
|
|
||||||
|
@ -253,12 +253,12 @@ class SessionPageSetter(BasePageSetter):
|
|||||||
|
|
||||||
def encoding(self, encoding, set_all=True):
|
def encoding(self, encoding, set_all=True):
|
||||||
"""设置编码
|
"""设置编码
|
||||||
:param encoding: 编码名称
|
:param encoding: 编码名称,如果要取消之前的设置,传入None
|
||||||
:param set_all: 是否设置对象参数,为False则只设置当前response
|
:param set_all: 是否设置对象参数,为False则只设置当前Response
|
||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
if set_all:
|
if set_all:
|
||||||
self._page._encoding = encoding
|
self._page._encoding = encoding if encoding else None
|
||||||
if self._page.response:
|
if self._page.response:
|
||||||
self._page.response.encoding = encoding
|
self._page.response.encoding = encoding
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"""
|
"""
|
||||||
from http.cookiejar import Cookie
|
from http.cookiejar import Cookie
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Union, Tuple, Literal, Any
|
from typing import Union, Tuple, Literal, Any, Optional
|
||||||
|
|
||||||
from requests.adapters import HTTPAdapter
|
from requests.adapters import HTTPAdapter
|
||||||
from requests.auth import HTTPBasicAuth
|
from requests.auth import HTTPBasicAuth
|
||||||
@ -100,7 +100,7 @@ class SessionPageSetter(BasePageSetter):
|
|||||||
|
|
||||||
def timeout(self, second: float) -> None: ...
|
def timeout(self, second: float) -> None: ...
|
||||||
|
|
||||||
def encoding(self, encoding: str, set_all: bool = True) -> None: ...
|
def encoding(self, encoding: Optional[str, None], set_all: bool = True) -> None: ...
|
||||||
|
|
||||||
def cookie(self, cookie: Union[Cookie, str, dict]) -> None: ...
|
def cookie(self, cookie: Union[Cookie, str, dict]) -> None: ...
|
||||||
|
|
||||||
|
2
setup.py
2
setup.py
@ -6,7 +6,7 @@ with open("README.md", "r", encoding='utf-8') as fh:
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="DrissionPage",
|
name="DrissionPage",
|
||||||
version="4.0.0b19",
|
version="4.0.0b20",
|
||||||
author="g1879",
|
author="g1879",
|
||||||
author_email="g1879@qq.com",
|
author_email="g1879@qq.com",
|
||||||
description="Python based web automation tool. It can control the browser and send and receive data packets.",
|
description="Python based web automation tool. It can control the browser and send and receive data packets.",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user