我们日常使用浏览器的步骤为:启动浏览器、打开一个网页、进行交互。而无头浏览器指的是我们使用脚本来执行以上过程的浏览器,能模拟真实的浏览器使用场景。主要是用作爬虫,用以捕捉Web上的各类数据;这里的无头主要是指没有界面,完全是后台操作。它就是一个真实的浏览器。只是这个浏览器是无界面的。
在爬虫中使用无头浏览器有很多的注意事项,比如我们的业务场景是否适合使用无头浏览器、我们可以通过这些方面进行判别,如果目标网站反爬不是很难,可以直接通过简单的http请求进行采集,不适合使用无头浏览器方案。反之如果网站有多种验证机制,例如需要验证登录、js反爬策略,如果研发不能进行网站行为分析的情况下,建议使用无头浏览器伪装正常用户,并且需要搭配代理一起使用,代理建议使用像亿牛云提供的爬虫代理去访问网站效果会更好,这里简单的示例下使用代理的方式:

from selenium import webdriverimport stringimport zipfile# 代理服务器(产品官网 www.16yun.cn)proxyHost = "t.16yun.cn"proxyPort = "3111"# 代理验证信息proxyUser = "username"proxyPass = "password"def create_proxy_auth_extension(proxy_host, proxy_port,proxy_username, proxy_password,scheme='http', plugin_path=None):if plugin_path is None:plugin_path = r'/tmp/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password)manifest_json = """{"version": "1.0.0","manifest_version": 2,"name": "16YUN Proxy","permissions": ["proxy","tabs","unlimitedStorage","storage","<all_urls>","webRequest","webRequestBlocking"],"background": {"scripts": ["background.js"]},"minimum_chrome_version":"22.0.0"}"""background_js = string.Template("""var config = {mode: "fixed_servers",rules: {singleProxy: {scheme: "${scheme}",host: "${host}",port: parseInt(${port})},bypassList: ["localhost"]}};chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});function callbackFn(details) {return {authCredentials: {username: "${username}",password: "${password}"}};}chrome.webRequest.onAuthRequired.addListener(callbackFn,{urls: ["<all_urls>"]},['blocking']);""").substitute(host=proxy_host,port=proxy_port,username=proxy_username,password=proxy_password,scheme=scheme,)print(background_js)with zipfile.ZipFile(plugin_path, 'w') as zp:zp.writestr("manifest.json", manifest_json)zp.writestr("background.js", background_js)return plugin_pathproxy_auth_plugin_path = create_proxy_auth_extension(proxy_host=proxyHost,proxy_port=proxyPort,proxy_username=proxyUser,proxy_password=proxyPass)option = webdriver.ChromeOptions()option.add_argument("--start-maximized")# 如报错 chrome-extensions# option.add_argument("--disable-extensions")option.add_extension(proxy_auth_plugin_path)# 关闭webdriver的一些标志# option.add_experimental_option('excludeSwitches', ['enable-automation'])driver = webdriver.Chrome(chrome_options=option,executable_path="./chromdriver")# 修改webdriver get属性# script = '''# Object.defineProperty(navigator, 'webdriver', {# get: () => undefined# })# '''# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})driver.get("https://httpbin.org/ip")这里需要注意的是,我们在使用浏览器时要注意版本是否一致,可以查看具体的帮助说明,如果不一致,即使程序能够运行,也会出现爬虫代理认证信息失败,需要弹窗要求手动输入认证信息的问题。

