Переглянути джерело

update:更新webdriver配置

dongzhaorui 2 роки тому
батько
коміт
86a2d199bf
2 змінених файлів з 12 додано та 9 видалено
  1. 7 4
      FworkSpider/feapder/utils/webdriver.py
  2. 5 5
      FworkSpider/setting.py

+ 7 - 4
FworkSpider/feapder/utils/webdriver.py

@@ -34,13 +34,13 @@ class WebDriver(RemoteWebDriver):
         load_images=True,
         user_agent=None,
         proxy=None,
-        driver_type=FIREFOX,
+        driver_type=CHROME,
         timeout=10,
         window_size=(1024, 800),
         server_addr=None,
         custom_argument=None,
         version=None,
-        usages_local_driver=True,
+        usages_local_driver=False,
         headless=False,
         executable_path=None,
         service_log_path=None,
@@ -220,10 +220,11 @@ class WebDriver(RemoteWebDriver):
             "javascriptEnabled": True,
         }
         chrome_options = webdriver.ChromeOptions()
-
         # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
         chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
         chrome_options.add_experimental_option("useAutomationExtension", False)
+        chrome_options.add_argument("--disable-blink-features=AutomationControlled")
+
         # docker 里运行需要
         chrome_options.add_argument("--no-sandbox")
         chrome_options.add_argument("--disable-gpu")
@@ -285,6 +286,8 @@ class WebDriver(RemoteWebDriver):
         # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
         chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
         chrome_options.add_experimental_option("useAutomationExtension", False)
+        chrome_options.add_argument("--disable-blink-features=AutomationControlled")
+
         # docker 里运行需要
         chrome_options.add_argument("--no-sandbox")
         chrome_options.add_argument("--disable-gpu")
@@ -341,7 +344,7 @@ class WebDriver(RemoteWebDriver):
         # 隐藏浏览器特征
         with open(os.path.join(os.path.dirname(__file__), "./js/stealth.min.js")) as f:
             js = f.read()
-        driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js})
+            driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js})
 
         return driver
 

+ 5 - 5
FworkSpider/setting.py

@@ -34,20 +34,20 @@ SPIDER_MAX_RETRY_TIMES = 3  # 每个请求最大重试次数
 # 浏览器渲染
 WEBDRIVER = dict(
     server_addr="http://172.17.4.232:6666/wd/hub",  # selenium 远程服务地址
-    version="",  # 浏览器版本。不指定版本时,随机分发,版本详见群公告
     pool_size=1,  # 浏览器的数量
+    driver_type="CHROME",  # CHROME、FIREFOX
+    headless=False,  # 是否为无头浏览器
+    usages_local_driver=False,  # 是否加载本地驱动
+    version="",  # 浏览器版本,使用远程服务时生效
     load_images=False,  # 是否加载图片
     user_agent=None,  # 字符串 或 无参函数,返回值为user_agent
-    headless=True,  # 是否为无头浏览器
     proxy=None,  # xxx.xxx.xx.xxx:xxxx 或 无参函数,返回值为代理地址
-    driver_type="CHROME",  # CHROME、FIREFOX
     timeout=30,  # 请求超时时间
     executable_path=None,  # 浏览器路径,默认为默认路径
-    usages_local_driver=False,  # 是否使用本地驱动,默认启动本地驱动
     window_size=(1280, 800),  # 窗口大小
     render_time=0,  # 渲染时长,即打开网页等待指定时间后再获取源码
     custom_argument=["--ignore-certificate-errors"],  # 自定义浏览器渲染参数
-    service_log_path=os.devnull  # 日志路径,默认置空
+    service_log_path=os.devnull  # 日志路径
 )
 # 爬虫启动时,重新入库失败的item
 RETRY_FAILED_ITEMS = True