0


selenium自动化检测方法总结 携带用户数据 绕过检测 无头模式 句柄切换

1.selenium携带用户数据

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service(executable_path='chromedriver.exe')
option = webdriver.ChromeOptions()
user_data_dir=r'C:\Users\12501\AppData\Local\Google\Chrome\User Data' #这里只写到
User Data 目录, 用户名可能不同, 根据自己电脑路径去写
option.add_argument(f'--user-data-dir={user_data_dir}')
driver = webdriver.Chrome(service=service, options=option)
driver.get('https://www.baidu.com')

携带用户数据访问谷歌浏览器,防止频繁访问被qiang,相比直接selenium=自动化检测要高级一点 ;

2.selenium绕过检测

        os.chdir(r"C:\Program Files\Google\Chrome\Application")
        os.popen('chrome --remote-debugging-port=9527 --user-data-dir="D:\programming_tools\selenium"')
        # os.popen(r'.\chrome.exe --remote-debugging-port=9527 --user-data-dir="D:\programming_tools\selenium"')
        options = Options()
        # options.add_argument('--headless')  # 添加 无头模式 配置
        options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
        driver = webdriver.Chrome(options=options)

推荐:此方法属于大神操作,基本不会被qiang,对一些需要频繁访问的网站,可以试试,主要原理是 selenium启动的chrome是自定义的浏览器,不是直接电脑上安装的浏览器,所有会被访问网站认为是真实用户的请求;(此方法也需要谷歌驱动)

**3.**selenium无头模式

from selenium.webdriver.chrome.options import Options  # 导入谷歌浏览器的配置对象
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains  # 导入鼠标动作链功能

options = Options()  # 实例化一个谷歌浏览器的配置对象
options.add_argument('--headless')  # 添加 无头模式 配置

service = Service(executable_path='chromedriver.exe')
driver = webdriver.Chrome(service=service, options=options)  # 创建浏览器对象的时候添加配置
driver.get('https://www.baidu.com/')
print(driver.page_source)

input()
driver.quit()

selenium的无头模式 防止检测占用视图,可以去干一些其他事情;

4.selenium句柄切换

selenium操作页面时,若打开一个新页面,需要切换一下句柄,若每次点击都将打开一个新页面,则可以操作完新页面后,将新页面关闭,并将句柄调回到旧页面中,继续旧页面的操作;

# 存储当前窗口的句柄
original_window_handle = driver.current_window_handle

#  对当前旧窗口进行一些操作,点击后会跳转到新的页面

#  出现新页面后,存储所有窗口句柄
    window_handles = driver.window_handles
    # 切换到新窗口或新标签页
    for handle in window_handles:
        if handle != original_window_handle:
            driver.switch_to.window(handle)
            break

#  对新页面进行操作 xpath等

#  关闭新页面,并将句柄调回到旧页面
driver.close()
#  切换回原来的窗口
driver.switch_to.window(original_window_handle)

推荐几个网站:

https://spidertools.cn/#/formatHeader 爬虫工具库

https://googlechromelabs.github.io/chrome-for-testing/ 谷歌驱动下载

https://blog.csdn.net/weixin_45081575/article/details/126585575 selenium绕过检测网站

(上述各个部分相互独立,可直接使用)

标签: selenium python pycharm

本文转载自: https://blog.csdn.net/weixin_50845028/article/details/142029366
版权归原作者 栋布斯 所有, 如有侵权,请联系我们删除。

“selenium自动化检测方法总结 携带用户数据 绕过检测 无头模式 句柄切换”的评论:

还没有评论