From f3f4be5793c5ffec8ae60e2d384e2065690386a2 Mon Sep 17 00:00:00 2001
From: g1879 <g1879@qq.com>
Date: Sun, 7 Jun 2020 00:11:17 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=5Fmake=5Fresponse()=E7=9A=84?=
 =?UTF-8?q?kwargs=E8=AE=BE=E7=BD=AE=EF=BC=8C=E5=B9=B6=E5=8A=A0=E5=85=A5tim?=
 =?UTF-8?q?eout=E8=AE=BE=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 DrissionPage/session_page.py | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py
index 978e307..a742803 100644
--- a/DrissionPage/session_page.py
+++ b/DrissionPage/session_page.py
@@ -23,10 +23,10 @@ from .session_element import SessionElement, execute_session_find
 class SessionPage(object):
     """SessionPage封装了页面操作的常用功能,使用requests_html来获取、解析网页。"""
 
-    def __init__(self, session: HTMLSession):
+    def __init__(self, session: HTMLSession, timeout: float = 10):
         """初始化函数"""
         self._session = session
-        # self._locs = locs
+        self.timeout = timeout
         self._url = None
         self._url_available = None
         self._response = None
@@ -195,17 +195,21 @@ class SessionPage(object):
             raise ValueError("mode must be 'get' or 'post'.")
 
         # 设置referer和host值
-        if self._url:
-            if 'headers' in set(x.lower() for x in kwargs):
-                keys = set(x.lower() for x in kwargs['headers'])
-                if 'referer' not in keys:
-                    kwargs['headers']['Referer'] = self._url
-                if 'host' not in keys:
-                    kwargs['headers']['Host'] = urlparse(url).hostname
-            else:
-                kwargs['headers'] = self.session.headers
+        kwargs_set = set(x.lower() for x in kwargs)
+        if 'headers' in kwargs_set:
+            header_set = set(x.lower() for x in kwargs['headers'])
+            if self._url and 'referer' not in header_set:
                 kwargs['headers']['Referer'] = self._url
+            if 'host' not in header_set:
                 kwargs['headers']['Host'] = urlparse(url).hostname
+        else:
+            kwargs['headers'] = self.session.headers
+            kwargs['headers']['Host'] = urlparse(url).hostname
+            if self._url:
+                kwargs['headers']['Referer'] = self._url
+
+        if 'timeout' not in kwargs_set:
+            kwargs['timeout'] = self.timeout
 
         try:
             r = None