当前位置: 首页 > wzjs >正文

加盟类网站建设做视频发哪个网站赚钱

加盟类网站建设,做视频发哪个网站赚钱,人事怎么做招聘网站比对分析,深圳本地招聘网站有哪些在 Python 实现多浏览器实例的 JavaScript 注入时,要确保 数据隔离、会话隔离、存储隔离,否则多个实例之间可能会共享 Cookie、LocalStorage 或者其他持久化数据,导致数据污染或冲突。以下是一些关键的隔离策略和代码实现。 1. 数据隔离 问…

在 Python 实现多浏览器实例的 JavaScript 注入时,要确保 数据隔离、会话隔离、存储隔离,否则多个实例之间可能会共享 Cookie、LocalStorage 或者其他持久化数据,导致数据污染或冲突。以下是一些关键的隔离策略和代码实现。
在这里插入图片描述


1. 数据隔离

问题

  • 默认情况下,不同浏览器实例可能会共享同一个 Profile(如 Chrome 账户、缓存等)。
  • 共享 LocalStorage 或 SessionStorage 可能导致数据冲突。

解决方案

  • 启动 Chrome 时,使用 --user-data-dir 让每个实例使用独立的数据目录。
  • 禁用缓存 --disable-cache,避免数据复用。
  • 运行时清理 LocalStorage 和 SessionStorage。
    在这里插入图片描述

代码示例(Pyppeteer)

import asyncio
import os
from pyppeteer import launchasync def inject_js(browser_id, url, script):user_data_dir = f"./chrome_profiles/profile_{browser_id}"  # 每个实例独立的用户数据目录os.makedirs(user_data_dir, exist_ok=True)browser = await launch(headless=False,args=['--no-sandbox','--disable-cache',f'--user-data-dir={user_data_dir}',  # 使用独立的用户数据目录])page = await browser.newPage()await page.goto(url)# 执行 JavaScript 代码并清理本地存储await page.evaluate(f"""{script}localStorage.clear();sessionStorage.clear();""")print(f"[{browser_id}] 执行完毕")await browser.close()async def main():url = "https://www.example.com"script = "document.body.style.backgroundColor = 'green';"tasks = [inject_js(i, url, script) for i in range(5)]  # 5 个浏览器实例await asyncio.gather(*tasks)asyncio.run(main())

关键点

  • 独立 user-data-dir:确保不同实例的数据目录不同,防止缓存、Cookie、LocalStorage 共享。
  • 清除本地存储:每次执行前,清除 localStoragesessionStorage,避免数据污染。

在这里插入图片描述

2. 会话隔离

问题

  • 浏览器实例可能会共享 Cookie、SessionStorage,导致数据不安全或干扰测试。

解决方案

  • 通过 无痕模式(Incognito Mode) 启动浏览器,每个实例都会有独立的会话。
  • 显式清除 Cookies,避免会话共享。

代码示例(Selenium)

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import multiprocessingdef inject_js_selenium(browser_id, url, script):print(f"[{browser_id}] 启动浏览器...")chrome_options = Options()chrome_options.add_argument("--incognito")  # 无痕模式chrome_options.add_argument("--disable-cache")chrome_options.add_argument("--disable-application-cache")driver = webdriver.Chrome(service=Service("/path/to/chromedriver"), options=chrome_options)driver.get(url)print(f"[{browser_id}] 注入 JavaScript 代码...")driver.execute_script(script)# 清除 Cookie,确保会话隔离driver.delete_all_cookies()print(f"[{browser_id}] 注入完成")driver.quit()if __name__ == "__main__":url = "https://www.example.com"script = "document.body.style.backgroundColor = 'blue';"processes = []for i in range(5):  # 5个浏览器实例p = multiprocessing.Process(target=inject_js_selenium, args=(i, url, script))p.start()processes.append(p)for p in processes:p.join()

关键点

  • 使用 --incognito 选项:避免不同实例共享 SessionStorage。
  • 清除 Cookiedriver.delete_all_cookies() 确保不会话复用。

3. 存储隔离

问题

  • 数据存储可能会发生共享(如 IndexedDB、LocalStorage)。
  • 需要在每个实例执行前,清除本地存储和数据库。

解决方案

  • 通过 JavaScript 代码 清除 IndexedDBLocalStorageSessionStorage

代码示例(Pyppeteer)