爬虫中无头浏览器如何选择相关推荐

  1. 脚本应用实例_Selenium自动化中无头浏览器的应用

    由于在实际的测试环境下,使用图形界面的浏览器占用测试机资源过大效率低, 一般来说,在调试好脚本的基础上,抛开浏览器图形界面执行测试用例的. 现在可以使用的无头浏览器有很多,这里介绍一个使用方便的无头浏 ...

  2. JAVA网络爬虫(无头浏览器ChromeDriver)

    由于工作需要,开始做起了网络爬虫 以爬取小红书为例 创建chromeDriver // 创建浏览器public void createDriver() {// 开启浏览器后需要访问的地址String ...

  3. python 爬虫 selenium 无头浏览器设置

    使用selenium 爬取数据,不弹出浏览器,后台运行,需要代码设置下无头参数配置 #浏览器在后台运行,不弹出页面 from selenium.webdriver import Chrome from ...

  4. python爬虫之selenium,谷歌无头浏览器

    python爬虫之selenium和PhantomJS 主要的内容 lenium hantomjs 无头浏览器 的懒加载 一 什么是selenium? 介绍 它是python中的一个第三方库,对外提供 ...

  5. 爬虫漫游指南:无头浏览器puppeteer的检测攻防

    1. 引言 许多爬虫初学者在接触到无头浏览器的时候都会有一种如获至宝的感觉,仿佛看到了爬虫的终极解决方案.无论是所有爬虫教程中都会出现的PhantomJS.Selenium,亦或是相对冷门的Night ...

  6. python 爬虫小说 使用无头浏览器 + 自动化爬虫

      仅供学习,请勿商业行为!,未经允许请勿转载 获取到搜索接口 和 请求方法和请求参数   当前是post 方法 请求参数为 获取对应小说的详情介绍页 对应类.对应浏览器驱动获取方法 python s ...

  7. 【python】实验2项目2:使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(陈奕迅)

    请使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(可以是任意歌手)最受欢迎的前5首歌曲的歌词.流派.歌曲发行时间.评论条数.评论时间.评论点赞次数.评论内容具体(每一首歌的评论& ...

  8. 干货!一文搞定无头浏览器的概念以及在selenium中的应用

    无头浏览器 无头浏览器,即 Headless Browser,是一种没有界面的浏览器.它拥有完整的浏览器内核,包括 JavaScript 解析引擎.渲染引擎等.与普通浏览器最大的不同是,无头浏览器执行 ...

  9. web课程第一次实验报告——利用自动化测试工具操纵无头浏览器,进行网页爬虫、截图等实验

    实验背景: 无头浏览器 无头浏览器是没有图形用户界面(GUI)的web浏览器,通常是通过编程或命令行界面来控制的.它会把网站加载到内存并执行页面上的 JavaScript,因为不会展示图形界面,所以运 ...

  10. 基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

最新文章

  1. vue-router2路由参数注意问题
  2. 【Python算法】哈希存储、哈希表、散列表原理
  3. poj 2201(RMQ+笛卡尔树)
  4. 抽象工厂类--一个简单的例子
  5. Java如何加载类的呢?
  6. DroidPlugin插件化开发
  7. C++:类模板与模板类
  8. 不是书评 :《我是一只IT小小鸟》
  9. NVIDIA边缘AI服务
  10. python中for和while区别_Python的while 1跟while True到底有什么区别?
  11. Ajax实现数据回显
  12. uniapp 打开第三方APP
  13. 找工作时单位普遍要求 35 岁以下,那 35 岁以上的人都干嘛去了?
  14. Microsoft SQL Server Native Client(sqlncli.msi)的安装程序包
  15. 洛谷 P4100 [HEOI2013]钙铁锌硒维生素 解题报告
  16. 加密狗在虚拟服务器上怎么注册,您好 我想问下 在虚拟机里面安装软件 装好后要进行加密狗注册 加密狗插进去显示安装成功 可是点击注册就提示检测不到加密锁 是什么原因呢?急急急...
  17. xshell起图形界面后,鼠标点击不了
  18. 光环国际20周年庆六城联动峰会「北京场」圆满结束!
  19. 英语单词Caement水泥
  20. 独立站选杂货爆品站还是精耕垂直站?

热门文章

  1. 直播APP源码网络基础部分处理:
  2. 客车网上售票系统(Java源码+sql脚本)
  3. RESTClient用法
  4. 5.3 数值分析: 差商的定义及性质
  5. JAR文件概述(2021版)
  6. Sublime Text3配置LaTeX环境及使用Sumatra PDF作为阅读器——亲测可用
  7. 声音鉴定-趣味测试-源码
  8. Linux CentOS 7安装Tomcat7的完整步骤。
  9. 2019年技术盘点容器篇(三):阿里专家谈容器:既叫好又叫座? | 程序员硬核评测
  10. 洛谷 P3496 [POI2010]GIL-Guilds 题解