首先上一个被拷贝的惨不忍睹 上一个是滑块验证[https://www.cnblogs.com/carl-/p/15761861.html]

还是前两天做一个商城后台爬虫,限制用户缓存,不能用谷歌开发版本,同时需要下载文件。

话不多说上代码[https://www.cnblogs.com/carl-/p/15762714.html]

import getpass
from playwright.sync_api import sync_playwright
# 不出意外这个可以获取到你google的本地缓存文件
__USER_DATE_DIR_PATH__ = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data" playwright = sync_playwright().start()
browser = playwright.chromium.launch_persistent_context(
# 指定本机用户缓存地址
user_data_dir=__USER_DATE_DIR_PATH__,
# 指定本机google客户端exe的路径
executable_path=__EXECUTABLE_PATH__,
# 要想通过这个下载文件这个必然要开 默认是False
accept_downloads=True,
# 设置不是无头模式
headless=False,
bypass_csp=True,
slow_mo=10,
#跳过检测
args=['--disable-blink-features=AutomationControlled']
)

注意用这个方法启动的浏览器会自带一个页面存在,当然你还是可以重新再起一个

# 打开新页
page = browser.new_page()
# 访问谷歌首页
page.goto('https://www.google.com',wait_until='networkidle',timeout=90000)
wait_until='networkidle' 意思是 跳转过后再一定时间内没有网络请求链接
timeout 很好理解 超时时间90秒

js注入(用途的话是选择器选择元素用的,具体的js 你们自己写)

# 算是获得句柄吧
window_handle = page.evaluate_handle("window")
# 选择元素
window_handle.evaluate("document.querySelectorAll('#drrReportRangeTypeRadioMonthly')[0].checked=true")
# 自带select选择 data自行补充
drrMonthlySelect = page.wait_for_selector('//select[@id="drrMonthlySelect"]')
drrMonthlySelect.select_option(date)

接下来是下载操作

# 打开下载器
with page.expect_download() as download_info:
#找到你要下载的东西,找到点击的元素,点击
page.wait_for_selector('//a[@id="sspa-reports:report-settings-page:-download-button"]').click()
# 下载的东西
download = download_info.value
# 下载的路径
download.path()
# 下载的文件名
download.suggested_filename
# 关闭页面
page.close()
# 关闭浏览器
browser.stop()

剩下的操作 你想干啥干啥

# 补充几个
# 点击
page.click('//input[@id="signInSubmit"]')
# 等待完成
self.page.wait_for_load_state("domcontentloaded")
# 输入
page.fill('//input[@id="ap_email"]', user_str)
# 查找元素
page.wait_for_selector('//select[@id="drrMonthlySelect"]')

playwright--自动化(三): 跳过检测 使用正常谷歌 指定用户数据 下载文件的更多相关文章

  1. 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作

    前端自动化(三)   合并压缩css.压缩js.添加时间戳.打包上线操作 此文在前两篇基础上对比参考,会很方便理解 gulp.task("delete",function(){ r ...

  2. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  3. STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  4. Android检测是否安装了指定应用

    检测是否安装了指定应用的方法如下: private boolean isAvilible( Context context, String packageName ) { final PackageM ...

  5. H5页面实现下载文件(apk、txt等)的三种方式

    需求描述 接到的原始需求是这样的,有一个H5页面,页面中有个"点击下载"的按钮,点击之后,完成下载特定的apk.大概是下面这样的: 需求分析 接到需求的时候我偷乐了一下,这个H5页 ...

  6. tensorflow学习笔记三:实例数据下载与读取

    一.mnist数据 深度学习的入门实例,一般就是mnist手写数字分类识别,因此我们应该先下载这个数据集. tensorflow提供一个input_data.py文件,专门用于下载mnist数据,我们 ...

  7. 检测到有潜在危险的 Request.Form 值。 说明: ASP.NET 在请求中检测到包含潜在危险的数据

    在请求方法的顶部添加        [ValidateInput(false)]就OK了 从客户端(Content=" sdfdddd ...")中检测到有潜在危险的 Reques ...

  8. 解决iPhone上select时常失去焦点,随意跳到下一个输入框,影响用户操作

    window.addEventListener('load', function() { FastClick.attach(document.body); }, false); //300s延迟,解决 ...

  9. JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(三),多线程断点下载

    一 前言 本篇博客是<JWebFileTrans(JDownload):一款可以从网络上下载文件的小程序>系列博客的第三篇,本篇博客的内容主要是在前两篇的基础上增加多线程的功能.简言之,本 ...

随机推荐

  1. python 从ubantu环境迁移到windows环境

    下载安装Anaconda3 Anaconda3-2021.05-Windows-x86_64.exe 默认安装目录 C:\ProgramData\Anaconda3 可以启动Anaconda查看不同的 ...

  2. LINUX 系统性能检测工具vmstat

    vmstat 有2个参数,第一个是采样时间间隔(单位是s),第二个参数是采样个数. #表示 2s采样一次,一共采样2次 vmstat 2 2 也可以只写第一个参数,让系统一直采样直到停止(ctrl + ...

  3. 【Java】【设计模式】单例设计模式

    思想: 为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式 代码体 ...

  4. 3.Vue.js-目录结构

    Vue.js 目录结构 上一章节中我们使用了 npm 安装项目,我们在 IDE(Eclipse.Atom等) 中打开该目录,结构如下所示: 目录解析 目录/文件 说明 build 项目构建(webpa ...

  5. 网络安全:关于SecOC及测试开发实践简介

    前言 我们知道,在车载网络中,大部分的数据都是以明文方式广播发送且无认证接收.这种方案在以前有着低成本.高性能的优势,但是随着当下智能网联化的进程,这种方案所带来的安全问题越来越被大家所重视. 为了提 ...

  6. Python 中更安全的 eval

    问题 想要将一段列表形式的字符串转为 list,但是担心这个动态的字符串可能是恶意的代码?使用 eval 将带来安全隐患.比如: # 期望是 eval('[1, 2, 3]') # 实际上是 eval ...

  7. [BUUCTF]REVERSE——[FlareOn4]login

    [FlareOn4]login 附件 步骤: 是个网页,直接打开,查看网页源码 百度了几个函数 charCodeAt(0)是返回当前字符的Unicode 编码 String.fromCharCode返 ...

  8. Element-UI 使用 class 方式和 css 方式引入图标

    今天在使用 vxe-table 时,需要引入 Element UI的图标,顺便就找了下这些组件库中图标的引用方式. 我们知道 Element .Ant Design.Font Awesome 等很多组 ...

  9. 查找与引用函数(Excel函数集团)

    此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...

  10. 记一次 .NET 某市附属医院 Web程序 偶发性CPU爆高分析

    一:背景 1. 讲故事 这个月初,一位朋友加微信求助他的程序出现了 CPU 偶发性爆高,希望能有偿解决一下. 从描述看,这个问题应该困扰了很久,还是医院的朋友给力,开门就是 100块 红包 ,那既然是 ...