Selenium 操作被检测屏蔽

selenium打开浏览器模仿人工操作是诸多爬虫小白最万能的网页数据获取方式,但是在做自动化爬虫时,经常被检测到是selenium驱动。前段时间selenium打开维普高级搜索时得到的页面是空白页。

Selenium为何会被检测

主要原因是selenium打开的浏览器指纹和人工操作打开的浏览器指纹是不同的,比如最熟知的window.navigator.webdriver关键字,在selenium打开的浏览器打印返回结果为true,而正常浏览器打印结果返回为undefined,我们可以在
网站比较各关键字。

Selenium防检测方法

1. 修改window.navigator.webdriver关键字返回结果

from selenium import webdriver
options = webdriver.ChromeOptions()
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})

但是因为浏览器指纹很多,这种方法的局限性是显而易见的。

2. 使用stealth.min.js文件防止selenium被检测

import time
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')
driver = Chrome('./chromedriver', options=chrome_options)with open('/Users/kingname/test_pyppeteer/stealth.min.js') as f:js = f.read()driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js
})

stealth.min.js文件来源于puppeteer,有开发者给 puppeteer 写了一套插件,叫做puppeteer-extra。其中,就有一个插件叫做puppeteer-extra-plugin-stealth专门用来让 puppeteer 隐藏模拟浏览器的指纹特征。

python开发者就需要把其中的隐藏特征的脚本提取出来,做成一个 js 文件。然后让 Selenium 或者 Pyppeteer 在打开任意网页之前,先运行一下这个 js 文件里面的内容。

puppeteer-extra-plugin-stealth的作者还写了另外一个工具,叫做extract-stealth-evasions。这个东西就是用来生成stealth.min.js文件的。

stealth.min.js资源:
链接:https://pan.baidu.com/s/1wiFnwOlHx3Wxe1UzW5gdrg
提取码:6hqf

3. undetected_chromedriver

undetected_chromedriver
使用方法
undetected_chromedriver 可以防止浏览器特征被识别,并且可以根据浏览器版本自动下载驱动。

import undetected_chromedriver as uc
driver = uc.Chrome()
driver.get('https://nowsecure.nl')

这是目前在用的一种方法,基本可以解决selenium被识别的问题

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

selenium打开网页被检测,怎么屏蔽和绕过相关推荐

  1. 解决Pycharm使用 selenium 打开网页后闪退的方法

    用Pycharm写的Python脚本,用selenium打开网页就闪退,找了半天原因. 在排除浏览器驱动版本问题后. 最后搜索到的解决方法是要右键"在终端中运行Python文件". ...

  2. 解决python的selenium打开edge浏览器,但是无法打开网页driver.get的方法

    #引入selenium库中的 webdriver 模块 from selenium import webdriver #打开浏览器 driver = webdriver.Edge() #driver ...

  3. python3+selenium如何正确驱动360浏览器打开网页

    @selenium python3+selenium打开chrome浏览器 首先说明:这是笔记,仅供参考 1.pip install selenium. 2.下载chrome浏览器exe程序,记得查看 ...

  4. selenium 解析网页_用Selenium进行网页搜刮

    selenium 解析网页 网页抓取系列 (WEB SCRAPING SERIES) 总览 (Overview) Selenium is a portable framework for testin ...

  5. python 打开网页、封装自己的浏览器、制作浏览器、打开麦克风和摄像头、忽略ssl证书错误、置顶、无边框

    python 打开网页.封装自己的浏览器 selenium 下载浏览器和浏览器驱动 功能全面,就是不能无边框 pip install selenium from selenium import web ...

  6. python安装之后怎么打开-安装python后如何通过Python打开网页

    Python中可以通过selenium webdriver和webbrowser方法打开网页. 一.selenium webdriver 1.首先需要安装selenium和webdriver pip ...

  7. 微信打开网页下载东西时如何调用其他浏览器下载

    很多朋友问我怎么解决微信内点击链接或扫描二维码打开网页时可以直接跳出微信在外部浏览器打开网页链接,其实这并不难,只要我们实现微信跳转功能即可.下面给大家介绍这个功能 功能目的 生成微信跳转链接,实现微 ...

  8. 用webBrowser打开网页出现脚本错误怎么办

    当IE浏览器遇到脚本错误时,在浏览器左下角会出现一个黄色图标,点击可以查看脚本错误的详细信息,并不会有弹出的错误信息框.我们在用webBrowser编写的程序打开网页,遇到脚本有问题是,会弹出一个错误 ...

  9. seleniumpython定位网页元素方法_使用Selenium对网页元素进行定位的诸种方法

    使用Selenium进行自动化操作,首先要做的就是通过webdriver的get()方法打开一个URL链接. 在打开链接,完成页面加载之后,就可以通过Selenium提供的接口,在页面上进行各种操作了 ...

最新文章

  1. DPDK KNI 接口2
  2. python开发多平台app_django下创建多个app并设置urls方法
  3. 小谈Online-game服务器端设计(3)
  4. 好的产品经理都是这样绘制原型图的...
  5. MSDN帮助文档中文
  6. 数字图像处理——广义图像增强
  7. 正确卸载IE8并恢复IE6的两种方法
  8. 餐厅小票打印模板_收银系统小票标签设置
  9. 堆和栈内存扩展方向问题
  10. uniapp密码输入框
  11. 如何学习linux系统
  12. 参考C++高级进阶教程
  13. Selenium:动态页面模拟点击
  14. postfix邮件服务器main.cf文件配置说明
  15. 字节面试杂谈——MySQL、Redis
  16. 数学语言缩写 c连续d可导,数学分析(1)复习题
  17. vue学习【非父子组件传值问题(Bus/总线/观察者模式)】
  18. 吉大计算机研究生996综合,996算什么?来看看研究生究竟有多累
  19. Matlab通过串口与下位机通讯
  20. JAVA爬虫练习~通过杭电oj账号查询做题数

热门文章

  1. 梦里花落知多少,真性情是三毛
  2. 什么是三层网络架构,接入交换机、汇聚交换机和核心交换机分别又是什么
  3. java基础学习笔记——system
  4. WIN10解决蓝屏SYSTEM_THREAD_EXCEPTION_NOT_HANDLED报错过程记录
  5. 密歇根安娜堡大学计算机专业硕士,2020年密歇根大学安娜堡分校硕士专业设置...
  6. oracle输出实心三角型,C语言帕斯卡三角形打印示例
  7. 读取NTU-RGB-D数据集并利用关节信息生成gif
  8. 教你如何识别风寒感冒中成药
  9. 在页面上添加QQ和MSN聊天工具
  10. react中findDOMNode