selenium 无头模式

Firefox驱动下载地址:https://github.com/mozilla/geckodriver/releases 或者 http://npm.taobao.org/mirrors/geckodriver/
Chromedriver驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/

一、无头模式
from selenium import webdriver
from selenium.webdriver.chrome.options import Options # => 引入Chrome的配置
import time

# 配置
ch_options = Options()
ch_options.add_argument("--headless")  # => 为Chrome配置无头模式

# 在启动浏览器时加入配置
driver = webdriver.Chrome(options=ch_options) # => 注意这里的参数

driver.get('http://baidu.com')
driver.find_element_by_id('kw').send_keys('美女')
driver.find_element_by_id('su').click()

time.sleep(2)

# 只有截图才能看到效果咯
driver.save_screenshot('./ch.png')

driver.quit()
二、防止被检测

1、防止网站识别Selenium代码(针对老版本)

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
bro = Chrome(options=option)

url = "fudan.bbs.kaoyan.com"  # 首页
bro.get("http://fudan.bbs.kaoyan.com/")
bro.implicitly_wait(10)

新版本无头模式如下

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)

bro = Chrome(options=options)
bro.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})

url = "fudan.bbs.kaoyan.com"    # 首页
bro.get("http://fudan.bbs.kaoyan.com/")
bro.implicitly_wait(10)

2、工作模式
它是怎么做的的呢?一般情况下,我们使用Selenium打开一个网页时,会有一个提示:Chrome正受到自动测试软件的控制,然后打开调试工具,点击 consile,输入代码

window.navigator.webdriver

结果如下:
在这里插入图片描述以淘宝为首,众多网站都针对selenium的js监测机制,就是上面的方法实现的。

3、解决方法
只需要设置 Chromedriver的启动参数即可解决问题。
在启动Chromedriver之前,为Chrome开启实验性功能参数 excludeSwitches,它的值为['enable-automation'],代码同上。
运行上面的代码,就没有Chrome正受到自动测试软件的控制的提示了。
在这里插入图片描述
再次js代码
在这里插入图片描述
发现已经是undefined了,这样才是一个正常的浏览器了。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值