async def clear_storage(page):await page.evaluate("""indexedDB.databases().then(dbs => {for (let db of dbs) {indexedDB.deleteDatabase(db.name);}});localStorage.clear();sessionStorage.clear();""")print("存储清理完毕")async def inject_js(browser_id, url, script):browser = await launch(headless=False, args=['--no-sandbox'])page = await browser.newPage()await page.goto(url)# 执行 JavaScript 代码并清理存储await clear_storage(page)await page.evaluate(script)print(f"[{browser_id}] 执行完毕")await browser.close()async def main():url = "https://www.example.com"script = "document.body.style.backgroundColor = 'yellow';"tasks = [inject_js(i, url, script) for i in range(5)]await asyncio.gather(*tasks)asyncio.run(main())

关键点

  • indexedDB.deleteDatabase():删除 IndexedDB 以防止数据泄漏。
  • 清理 localStoragesessionStorage,确保不会话存储干扰。

4. 进程隔离

问题

  • 共享浏览器进程可能导致线程安全问题或数据共享。
  • 需要确保每个实例运行在独立进程中。

解决方案

  • 通过 多进程 multiprocessingasyncio 任务并发,确保每个浏览器实例是独立的进程。

代码示例(多进程 + Selenium)

import multiprocessing
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsdef start_browser(instance_id):options = Options()options.add_argument("--headless")  options.add_argument("--incognito")  # 开启无痕模式options.add_argument(f"--user-data-dir=./chrome_profile_{instance_id}")  # 独立数据目录driver = webdriver.Chrome(options=options)driver.get("https://www.example.com")# 注入 JavaScript 代码driver.execute_script("document.body.style.backgroundColor = 'pink';")driver.quit()if __name__ == "__main__":num_instances = 5  # 启动5个实例processes = []for i in range(num_instances):p = multiprocessing.Process(target=start_browser, args=(i,))p.start()processes.append(p)for p in processes:p.join()

关键点

  • 独立 user-data-dir 目录,避免多个 Selenium 实例共享数据。
  • multiprocessing 多进程,确保浏览器实例的完全隔离。

总结

隔离类型方案实现方式
数据隔离独立 user-data-dir、清除 LocalStorage--user-data-dirlocalStorage.clear()
会话隔离开启 --incognito 无痕模式delete_all_cookies()
存储隔离清除 IndexedDB、LocalStorage、SessionStorageindexedDB.deleteDatabase()
进程隔离multiprocessing 启动多个浏览器实例multiprocessing.Process()

通过 独立会话、无痕模式、存储清理、进程隔离,可以确保每个浏览器实例完全隔离,不会影响其他实例的数据。

http://www.dtcms.com/wzjs/568222.html

相关文章:

  • 和田网站制作广州建设工程交易中心官网网址
  • 贵阳响应式网站开发服务网络是什么
  • 韩国企业网站模板下载网上开店加盟
  • 襄阳大摩网站建设上海松江建设发展有限公司网站
  • 谷哥做网站 是如何推广的免费做计算机题的网站
  • 传统网站和手机网站的区别做网站用的编程语言
  • 翻译软件翻译英语做网站恐怖小说网站怎么做
  • 网站设计登录界面怎么做花都手机网站建设
  • 网站数据库建表网站上的文章做参考文献
  • 免费涨1000粉丝网站.tech域名的网站
  • 旅游网站功能流程图杭州景观设计公司
  • 宁波网站建设 网络服务电商需要投入多少钱
  • 做网站用angular北京和君网站建设
  • 互联网网站开发创业计划书外贸做企业什么网站建设
  • 江西网站设计哪家好西安百度推广服务公司
  • 长春做网站优化哪家好个人如何加入百度推广
  • 如何识别网站建设情女照片做杯子网站
  • 青岛 生物类网站建设网站怎么做筛选
  • 怎么让人搜索到自己做的网站办公室装修注意事项
  • 建设一个游戏网站需要多少钱百度秒收录软件工具
  • 怎样上网站建设做网站推广公司
  • 为网站做外链的文章网站建设方案之目标
  • 网站建设服务费标准开发小程序需要多少钱难吗
  • 雅安公司做网站实现wordpress注册模板
  • 黄冈网站建设有哪些wordpress的目录结构
  • 网站建设专业如何做到廉洁自律wordpress 修改用户名
  • 打广告网站安徽专业网站制作公司
  • 网站建成后 再添加小功能麻烦吗做网站需要知道的简单代码
  • 门户网站要用什么软件做高校网站建设汇报
  • 外贸营销型网站2018大数据培训班需要多少钱