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基本使用、过检测的更多相关文章

  1. selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据

    简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...

  2. selenium跳过webdriver检测并爬取天猫商品数据

    目录 简介 编写思路 使用教程 演示图片 源代码 @(文章目录) 简介 现在爬取淘宝,天猫商品数据都是需要首先进行登录的.上一节我们已经完成了模拟登录淘宝的步骤,所以在此不详细讲如何模拟登录淘宝.把关 ...

  3. selenium跳过webdriver检测并模拟登录淘宝

    目录 简介 编写思路 使用教程 演示图片 源代码 @(文章目录) 简介 模拟登录淘宝已经不是一件新鲜的事情了,过去我曾经使用get/post方式进行爬虫,同时也加入IP代理池进行跳过检验,但随着大型网 ...

  4. 网络爬虫之使用pyppeteer替代selenium完美绕过webdriver检测

    1引言 曾经使用模拟浏览器操作(selenium + webdriver)来写爬虫,但是稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容 ...

  5. 让selenium规避网站的检测

    在使用selenium对某些网站模拟访问的时候会被检测出来,检测出来之后就有可能拿不到我们想要的数据,那么我们怎么可以规避掉呢? 在使用谷歌浏览器的时候我们右键-检查-console-输入window ...

  6. selenium被某些网页检测不允许正常访问、登录等,解决办法

    网站通过什么方式检测 function b() { return "$cdc_asdjflasutopfhvcZLmcfl_"in u || d.webdriver } 通过上方的 ...

  7. Selenium 自动化验收测试

    Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现操作人员人为的错误,也比较费时间.因此,尽可能将这些任务自动化,以消除人 ...

  8. python爬虫--selenium模块.上来自己动!

    selenium 基本操作 from selenium import webdriver from time import sleep #实例化一个浏览器对象 bro = webdriver.Chro ...

  9. selenium反爬机制

    使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...

  10. selenium执行js--并绕过webdriver监测常见方法

    目录 selenium执行js 常见的selenium监测手段 常用绕过selenium监测1 常用绕过selenium监测2 常用绕过selenium监测3 selenium执行js 优点:直接调用 ...

随机推荐

  1. 原来你是这样的JAVA[06]-反射

    1.JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息: 获取一个class对应的Class实例后,就可以获取该class的所有信 ...

  2. GIT提交修改的项目到远程仓库

    1.在项目目录下右键选择Git Bash. 2.执行提交命令三部曲 git add . //文件-暂存区,即将所有新增的文件添加到提交索引中,,add后面是"空格 点"就表示当前目 ...

  3. 杰哥教你面试之一百问系列:java中高级多线程concurrent的使用

    目录 问题1:什么是ConcurrentHashMap?它与HashMap的区别是什么? 问题2:什么是CopyOnWriteArrayList?它适用于什么样的场景? 问题3:什么是Blocking ...

  4. defined('BASEPATH') OR exit('No direct script access allowed'); 的作用

    起到保护.php文件的作用, 如果直接访问此php文件会得到"不允许直接访问脚本"的错误提示 如果你是用ci框架或者其他的什么, 就建议加上, 如果你怕别人恶意攻击你的话

  5. 【源码】Vue.js 官方脚手架 create-vue 是怎么实现的?

    Vue.js 官方脚手架 create-vue 是怎么实现的? 摘要 本文共分为四个部分,系统解析了vue.js 官方脚手架 create-vue 的实现细节. 第一部分主要是一些准备工作,如源码下载 ...

  6. 文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题

    五.用go语言,在本节给出的第一个卡片排序算法中,为排序 d 位十进制数,在最坏情况下需要多少轮排序?在最坏情况下,操作员需要记录多少堆卡片? 文心一言: 你提到的第一个卡片排序算法可能是指的基数排序 ...

  7. 为什么 Rust 备受开发者青睐?

    引子 作为一名敏锐的前端开发者,您可能早已对 Rust 有所耳闻,毕竟近几年,使用 Rust 开发的前端构建工具每经发布,其卓越的性能数据总是能带来社区的一阵惊叹. 图片来源:https://swc. ...

  8. 实战|如何低成本训练一个可以超越 70B Llama2 的模型 Zephyr-7B

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  9. 掌握Spring事件监听器的内部逻辑与实现

    本文分享自华为云社区<Spring高手之路15--掌握Spring事件监听器的内部逻辑与实现>,作者:砖业洋__ . 深入探索Spring的事件处理机制,从事件的层次传播.PayloadA ...

  10. 从零开始学习web前端技术路线图

    最近我侄子快实习了,学校跟培训机构合作,交两万多可以参与一个培训,培训四个月,可以包就业.侄子问我,是否要去培训,培训出来可以找到工作吗? 现在很多大学生,上学的时候谈恋爱,玩游戏,快要毕业就焦虑了. ...