python selenium反检测问题

 更新时间:2023年09月13日 09:37:57   作者:一只上班爱摸鱼的小菜鸡  
这篇文章主要介绍了python selenium反检测问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python selenium反检测

现在有大量的反爬机制,通常我们爬虫有re,bs4,selenium,这里重点说selenium的。

之前有业务需求需要爬取boos直聘的信息,我们在使用selenium进行爬虫的时候,发现我们无法登陆进去。

在这里我们通过js代码发现他有个检测机制

#通过查看window.navigator.webdriver信息可以看到这里是为true
window.navigator.webdriver

因此我们需要修改我们的登陆信息

from selenium.webdriver import ChromeOptions
option = ChromeOptions()  # 实例化一个ChromeOptions对象
option.add_experimental_option('excludeSwitches', ['enable-automation'])  # 以键值对的形式加入参数
driver = webdriver.Chrome(chromedriver.exe',options=option)

在添加option实例之后我们打开网页输入js代码

window.navigator.webdriver
输出undefined

这样我们就可以避开selenium的检测机制。

python selenium+pyautogui,跳过网站对自动化采集的检测

操作方法

pyautogui.FAILSAFE =False  # 自动 防故障功能
pyautogui.PAUSE = 1    #停顿功能
print(pyautogui.size())   # 返回所用显示器的分辨率; 输出:Size(width=1920, height=1080)
width,height = pyautogui.size()
print(width,height)  # 1920 1080
print(pyautogui.position())   # 得到当前鼠标位置;
pyautogui.moveTo(100,300,duration=1)    #移动到指定位置
pyautogui.moveRel(100,500,duration=4)   # 第一个参数是X轴,第二个是Y轴,duration滑动速度
# 点击鼠标
pyautogui.click(10,10)   # 鼠标点击指定位置,默认左键
pyautogui.click(10,10,button='left')  # 单击左键
pyautogui.click(1000,300,button='right')  # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中间
pyautogui.doubleClick(10,10)  # 指定位置,双击左键
pyautogui.rightClick(10,10)   # 指定位置,双击右键
pyautogui.middleClick(10,10)  # 指定位置,双击中键
pyautogui.mouseDown()   # 鼠标按下
pyautogui.mouseUp()    # 鼠标释放
pyautogui.dragTo(100,300,duration=1)   #拖动到指定位置
pyautogui.dragRel(100,500,duration=4)   # 第一个参数是左右移动像素值,第二个是上下,
pyautogui.scroll(300)  # 向上滚动300个单位;
#获取屏幕截图
im = pyautogui.screenshot()
im.save('屏幕截图.png')	
#识别图像
btm = pyautogui.locateOnScreen('zan.png')
print(btm)  # Box(left=1280, top=344, width=22, height=22)
# 图像识别(多个)
btm = pyautogui.locateAllOnScreen('zan.png')
print(list(btm))  # [Box(left=1280, top=344, width=22, height=22), Box(left=25, top=594, width=22, height=22)]
#键盘输入
pyautogui.keyDown('shift')    # 按下shift
pyautogui.press('4')    # 按下 4
pyautogui.keyUp('shift')   # 释放 shift
#快捷键
pyautogui.hotkey('ctrl','c')

实例代码

# 截图进行,找到位置
x,y = pyautogui.center(pyautogui.locateOnScreen('img_1.png'))
pyautogui.moveTo(x,y, duration=1)
pyautogui.mouseDown()
pyautogui.dragTo(1250, random.choice([400,600]), duration=random.randint(1,3))

##如果是mac系统

img_point = pyautogui.locateCenterOnScreen("aj.png", confidence=0.8) 

将像素调低,因为图片分辨率可能大于电脑。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Python Flask框架的安装及应用

    详解Python Flask框架的安装及应用

    Flask诞生于愚人节开的一个玩笑,后来逐渐发展成为一个成熟的 Python Web框架,越来越受到开发者的喜爱。本文将以一个博客后台为例,详解Flask框架的安装及应用,需要的可以参考一下
    2022-05-05
  • Python中异常处理及最佳实践举例详解

    Python中异常处理及最佳实践举例详解

    异常处理在任何一门编程语言里都是值得关注的一个话题,良好的异常处理可以让你的程序更加健壮,下面这篇文章主要给大家介绍了关于Python中异常处理及最佳实践的相关资料,需要的朋友可以参考下
    2024-03-03
  • Django rstful登陆认证并检查session是否过期代码实例

    Django rstful登陆认证并检查session是否过期代码实例

    这篇文章主要介绍了Django rstful登陆认证并检查session是否过期代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • PyCharm永久激活方式(推荐)

    PyCharm永久激活方式(推荐)

    这篇文章主要介绍了PyCharm永久激活方式,本文通过图文并茂的方式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • python多线程实现代码(模拟银行服务操作流程)

    python多线程实现代码(模拟银行服务操作流程)

    这篇文章主要介绍了python模拟银行服务多线程实现代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 深入学习python多线程与GIL

    深入学习python多线程与GIL

    这篇文章主要介绍了深入学习python多线程与GIL,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • python二叉树遍历的实现方法

    python二叉树遍历的实现方法

    这篇文章主要介绍了python二叉树遍历的实现方法,使用了三种遍历:先序遍历,中序遍历,后序遍历,方法大家参考使用
    2013-11-11
  • 使用pyqt5搭建yolo3目标识别界面的方法

    使用pyqt5搭建yolo3目标识别界面的方法

    这篇文章主要介绍了使用pyqt5搭建yolo3目标识别界面的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python数据处理的26个Pandas实用技巧总结

    Python数据处理的26个Pandas实用技巧总结

    这篇文章主要给大家分享一些pandas的实用技巧,共计26个,这些技巧在你做数据处理中必不可少,感兴趣的小伙伴可以跟随小编学习一下
    2022-02-02
  • pygame游戏之旅 添加icon和bgm音效的方法

    pygame游戏之旅 添加icon和bgm音效的方法

    这篇文章主要为大家详细介绍了pygame游戏之旅的第14篇,教大家如何添加icon和bgm音效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11

最新评论