Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过

Selenium 操作被屏蔽

使用selenium自动化网页时,有一定的概率会被目标网站识别,一旦被检测到,目标网站会拦截该客户端做出的网页操作。

比如淘宝和大众点评的登录页,当手工打开浏览器,输入用户名和密码时,是能正常进入首页的,但是如果是通过selenium打开, 会直接提示验证失败,点击框体重试。

本文介绍一种办法,不需要修改浏览器属性,不需要注入JavaScript脚本,也能轻松绕过网站检测。

Selenium为何会被检测

每一个浏览器访问网站时,都会带上特定的指纹特征,网站会解析这些特征,从而判断这次访问是不是自动化程序。

一个最广为人知的特征是window.navigator.webdriver,该特征直接标明此浏览器是webdriver程序。当一个浏览器通过selenium启动后,在开发者工具中输入这个属性,会发现被标为 true, 而手工打开的浏览器是 false。

实际上,浏览器被检测为webdriver程序的特征并不止这一个,这意味着,就算你通过修改属性,也不一定能绕过网站的检测。

我们可以通过 sannysoft 来检测浏览器指纹,如果浏览器是通过selenium等自动化程序打开的,访问这个网址后会有很多特征暴露这些指纹,这些特征的值和手工打开后的值是不一样的,因此可以很轻易被别人检测出来。

有人也试图不用selenium,换成puppeter和playwright这样的自动化工具,但是结局都是一样的。

Selenium避免被检测方法

浏览器在启动时就会带上指纹特征,如果使用自动化程序启动时已经被标记,那为什么不直接用手工启动,然后用Selenium连接已经启动的浏览器呢?

那手工打开浏览器要做什么操作才能让Selenium连接呢?Selenium又是怎样连接手工打开的浏览器呢?概括起来:

1、打开浏览器时添加以下参数:

--remote-debugging-port=9222 --user-data-dir="C:\\selenium\\ChromeProfile"

2、selenium中设置浏览器选项,通过上面设置的 9222端口连接浏览器:

from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=chrome_options)

通过 subprocess 运行浏览器

当然,做自动化程序一般不会手工点击图标来打开浏览器,我们可以用命令行启动浏览器,然后再用 selenium 连接。

import subprocess
cmd = '"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe" ' \\
'--remote-debugging-port=9222 ' \\
'--user-data-dir="C:\\selenium\\ChromeProfile"'subprocess.run(cmd)

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334237.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java后端开发——SSM整合实验

文章目录 Java后端开发——SSM整合实验一、常用方式整合SSM框架二、纯注解方式整合SSM框架 Java后端开发——SSM整合实验 一、常用方式整合SSM框架 1.搭建数据库环境:MySQL数据库中创建一个名称为ssm的数据库,在该数据库中创建一个名称为tb_book的表 …

2024年美国大学生数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

【算法系列 | 12】深入解析查找算法之—斐波那契查找

序言 心若有阳光,你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏,希望能帮助大家很好的了解算法。主要深入解析每个算法,从概念到示例。 我们一起努力,成为更好的自己! 今天第12讲,讲…

在wsl中安装miniconda

下载安装包 打卡miniconda的官网https://docs.conda.io/projects/miniconda/en/latest/,下载下来安装包,或者直接在乌班图中运行命令wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.5.2-0-Linux-x86_64.sh,等待下载完毕 安装 到下载目录下执行命令…

vue中鼠标拖动触发滚动条的移动

前言 在做后端管理系统中,像弹窗或大的表单时,经常会有滚动条的出现,但有些时候如流程、图片等操作时,仅仅使用鼠标拖动滚动条操作不太方便,如果使用鼠标拖拽图片或容器来触发滚动条的移动就比较方便了 功能设计 如…

【STM32F103】RCC复位和时钟控制

前言 之前介绍外设的时候总是没有提到RCC,但其实我们使用STM32的外设之前都需要做的一步就是打开外设时钟。原本想着没什么可说的,就是用什么外设的时候就在开头加一行代码打开外设时钟就好了。直到最近写到了TIM定时器,我才开始觉得应该说一…

Python解析参数的三种方法

今天我们分享的主要目的就是通过在 Python 中使用命令行和配置文件来提高代码的效率 Let’s go! 我们以机器学习当中的调参过程来进行实践,有三种方式可供选择。第一个选项是使用 argparse,它是一个流行的 Python 模块,专门用于命令行解析&…

【前端素材】bootstrap4实现服装鞋饰电商平台Doron

一、需求分析 一个服装鞋饰电子商务页面是一个在线平台,用于展示和销售各种服装、鞋子和配饰产品。它通常具有以下功能: 产品展示:服装鞋饰电子商务页面会展示各种服装、鞋子和配饰产品的图片、描述和价格。这些产品可以按照不同的分类&#…

视频监控系统EasyCVR如何通过调用API接口查询和下载设备录像?

智慧安防平台EasyCVR是基于各种IP流媒体协议传输的视频汇聚和融合管理平台。视频流媒体服务器EasyCVR采用了开放式的网络结构,支持高清视频的接入和传输、分发,平台提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联…

YOLOv8分割任务数据集标注流程

YOLOv8分割任务数据集标注流程 半自动化标注JSON转TXT 半自动化标注 这里使用了半自动化标注工具 链接:https://pan.baidu.com/s/1x22BtI_bHKH0iUUg0eTUdA 提取码:r5ca 需要指定权重和修改类别信息 配置文件中保存了类别、界面语言、轮廓模式等信息…

单因素方差分析--R

任务说明 三个剂量水平的药物处理受试者,每个剂量水平十个受试者,现在收集到数据后,问: 药物剂量水平显著影响受试者的response? 或者不同剂量药物处理受试者有显著效果的差异吗? 数据 library(tidyvers…

亚信安慧AntDB数据库容灾复制原理

AntDB数据库作为通信运营商领域的杰出的数据服务提供者,一直以来都十分重视数据安全问题,不断通过技术进步、方案创新等方式提升数据容灾能力。在信息化的时代,数据已经成为了重要的资源,对于企业来说,如何存储和管理这…