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 优点:直接调用 ...
随机推荐
- 2.12 PE结构:实现PE字节注入
本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术.该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行 ...
- 「Tricks」整体DP
不太了解这个东西的具体定义是什么,总之应该是一个用数据结构维护 DP 状态的某几个维度的 trick 吧. 事实上你可以把这篇 post 理解为三个题的解集. 先直接来看 noi2020 - Dest ...
- Linux下安装MySQL问题及报错解决
前言: 在Linux环境下,安装MySQL服务 环境: 虚拟机CentOS7 \-----------------------------------------------\ 流程: 确保mysql ...
- MySQL系列之优化——1.优化哲学、2. 优化工具的使用、3. 优化思路分解、4. MySQL参数优化测试、5.1 参数优化、6. 参数优化结果、7. 锁的监控及处理、8. 主从优化
文章目录 1.优化哲学 1.1 为什么优化? 1.2 优化风险 1.3 谁参与优化 1.4 优化方向 1.5 优化的范围及思路 优化效果和成本的评估: 2. 优化工具的使用 2.1 系统层面的 2.1 ...
- ERP 财务管理的应付帐款流程
导读:应付帐款流程与应收帐款流程是财务管理的开端,也是财务工作的主要流程.若能够这两大流程控制好了,ERP系统的财务模块也就成功了一大半了.我先讲一下财务管理的应付帐款流程. 企业的应付帐款有很多种类 ...
- CUDA C编程权威指南:2.2-给核函数计时
本文主要通过例子介绍了如何给核函数计时的思路和实现.实现例子代码参考文献[7],只需要把相应章节对应的CMakeLists.txt文件拷贝到CMake项目根目录下面即可运行. 1.用CPU计时器计 ...
- RAC 环境中 gc block lost 和私网通信性能问题的诊断
声明:此文来自于MOS(Doc ID 1674865.1),整理在此以便于大家阅读学习. ■ 概要 在Oracle的RAC环境中,数据库会收集global cache 的工作负载统计信息,并把这些信息 ...
- 触发器引起的ADG备库同步错误
数据库alert日志报错ORA-16000,查看对应的trc文件,大致如下报错: *** 2020-10-27 14:09:03.340*** SESSION ID:(3340.75) 2020-10 ...
- 深入MySQL索引,这篇千万不能错过
大家好,我是[码老思],索引是一个数据库绕不开的话题,今天和大家一起聊聊. 1. 索引 索引是对数据库表中一列或多列的值进行排序的一种结构. MySQL索引的建立对于MySQL的高效运行是很重要的,索 ...
- fastjson反序列化Map对象为null?其实它只是一个地址,试试Map深拷贝
今天遇到一个小问题,我用fastjson,把一个map对象转为实体类对象返回给前端的时候,map对象里面的一个属性既然为null. 由于前端需求,我们需要返回一个json里面,有两个属性是一样的(都是 ...