当前位置:   article > 正文

Selenium Edge的无头浏览器模式以及反WebDriver检测

selenium edge

1. Selenium Edge的配置

        由于本人只使用Edge浏览器,所以在得知Selenium对PantomJS的支持取消后,在网上找了各种关于Edge浏览器的资料。配置Selenium Edge有多种方法,但这里只介绍一种方法。

(1) 下载MSEdgeDriver驱动

MSEdgeDriver下载地址

 此处需要注意将浏览器更新到最新版本,以及选择正确的下载通道

解压下载的压缩包后会得到名为 msedgedriver.exe 的可执行程序,将这个程序放在任意一个地方,并将该文件所在的路径加入到系统的环境变量中

 这个是我的 msedgedriver.exe 存放地址

环境变量设置好之后重启电脑,如果没有出错,在cmd中输入msedgedriver将不会报错

(2) 安装Selenium

  1. pip install selenium>=4.3.0
  2. # 也可以是下面的
  3. pip install selenium

 需要注意的是selenium的版本要在4.0以上(其实3.0~4.0也可以,但是需要安装额外的库,为了简单,直接安装selenium4

(3) 使用Selenium

  1. from selenium import webdriver
  2. browser = webdriver.Edge()
  3. url = "https://baidu.com"
  4. browser.get(url)

​​​​​​​

 

 

出现上面的界面就说明selenium正常工作 

2. Edge无头浏览器模式

        如果不设置无头浏览器模式,在Selenium控制浏览器工作时浏览器的一举一动都会显示出来,会占用电脑的gpu。在调试代码时,浏览器的GUI界面能够提供帮助,但是在爬虫工作时,浏览器的GUI就显得多余了,关闭GUI可以节省一部分计算资源。

  1. 导入selenium库
  2. from selenium import webdriver
  3. # 在这里导入浏览器设置相关的类
  4. from selenium.webdriver.edge.options import Options
  5. # 无可视化界面设置 #
  6. edge_options = Options()
  7. # 使用无头模式
  8. edge_options.add_argument('--headless')
  9. # 禁用GPU,防止无头模式出现莫名的BUG
  10. edge_options.add_argument('--disable-gpu')
  11. # 将参数传给浏览器
  12. browser = webdriver.Edge(options=edge_options)
  13. # 启动浏览器
  14. url = "https://baidu.com"
  15. browser.get(url)
  16. print(browser.title)
  17. # 关闭浏览器
  18. browser.quit()

 正常情况下会输出 “百度一下,你就知道”

2. 关于Selenium反反爬虫

        有时候,我们利用 Selenium 自动化爬取某些网站时,极有可能会遭遇反爬。

  实际上,我们使用默认的方式初始化 WebDriver 打开一个网站,下面这段 JS 代码永远为 True,而手动打开目标网站的话,则为:False。

上图是手动打开浏览器

下图是通过selenium打开浏览器

         稍微有一点反爬经验的工程师利用上面的差别,很容易判断访问对象是否为一个爬虫,然后对其做反爬处理,返回一堆脏数据或各种验证码。

反检测代码如下

  1. 导入selenium库
  2. from selenium import webdriver
  3. # 在这里导入浏览器设置相关的类
  4. from selenium.webdriver.edge.options import Options
  5. # 反检测设置 #
  6. edge_options = Options()
  7. # 开启开发者模式
  8. edge_options.add_experimental_option('excludeSwitches', ['enable-automation'])
  9. # 禁用启用Blink运行时的功能
  10. edge_options.add_argument('--disable-blink-features=AutomationControlled')
  11. # 将参数传给浏览器
  12. browser = webdriver.Edge(options=edge_options)
  13. # 启动浏览器
  14. url = "https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html"
  15. browser.get(url)

代码中url所指网站可以检测浏览器是否通过selenium控制,如果未检测出selenium控制,则"WebDriver"一栏为绿色。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/728611
推荐阅读
相关标签
  

闽ICP备14008679号