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. C# object类型与dynamic类型的使用

    获取动态变化的类型属性 例: var类型的参数a中包含属性Name或Age 获取这个不固定的数据 首先验证a中存在的是什么属性 /// <summary> /// 验证object类型是否 ...

  2. Web攻防--Java_SQL注入--XXE注入-- SSTI模板注入--SPEL表达式注入

    预编译 编译器在编译sql语句时,会依次进行词法分析.语法分析.语义分析等操作, 预编译技术会让数据库跳过编译阶段,也就无法就进行词法分析,关键字不会被拆开,注入语句也就不会被识别为SQL的关键字,从 ...

  3. 在微服务环境下,远程调用feign和异步线程存在请求数据丢失问题

    一.无异步线程得情况下feign远程调用: 0.登录拦截器: @Component public class LoginUserInterceptor implements HandlerInterc ...

  4. vue2中使用antv/G6节点内容可滚动的ER图

    先举一个栗子: 效果链接:https://code.juejin.cn/pen/7226264955824930816 如果不会请移步到官网的栗子,请点击查看 狠人话不多,直接给大家上代码: 整体代码 ...

  5. MySQL系列之——SQL介绍、常用SQL分类、数据类型、表属性、字符集、DDL应用、DCL应用、DML应用(增删改)、DQL应用(select )、元数据信息、show命令

    文章目录 一 SQL介绍 二 常用SQL分类 2.1 客户端命令 三 数据类型.表属性.字符集 3.1 数据类型 3.1.1 作用 3.1.2 种类 3.2 表属性 3.2.1 列属性 3.2.2 表 ...

  6. Python基础——字符编码、文件处理

    文章目录 字符编码 一 引入 二 知识储备 2.1 三大核心硬件 2.2 文本编辑器读取文件内容的流程 2.3 python解释器执行文件的流程 2.4 总结 三.字符编码介绍 3.1 什么是字符编码 ...

  7. 客制开发tiptop程序随记-pta表结构问题-误删表的恢复

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 删除字段的语法:alter ...

  8. LUSH & LUXURIOUS

    明亮色系Punchy & Bright 明亮.有着强烈对比的颜色更引人注目. 这种大胆的色彩组合要谨慎地利用,所以在明亮色系中的调和色一般用中性色. 其中不同的色彩饱和度,表现出不同的氛围和意 ...

  9. C#归并排序算法

    前言 归并排序是一种常见的排序算法,它采用分治法的思想,在排序过程中不断将待排序序列分割成更小的子序列,直到每个子序列中只剩下一个元素,然后将这些子序列两两合并并排序,最终得到一个有序的序列. 归并排 ...

  10. 每天5分钟复习OpenStack(六)CPU虚拟化<2>

    OpenStack是 一个IAAS(基础设施即服务)因此免不了会与硬件打交道.下面我介绍下与CPU强关联的一些知识点.1 什么是超配 2 CPU的个数是怎么统计的 3 vCPU的隔离.绑定 1.超配 ...