python selenium playwright库使用教程 破解网页防止开发者模式 截取数据请求

2023-10-27

安装chromedriver

下载

chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。

有两个下载地址:

1、http://chromedriver.storage.googleapis.com/index.html

2、CNPM Binaries Mirror

当然,你首先需要查看你的Chrome版本,在浏览器中输入chrome://version/

 放chromedriver在chrome安装目录

 默认目录一般为:C:\Program Files\Google\Chrome\Application

获取网页源码

from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get(a[0])#填url
time.sleep(3)
b=browser.page_source
print(b)

常用配置参数:

# 添加UA
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
 
# 指定浏览器分辨率
options.add_argument('window-size=1920x3000')
 
# 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--disable-gpu')
 
 # 隐藏滚动条, 应对一些特殊页面
options.add_argument('--hide-scrollbars')
 
# 不加载图片, 提升速度
options.add_argument('blink-settings=imagesEnabled=false')
 
# 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--headless')
 
# 以最高权限运行
options.add_argument('--no-sandbox')
 
# 手动指定使用的浏览器位置
options.binary_location = r"C:Program Files (x86)GoogleChromeApplicationchrome.exe"
 
#添加crx插件
option.add_extension('d:crxAdBlock_v2.17.crx')
 
# 禁用JavaScript
option.add_argument("--disable-javascript")
 
# 设置开发者模式启动,该模式下webdriver属性为正常值
options.add_experimental_option('excludeSwitches', ['enable-automation'])
 
# 禁用浏览器弹窗
prefs = { 
    'profile.default_content_setting_values' :  { 
        'notifications' : 2 
     } 
} 
options.add_experimental_option('prefs',prefs)
 
# 添加代理 ip
options.add_argument("--proxy-server=http://XXXXX.com:80")
 
driver = webdriver.Chrome(chrome_options=chrome_options)

XPATH获取元素

    content=browser.find_element(value='//*[@id="img-content"]',by=By.XPATH)
    print(content.text)

隐藏chrome

chrome_opts = webdriver.ChromeOptions()
chrome_opts.add_argument("--headless")
browser = webdriver.Chrome(options=chrome_opts)

最小化浏览器窗口

browser = webdriver.Chrome(options=chrome_opts)
browser.minimize_window()

点击元素 写入元素 生成随机字符串

ming=''.join(random.choice(string.ascii_letters+ string.digits) for _ in range(12))
print(ming)
browser.find_element(value='//*[@id="name"]', by=By.XPATH).send_keys(ming)
browser.find_element(value='//*[@id="email"]', by=By.XPATH).send_keys(ming+'@qq.com')

browser.find_element(value='//*[@id="imtype"]', by=By.XPATH).click()
time.sleep(1)
browser.find_element(value='/html/body/div[1]/div/section/div/div[6]/div/div/ul/li[2]/a', by=By.XPATH).click()

点击第一个谷歌搜索结果

browser.find_element(value='//*[@id="rso"]/div[1]/div/div[1]/div/div/div[1]/div/a/h3', by=By.XPATH).click()

Python往文件追加内容

f = open('test.txt', 'a')
f.write('Hello Everyone\n')
f.close()

Selenium设置页面超时时间-快速终止页面加载

当使用Selenium爬取一些页面时,有些页面加载速度特别慢,而我们又不需要等待页面完全加载完毕。
此时可以通过driver.set_page_load_timeout()来设置页面超时时间。
捕获异常,并执行js脚本window.stop()即可实现,代码如下。

from selenium import webdriver

driver = webdriver.Chrome()
driver.set_page_load_timeout(3)

try:
    driver.get('https://hk.louisvuitton.com/zht-hk/homepage')
    print('finish load ....')
except Exception:
    driver.execute_script('window.stop()')
    print(driver.title)
finally:
    driver.quit()

pj网页防止开发者模式

使用 CDP(Chrome Devtools-Protocol),您可以在 JS 文件(检测器)加载框架之前运行代码。因此,使用这些代码删除“webdriver True”属性:

Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })

关键代码:

