爬虫selenium检测chromewebdriver封爬虫的解决方法

Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现,有些网站会做相应的奥冲机制,pycharm中测试人代码如下:

from selenium.webdriver import Chrome
driver = Chrome()

查看反爬虫机制中的参数

现在,在这个窗口中打开开发者工具,并定位到Console选项卡,如下图所示在这个窗口输入如下的js代码并按下回车键,开发者工具返回了true。

window.navigator.webdriver

结果图
用桌面快捷方式打开一个Chrome窗口,输入网址https://blog.csdn.net/qq_27109535/article/details/124857003执行在这个窗口中打开开发者工具,并定位到Console输入以下代码,可以发现这行代码的返回值为undefined,如下图所示。

window.navigator.webdriver

正常浏览器返回结果

网站反爬虫机制原理如下

webdriver = window.navigator.webdriver;if(webdriver){    console.log('使用Selenium模拟浏览器')} else {    console.log('正常浏览器')}

爬虫机制

方法一:设置这个参数(只能在单个页面中适用)

第一次输入修改参数

Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});

第二次查看参数修改结果

window.navigator.webdriver

在这里插入图片描述

方法二:设置这个参数(单窗口和多窗口都适用)

indow.navigator对象定义一个webdriver属性,并且设置为undefined,以绕过js的检测。
chrome版本小于88,加入代码

from selenium.webdriver import Chrome
web = Chrome()
web.execute_cdp_cmd("Page.addScripToEvaluateOnNewDocument", {
    "source": """
    Windows.navigator.webdriver = undefind
        Object.defineProperty(navigator, 'webdriver',{
            get: () =>undefined
        })
    """
})

chrome版本大于88

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
option = Options()
option.add_argument('--disable-blink-features=AutomationControlled')
web = Chrome(options=option)

运行代码后打开一个新的页面,看一下效果
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据采集及分析RPA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值