Python反反爬篇--selenium被检测到的解决办法

这篇具有很好参考价值的文章主要介绍了Python反反爬篇--selenium被检测到的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 反爬

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

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

# 通过这段 JS 脚本区分是爬虫还是人工操作
window.navigator.webdriver 

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

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

如果要实现后面的自动化操作,首先要解决的就是这个反爬的问题。

常见的反反爬方案包含:设置参数 excludeSwitches、mitmproxy 拦截过滤、cdp 命令,下面分别来说说。

2.设置参数 excludeSwitches

Chrome79 之前可以通过配置 ChromeOptions 驱动参数,来达到反反爬的目的。

只需要将参数打开,设置 excludeSwitches 值为 enable-automation 即可。

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
option = ChromeOptions()

# 打开参数
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(options=option)
driver.implicitly_wait(10)
driver.get("http://www.google.com")

这个参数是实验性参数,所以右上角会提示:请停用开发者模式运行的扩展程序,不能点击停用。

这样,设置这个参数后:

window.navigator.webdriver 的值就变成 undefined 了。

3. mitproxy 拦截

众所周知,mitproxy 可以拦截到网络请求,做其他处理,这里只需要进行 JS 代码注入即可。

# 待执行的 JS 代码,修改 window.navigator.webdriver 的值
js_exec = 'Object.defineProperties(navigator,{webdriver:{get:() => false}});'

# 重写 response,截获网络请求,js注入
def response(slef,flow: mitmproxy.http.HTTPFlow):
        if 'google' in flow.request.url:
                flow.response.text = js_exec + flow.response.text

然后启动 mitmdump

# 启动mitmproxy
mitmdump -p 8888 -s 111.py 

最后,配置 ChromeOptions 指向 mitmdump代码即可。

# 配置ChromeOptions
option.add_argument("--proxy-server=http://127.0.0.1:8888")

4. cdp 命令(经验证可以)

cdp 全称是:Chrome Devtools-Protocol

通过 addScriptToEvaluateOnNewDocument() 方法可以在页面还未加载之前,运行一段脚本

如此,我们只需要提前设置:

window.navigator.webdriver 的值为 undefined 即可。

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

option = ChromeOptions()

# 打开参数
# option.add_argument("--proxy-server=http://127.0.0.1:8888")
# driver = Chrome(options=option)

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

driver.implicitly_wait(10)
driver.get("http://www.google.com")

5. 其他

通过上面的 3 种方法可以很好的解决 Selenium 自动化被反爬的问题。

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫
selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

六、面试宝典

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫

selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫文章来源地址https://www.toymoban.com/news/detail-752012.html

简历模板selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫
selenium被反爬,python,selenium,开发语言,Python学习,Python编程,Python爬虫 若有侵权,请联系删除

到了这里,关于Python反反爬篇--selenium被检测到的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium反反爬

    有时候,我们利用 Selenium 自动化爬取某些网站时,极有可能会遭遇反爬。 实际上,我们使用默认的方式初始化 WebDriver 打开一个网站,下面这段 JS 代码永远为 true,而手动打开目标网站的话,则为:undefined # 通过这段 JS 脚本区分是爬虫还是人工操作 window.navigator.webdriver cdp

    2024年02月12日
    浏览(9)
  • python使用selenium 打开谷歌浏览器闪退解决办法

    在使用 Selenium 操作 Chrome 浏览器时,如果 Chrome 浏览器闪退,则可能是以下几个方面出现了问题: 1. Chromedriver 版本与 Chrome 浏览器版本不匹配 你需要确保你正在使用的 Chromedriver 版本与你的 Chrome 浏览器版本匹配。你可以在 Chromedriver 官网上找到最新版本的 Chromedriver,并下载

    2024年02月08日
    浏览(16)
  • selenium自动化:定位到的元素本身有值,但是打印出来的文本值为空。【已解决】

    问题描述: 部分代码段如下:  元素定位是存在文本的【4174】 结果运行代码 输出为空 解决方法: 1. 判断元素是否被隐藏  print ( driver.find_element(xxxx).is_displayed() ) 若返回值为False或者空白,那就说明原因被隐藏了 2. 用get_attribute()方法获取 driver.find_element(xxxx).get_attribute(“

    2024年02月13日
    浏览(19)
  • Python使用 YOLO_NAS_S 模型进行目标检测并保存预测到的主体图片

    使用 YOLO_NAS_S 模型进行目标检测,并保存预测到的主体图片 安装包: 安装所需的库和框架。确保已经安装了 OpenCV、PyTorch 和 torchvision 下载 YOLO_NAS_S 模型的权重文件,并加载模型 进行图像预处理。对于每张输入图像,需要将其转换为模型可接受的格式,并进行归一化处理 使

    2024年02月10日
    浏览(13)
  • 用Python编写UI自动化用例第一步from selenium import webdriver,即导入第三方驱动包时报错,高效解决办法,报错问题已解决

    问题:在PyCharm中新建一个文件,py01_test_01.py文件。编写UI自动化用例的第一步就是导入驱动(from selenium import webdriver),在已经安装selenium的情况下(pip install selenium==3.141.0),执行的时候还是报错。如下图:     原因排查过程:从报错信息,错误信息为没有找到selenium。首先查

    2024年02月12日
    浏览(27)
  • selenium clear()无效的解决办法

    做自动化时,在往输入框中send_keys前往往需要先清空一下这个输入框里的内容,避免输入框原本有内容或默认值,导致最终输入的结果不是预期的内容。 清空内容我们一般会用clear()方法 但用久了你就会发现clear()并非对所有的输入框都好用,即使它是一个input元素。 产生这个

    2024年02月03日
    浏览(10)
  • selenium报错及解决办法收集篇

    一、TypeError:‘module’ object is not callable 解决方案:谷歌浏览器Chrome单词C大写,修改为webdriver.Chrome() 二、‘chromedriver’ executable needs to be in PATH. 问题原因:没有chrome驱动,需要先下载chrome驱动,然后添加到环境变量中 解决方案: 1、访问http://chromedriver.storage.googleapis.com/ind

    2024年02月04日
    浏览(23)
  • 解决采集时使用selenium被屏蔽的办法

    解决采集时使用selenium被屏蔽的办法 实用seleniumbase uc模式 UC模式是基于undetected-chromedriver 但做了一些优化更新,使用起来更方便 官方例子: 关于seleniumbase 更多,请参考官方文档 https://seleniumbase.io/help_docs/uc_mode/

    2024年02月22日
    浏览(11)
  • Python进阶 │反爬虫和怎样反反爬虫

    爬虫、反爬虫和反反爬虫是网络爬虫工作过程中一直伴随的问题。 在现实生活中,网络爬虫的程序并不像之前介绍的爬取博客那么简单,运行效果不如意者十有八九。首先需要理解一下“反爬虫”这个概念,其实就是“反对爬虫”。根据网络上的定义,网络爬虫为使用任何技

    2024年02月09日
    浏览(17)
  • 整理网上关于selenium的反爬机制以及解决办法。

    只是收集目前找到的一些关于selenium的反爬问题。 未亲自尝试,不保证效果。也会持续跟进相关的内容继续整理。 现象:用户正常访问该值为false。使用selenium时该值为true。 解决:去除该参数 现象:登录是绕不开的话题,我也不知各个网站都是怎么验证登录的。有没有什么

    2024年02月03日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包