from selenium.webdriver import Chrome
driver = Chrome('D://chromedriver.exe')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })
  """
})
driver.get('http://pythonlearner.com')

但是,如果您现在将 Chrome 升级到 88。上面提到的方法将毫无用处。幸运的是,我们仍然有一个解决方案(添加此代码)

chrome_options.add_argument("--disable-blink-features=AutomationControlled")

截取数据请求

from seleniumwire import webdriver

browser = webdriver.Chrome("chromedriver.exe")
browser.request_interceptor = interceptor_request
browser.response_interceptor = interceptor_response
browser.get("http://localhost:8088/inner/t4")

for request in browser.requests:
    print(request.url)
    print(request.response.body)

Selenium-处理滑块验证码-openCV识别

opencv基础操作

#opencv基础操作
import cv2
#图像的基本操作
#图像的读取
#img cv2.imread(''")
#查看对应的像素
#img[120,120]
img[120,120]=[255,255,0]
#修改图像尺寸
resized=cv2.resize(img,(960,540))
#修改窗口尺寸
cv2.namedWindow("img",0)
cv2.resizeWindow("img",640,480)
#图像展示
#cv2.imshow('img',img)
#图像写入
cv2.imwrite('',img)
cv2.imencode('.jpg',img)[1].tofile('')
#等待用户按下任意键的时间
cv2.waitKey()#括号里的是时间,单位是ms
#销毁窗口
cv2.destroyAlLWindows()#销毁当前所有正在显示的窗口
#1、隐藏Chrome 正受到自动测试软件的控制
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
browser = webdriver.Chrome(options=chrome_options)

F12进入调试界面总是停留在Paused in debugger解决办法

有时候我们在某个界面点击F12后,页面会出现下面这样的按钮,导致无法对界面进行实时操作:
在这里插入图片描述
我使用的是edge浏览器,解决办法如下:
在这里插入图片描述
点击上面的禁止按钮,再点击一下页面上下面的按钮就可以了!
在这里插入图片描述

Playwright 为现代 web 应用提供了跨浏览器、快速且可靠的端到端的测试能力。 | Playwright 中文文档 | Playwright 中文网

参考:selenium 安装与 chromedriver安装 - Rogn - 博客园 (cnblogs.com)

python 用seleniumwire模块获取网站登陆后的请求头token字符串数据_井底 之鱼的博客-CSDN博客

【浅记】使用seleniumwire滑动极兔滑块_seleniumwire拖动滑动_Docda的博客-CSDN博客

https://www.cnblogs.com/qlqwjy/p/16519286.html

python selenium 保存网页缓存,保持登录 https://www.cnblogs.com/royfans/p/16714805.html

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python selenium playwright库使用教程 破解网页防止开发者模式 截取数据请求 的相关文章

随机推荐

  • STM32F1端口复用与重映射(学习心得)

    端口的复用 以USART1为例 PA9管脚的复用功能为 USART1 TX 串口发送端 PA10管脚的复用功能为USART1 RX 串口接收端 对端口复用的配置 GPIO端口的时钟使能 RCC APB2PeriphClockCmd RCC
  • C语言编程必将成为通用技能

    正文 为什么我们要学习编程 编程是当今时代不可或缺的核心技能 它不仅仅是程序员的专属领域 而是逐渐成为一种通用技能 被越来越多的人所需 想象一下 不久的将来 编程将变成人人都会的事情 而职业编程人员会逐渐减少 就像识字一样 编程将成为人们必
  • 用Java实现分页

    查询完全表之后 接下来要做的是查询总条数 和当前是第几页 总共有几页 包括数据 通过Java思想将封装为类 然后调用 pageBean java类可以当做通用的分页的类 Service作用是封装一类服务 比如说注册或者说登录 它是一类服务
  • IMS中Binder案例

    IMS中Binder案例 1 FWK层中AIDL形式 1 1 服务端实现Stub 1 2 客户端获取proxy 2 Native层中AIDL形式 2 1 服务端对应Bn端 2 2 客户端对应Bp端 android12 release 1 F
  • C++指针的使用

    一 指针的定义和使用 可以通过指针来保存一个变量的地址 例如 int a 2 就相当于内存中分出了一个内存块给变量a 而这个内存块中储存的数值为2 假设这个内存块的地址为0x2e 则可以通过定义一个指针来储存这个地址0x2e 指针就是一个地
  • Qt GraphicsView图形视图框架(Graphics View Framework)

    Graphics View提供了一个surface 用于管理大量定制的2D图形项并与之交互 还提供了一个View小部件 用于可视化项目 并支持缩放和旋转 该框架包含一个事件传播框架 该架构允许对场景中的项目提供精确的双精度交互功能 项目可以
  • IP地址总结

    IP地址分类 IP地址的编码分为两部分 网络号和主机号 A类地址默认子网掩码 255 0 0 0 B类地址默认子网掩码 255 255 0 0 C类地址默认子网掩码 255 255 255 0 D类默认子网掩码 255 255 255 25
  • 数学实验-迭代(Mathematica实现)

    一 实验名称 迭代 二 实验环境 Mathematica 10 3软件 三 实验目的 本实验通过Mathematica 10 3软件利用迭代求解方程的近似解 了解迭代方法在解决问题的收敛速度的异同 认识到函数的迭代是数学研究中的一个非常重要
  • P2P和CS架构

    P2P架构 Peer to Peer 特点 1 没有服务器 2 任意端系统直接通信 3 节点阶段性接入internet 4 节点可能更换ip地址 优缺点 优点 动态和随机性 缺点 难以管理 P2P和CS进行文件分发的比较 当文件数增多时 P
  • CSAPP阅读笔记——第二章:信息的表示和处理

    核心内容 编码原则 无符号 补码 浮点 溢出 无符号 补码 精度 浮点 一 信息存储 字节 存储最小单元 程序的内存管理是在虚拟地址层面上 字长 用于指明整数和指针数据的大小 编码虚拟地址 决定虚拟地址空间大小 数据大小 编码数字的格式 其
  • 【LLMs】关于LLMs的语义搜索

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • ElementUI组件el-time-picker的使用(只显示小时,分钟)

    在开发项目的时候 会经常用到时间选择器 但是ElementUI文档上给的示例是带有秒的 下面就是实现只显示小时和分钟的代码
  • libQt5XcbQpa.so.5多个导致load冲突

    直接运行labelme报错如下 qt qpa plugin Could not load the Qt platform plugin xcb in even though it was found This application fai
  • Windows中缺少mfc140.dll文件解决方法

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个mfc140 dll文件进行安装 前提是找到适合
  • 微信小程序蓝牙通信

    微信小程序目前只支持低功耗蓝牙 BLE 不支持经典蓝牙 微信小程序的当前最新版本为2 3 0 根据实际测试 对IOS支持很好 但对Android支持非常不好 各厂商的Android手机遇到的问题也不一样 因此要开发蓝牙功能 推荐只提供IOS
  • 极低级错误引发的“multiple definition of `XXX''”

    在文件x c中声明定义了一个变量temp 在y c中包含了x h头文件 编译时遇到 multiple definition of XXX 提示在y c文件中重定义了temp 反复检查代码 确定一切操作都无误 y c文件中也确定没有定义tem
  • python中init是什么_详细解读Python中的__init__()方法

    init 方法是重要的有两个原因 第一个原因是 初始化是最重要的步骤在一个对象的生命周期 每个对象都必须正确地初始化 才能正常工作 第二个原因是 init 参数值可以有多种形式 因为有很多方法可以提供参数值 init 有很多用例创建对象 我
  • html5 canvas 如何清空之前的绘制并重新绘制

    如果要重新绘制Canvas clearRect 不好用 将canvas的长宽重新设置成当前长宽即可 转载于 https blog 51cto com niyabuxing 1173359
  • vant组件库中list列表的使用(PullRefresh、van-list、van-empty结合使用)

  • python selenium playwright库使用教程 破解网页防止开发者模式 截取数据请求

    安装chromedriver 下载 chromedriver的版本一定要与Chrome的版本一致 不然就不起作用 有两个下载地址 1 http chromedriver storage googleapis com index html 2