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

article/2025/7/20 23:38:01

安装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 webdriverdriver = 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 webdriverbrowser = 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

 


http://chatgpt.dhexx.cn/article/ulFtw41U.shtml

相关文章

360浏览器,怎么开启无图片模式,在开热点的时候,省流量

如果某些网站,我需要加载图片,如csdn上传图片的时候。 这时候我们需要进行放权:

【Playwright】关于无痕模式与无头模式

Playwright的无头模式和无痕模式 无头模式 无头模式指的是自动测试框架在执行过程中不打开浏览器窗口的功能。在Playwright中,关闭无头模式会在测试代码执行过程中显示浏览器窗口,执行的过程会显示在浏览器的上。 # 以下代码以Playwright的同步API为例…

爬虫之selenium开启无界面模式

绝大多数服务器是没有界面的,selenium控制谷歌浏览器也是存在无界面模式的(又称之为无头模式) 开启无界面模式的方法 实例化配置对象 options webdriver.ChromeOptions()配置对象添加开启无界面模式的命令 options.add_argument("--he…

locust入门 -6 无图模式和分布式执行

无图模式 无图模式即不通过UI界面进行执行locust测试用例。locust提供了命令参数,我们只需要在执行时添加一个--headless标签即可 “Disable the web interface, and start the test immediately. Use -u and -t to control user count and run time ” 以下内容为…

Python爬虫配置Selenium库+设置无图无头属性

出一个最新windows下配置selenium全环境的教程~ 本文会手把手教你配置环境,并带你写第一个selenium爬虫程序 环境配置 1.安装Selenium库 Python和Anaconda-Python中并不包含Selenium包,这里我们要安装一下Selenium这个包 以下三种方式认选一种即可&am…

chrome如何进入无图模式?

chrom只显示文字不显示图片 隐私和安全-图片 可以设置所有网站都不显示图片 自定义指定网站不允许显示图片

locust入门 —— 无图模式和分布式执行

无图模式 无图模式即不通过UI界面进行执行locust测试用例。locust提供了命令参数,我们只需要在执行时添加一个--headless标签即可 “ Disable the web interface, and start the test immediately. Use -u and -t to control user count and run time ” 以下内容为…

PC端浏览器如何设置无图模式

以谷歌浏览器为例,注意有些浏览器并不支持该功能。 1)打开自定义与控制 2)选择设置 3)查看左边状态栏,选择高级设置--》隐私设置和安全性 4)选择内容设置 5)图片 6)选择不显示任何图…

火狐浏览器设置无图模式

步骤一 打开火狐浏览器,在地址栏输入about:config,然后回车 步骤二 在出来的页面中搜索:permissions.default.image 步骤三 把 permissions.default.image 设成 2 保存。 效果

万向锁的简单数学解释

我们知道用欧拉角表示空间的旋转,容易产生万向锁(Gimbal Lock)问题,这常常不太容易理解。下面给出一个直观的数学解释。 欧拉角表示的空间旋转,可以用绕三个坐标轴的旋转矩阵的乘积表示 万向锁问题就是出现在这种表示方法中。 假如我们令 β…

万向锁的理解

万向锁 万向锁这个概念其实还是不大好理解的,看了很多的博客,虽然看起来他们讲的很有道理,可还是想不通。 希望我这篇文章能讲清楚。。。 万向锁产生的根本原因是绕三个轴的旋转不是同时进行的,想象一下我们旋转矩阵的推导是不是…

万向锁问题详解,以Unity为例

转载自:https://blog.csdn.net/fengya1/article/details/50721768 根据上面的说明两个旋转面(圆圈)怎么会共面,让我迷糊。假设共面,那这两个旋转面的法线应该是旋转轴,要想两个面共面,那旋转轴肯…

UE4解决万向锁问题

万向锁 目录万向锁的来源Unity中最简单的万向锁UE4最简单万向锁解决方案四元数与欧拉角之间的转换参考链接 目录 万向锁的来源 简单而言,万向锁就是由于物体在进行旋转时(前提是通过欧拉角进行旋转),当旋转到某个特定角度会导致…

万向锁(Gimbal lock)问题的理解及解决

万向锁(Gimbal lock)问题的理解及解决 万向锁(Gimbal lock): 一旦选择90作为pitch角,就会导致第一次旋转和第三次旋转等价,整个旋转表示系统被限制在只能绕竖直轴旋转,丢失了一个表示维度。 对于万向锁的…

欧拉角表示旋转会出现的问题——万向锁(Gimbal Lock)

本文用来总结万向锁问题。尽量写得非常简单,方便自己复习和后人理解,水平有限若有错误请指教。 一、旋转的表示 本文中矩阵计算的结果是在世界坐标系(称之为North East Down Frame NED Frame)中的坐标; 参考文章中最后矩阵计算的…

旋转矩阵、欧拉角,万向锁的危害

1. 万向锁会带来什么危害? 最近看了很多万向锁的文章,大家都集中于讲述万向锁的成因,最后都会加上句“导致缺失一个方向的自由度”,但是万向锁现象到底会给实际工作带来什么问题?具体点,万向锁会给姿态解算…

资料分享:一文搞懂万向锁

大家好,我是被深圳台风吹飞的小鱼。台风老哥太暴躁,早上上班裤子都湿了 今天给大家分享一篇文章,主要讲的是欧拉角的万向锁现象,大家知道表示旋转的方式有很多,其中欧拉角就属于比较常见的一种方式,但是欧…

【SLAM学习笔记1】欧拉角之万向锁问题(Gimbal Lock)

文章目录 前言一、欧拉角1.欧拉角是什么?2.使用欧拉角的优缺点 二、万向锁问题的预备知识1.Gimbal(平衡架)2.相关术语 三、万向锁问题1.Gimbal Lock(万向锁问题)的现象2.Gimbal Lock(万向锁问题&#xff09…

[视觉SLAM十四讲]学习笔记2-关于欧拉角和万向锁

[视觉SLAM十四讲]学习笔记2-关于欧拉角和万向锁 1 欧拉角1.1 维基百科定义1.2 ZYX欧拉角与rpy角 2 万向锁2.1 万向节2.1 万向锁的产生 1 欧拉角 1.1 维基百科定义 关于欧拉角的定义,维基百科中这样给出:莱昂哈德欧拉提出用欧拉角来描述刚体在三维欧几里…

Unity 旋转欧拉角及万向锁问题

先说明unity 3D欧拉角的旋转顺序(父子关系)是y-x-z。即旋转y轴x和z轴都变,旋转x轴只有z轴变化,旋转z轴其它轴不变。 模型坐标系 又称物体坐标系。 与特定的物体关联,每个物体都有自己特定的坐标系。不同物体之间的坐…