Selenium基本使用、过检测
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
# 驱动文件所在路径
DIRVER_PATH = r'C:\Users\Administrator\Desktop\chromedriver.exe'
# 跳过selenium检测的js(这个非常重要,现在很多网站都有对selenium做检测)
# 这个文件是puppeteer (node.js平台上的一个类似seleium自动化测试的工具)的
# 这个js可以自己下载并编译一份
# 这里有人搞了一份每周一自动编译的https://github.com/requireCool/stealth.min.js
STEALTH_JS = r'C:\Users\Administrator\Desktop\stealth.min.js'
def main():
# 负责启动和停止chromedriver的 Service 类
service = ChromeService(executable_path=DIRVER_PATH)
# 配置一些浏览器选项,这些选项可以取selenium找,有些选项是不同浏览器特有的,具体看官网即可。
options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
# 添加插件运行
options.add_extension(r"C:\Users\Administrator\Desktop\爬虫\XPath-Helper_v2.0.2.crx")
# 设置这两个参数就可以避免密码提示框的弹出
#prefs = {"credentials_enable_service": False, "profile.password_manager_enabled": False}
#options.add_experimental_option("prefs", prefs)
# 不退出浏览器
# selenium在执行完所有操作后就会将浏览器关闭,如果你不想关就可以使用。
# options.add_experimental_option('detach', True)
# 防止检测到selenium(基本上只能过一些比较简单的检测)
options.add_argument("--disable-blink-features")
options.add_argument("--disable-blink-features=AutomationControlled")
# 新版我试了,不指定service(那就等于没指定driver驱动)都可以?什么鸟原理?
driver = webdriver.Chrome(service=service, options=options)
# 过selenium检测(最简单的方法,不过还是有机会被检测到)
# driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
# "source": """
# Object.defineProperty(navigator, 'webdriver', {
# get: () => undefined
# })
# """
# })
# 真正牛逼的过selenium检测,通过加载STEALTH_JS,cdp的作用百度一下即可。
with open(STEALTH_JS) as f:
js = f.read()
#print(js)
driver.execute_cdp_cmd(
cmd="Page.addScriptToEvaluateOnNewDocument",
cmd_args={
"source": js
}
)
# 打开一个标签页
driver.get("https://bot.sannysoft.com/")
# 最大化浏览器
driver.maximize_window()
time.sleep(30)
# 关闭当前选卡项
#driver.close()
# 退出整个浏览器
driver.quit()
if __name__ == '__main__':
main()
总结最基本的使用:
# 初始化drvier服务类,指定driver文件的路径
service = ChromeService(executable_path=DIRVER_PATH)
# 如果需要就指定一些浏览器的选项
options = webdriver.ChromeOptions()
# 初始化浏览器类对象
driver = webdriver.Chrome(service=service, options=options)
# 打开一个标签页
driver.get("https://bot.sannysoft.com/")
# 退出浏览器
driver.quit()
Selenium基本使用、过检测的更多相关文章
- selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据
简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...
- selenium跳过webdriver检测并爬取天猫商品数据
目录 简介 编写思路 使用教程 演示图片 源代码 @(文章目录) 简介 现在爬取淘宝,天猫商品数据都是需要首先进行登录的.上一节我们已经完成了模拟登录淘宝的步骤,所以在此不详细讲如何模拟登录淘宝.把关 ...
- selenium跳过webdriver检测并模拟登录淘宝
目录 简介 编写思路 使用教程 演示图片 源代码 @(文章目录) 简介 模拟登录淘宝已经不是一件新鲜的事情了,过去我曾经使用get/post方式进行爬虫,同时也加入IP代理池进行跳过检验,但随着大型网 ...
- 网络爬虫之使用pyppeteer替代selenium完美绕过webdriver检测
1引言 曾经使用模拟浏览器操作(selenium + webdriver)来写爬虫,但是稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容 ...
- 让selenium规避网站的检测
在使用selenium对某些网站模拟访问的时候会被检测出来,检测出来之后就有可能拿不到我们想要的数据,那么我们怎么可以规避掉呢? 在使用谷歌浏览器的时候我们右键-检查-console-输入window ...
- selenium被某些网页检测不允许正常访问、登录等,解决办法
网站通过什么方式检测 function b() { return "$cdc_asdjflasutopfhvcZLmcfl_"in u || d.webdriver } 通过上方的 ...
- Selenium 自动化验收测试
Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现操作人员人为的错误,也比较费时间.因此,尽可能将这些任务自动化,以消除人 ...
- python爬虫--selenium模块.上来自己动!
selenium 基本操作 from selenium import webdriver from time import sleep #实例化一个浏览器对象 bro = webdriver.Chro ...
- selenium反爬机制
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...
- selenium执行js--并绕过webdriver监测常见方法
目录 selenium执行js 常见的selenium监测手段 常用绕过selenium监测1 常用绕过selenium监测2 常用绕过selenium监测3 selenium执行js 优点:直接调用 ...
随机推荐
- mybatis数据库字段自动填充
背景描述 目前,大多数项目的数据库设计,都会添加一些公共字段,比如version(版本号).deleted(逻辑删除标识).create_time.update_time.create_by.upda ...
- RocketMQ 系列(四) 消息存储
RocketMQ 系列(四) 消息存储 本文是 RocketMQ 系列的第四篇,下面是前面几篇的文章,不清楚的话点击看一下吧. RocketMQ系列(一) 基本介绍 RocketMQ 系列(二) 环境 ...
- 【目标检测】RCNN算法实现
一.前言 RCNN(Regions with CNN features)算法由Ross Girshick在2014年的论文"Rich feature hierarchies for accu ...
- Salesforce LWC学习(四十五) lwc支持Console App控制Tab了
本篇参考:https://help.salesforce.com/s/articleView?id=release-notes.rn_lwc_workspaceAPI.htm&release= ...
- WPF动画入门教程
Windows Presentation Foundation (WPF)是一种用于创建Windows客户端应用程序的UI框架.它让我们能够创建丰富的图形界面,包括各种各样的动画效果.接下来,我们将介 ...
- 想转行DevOps工程师?快来看看DevOps工程师的学习路径,少走弯路
DevOps方法论 :::tips DevOps方法论的主要来源是Agile, Lean 和TOC, 独创的方法论是持续交付. ::: DevOps 是一种软件开发方法,涉及持续开发,持续测试,持续集 ...
- 判断两个数a,b,输出较大数的平方值。所谓平方值就是两个相同的数相乘的积。
平方值 描述 判断两个数a,b,输出较大数的平方值.所谓平方值就是两个相同的数相乘的积. 输入 两个数a和b 输出 输出较大数的平方值. 输入样例 1 1 2 输出样例 1 4 a,c = map ...
- chatgpt与搜索结合,百度会在这股浪潮下掘金吗?
年末,在百度内部沟通会上,百度创始人李彦宏提到最近他的朋友们问他如何看待ChatGPT,包括他周围同行业中的同一领域和跨境人士. 事实上,早在ChatGPT将他的对话能力和直观的互动方式展现给全世界 ...
- CF451B
题目简化和分析: 这题就是判断将一段翻转后是否能变为升序的数组. 我的方法是保存原数组每一个数出现的位置(相同任意一个),让后另外用一个数组存储排好序后的原数组,逐一进行比较. 若同,则跳到下一个元素 ...
- 快速掌握keepalived
转载请注明出处: Keepalived是一个基于VRRP(虚拟路由冗余协议)的开源软件,用于在Linux系统上实现高可用性和负载均衡.它的主要功能是通过多台服务器之间的协作,确保在其中一台服务器发生故 ...