Playwright Stealth插件:绕过网站反爬虫检测的实战指南
1. 项目概述为什么你的Playwright脚本总被“抓包”如果你正在用Playwright做自动化测试或者数据采集大概率遇到过这个头疼的问题脚本跑得好好的突然就被目标网站识别为机器人然后弹出一个验证码或者干脆直接拒绝访问。你可能会纳闷我明明用的是真实的浏览器内核操作也模拟了人类行为怎么就被发现了呢这背后是一场自动化脚本与网站反爬虫/反机器人系统之间持续不断的“猫鼠游戏”。网站的反检测技术远不止是检查你是否用了无头模式那么简单。它们会通过一系列复杂的“指纹”来识别浏览器环境。这些指纹包括但不限于浏览器暴露的navigator.webdriver属性、用户代理字符串中是否包含“Headless”字样、浏览器支持的插件列表、WebGL渲染器信息、字体列表、屏幕分辨率与色彩深度甚至是你执行JavaScript时的细微时间差异。一个原生的、未经任何修饰的Playwright浏览器实例就像是一个穿着标准制服的士兵走进了平民区特征太明显了很容易被“哨兵”一眼识破。playwright-stealth这个库就是为了解决这个问题而生的。它的目标不是让你变成“隐形人”而是把你这个“士兵”的制服换掉抹去那些过于标准的特征让你看起来更像一个普通的、由真人操作的浏览器。它通过一系列精妙的技术手段修改浏览器运行时的各种属性和行为从而有效规避目前市面上大多数常见的检测手段。简单来说它让你的自动化脚本从“一眼假”变得“以假乱真”。这篇文章我将结合自己多年在自动化领域的实战经验为你拆解playwright-stealth的方方面面。从它的核心工作原理到一步步的集成配置再到高级的定制技巧和实战中遇到的“坑”我都会毫无保留地分享出来。无论你是刚接触Playwright的新手还是已经饱受检测困扰的老手这篇文章都能帮你构建起一套更健壮、更隐蔽的自动化方案。2. Playwright Stealth的核心原理深度剖析要真正用好一个工具必须理解它背后的原理。playwright-stealth并非魔法它是一系列针对性防御措施的集合。它的工作方式可以理解为在浏览器页面加载之初就注入一系列脚本对浏览器的原生环境进行“修补”和“伪装”。2.1 指纹修改从“标准兵”到“便衣”浏览器指纹是检测的核心。playwright-stealth主要修改了以下几类关键指纹1. Navigator对象属性这是最基础的检测点。原生Playwright启动的浏览器其navigator.webdriver属性会被设置为true明确告诉网站“我是一个被自动化工具控制的浏览器”。stealth插件会通过执行JavaScript代码将这个属性删除或设置为undefined。此外它还会检查并修正navigator.plugins、navigator.languages等属性确保它们与一个有头、真人使用的浏览器一致而不是一个空数组或默认值。2. 用户代理字符串当Playwright以无头模式启动Chrome或Chromium时用户代理字符串通常会包含HeadlessChrome。例如Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/XXX.0.0.0 Safari/537.36。这简直是自报家门。stealth插件会从用户代理中移除HeadlessChrome字样并将其替换为普通Chrome的标识同时确保整个字符串的格式看起来是合理的。3. WebGL与Canvas指纹高级检测会通过WebGL和Canvas API获取硬件和渲染信息。不同的GPU、驱动甚至操作系统渲染出的图像会有微妙的差异。自动化浏览器环境下的渲染结果可能与真实环境不同。stealth通过重写WebGLRenderingContext.prototype.getParameter等方法返回经过处理的、更接近大众化硬件的信息来干扰这种基于渲染的指纹识别。4. 音频与字体指纹浏览器可以通过AudioContext分析音频处理的细微差异也可以通过document.fonts检查已安装的字体列表。自动化环境下的音频处理可能被简化字体列表也可能不完整。stealth插件会模拟这些API的返回值提供一个看起来更“丰富”和“真实”的指纹。注意这里需要明确一个关键点playwright-stealth并不是“创造”一个全新的指纹而是“修补”现有指纹中那些过于突出、容易被标记的点。它的目标是让指纹变得普通、常见从而融入“人群”而不是变得独一无二。2.2 行为模拟不仅仅是静态伪装除了静态属性动态行为也是检测的重点。人类操作是有随机性和不完美性的。1. 鼠标移动与点击人类的鼠标移动轨迹是曲线带有随机抖动且移动速度不均匀。而自动化脚本的page.click()通常是瞬间、直线定位。stealth本身不直接模拟鼠标轨迹但它为更高级的模拟铺平了道路。在实际应用中我们通常需要结合page.mouse.move()等方法自己实现带轨迹的移动。stealth确保的是当你这么做时底层环境不会暴露你是一个自动化程序。2. 定时器与性能API有些检测会通过performance.now()的精度或者setTimeout、setInterval的执行偏差来判断环境。原生的浏览器环境和高精度计时器在自动化控制下可能会有可预测的模式。stealth通过修补这些时间相关的API引入微小的、符合人类预期的随机延迟和精度变化使得基于时间的检测失效。3. 插件与MIME类型列表navigator.plugins和navigator.mimeTypes在无头或自动化环境中常常是空的或只有少数几项。一个真实的浏览器通常安装了PDF查看器、Flash虽然已淘汰等插件。stealth会向这些列表中添加常见的、合理的条目使其看起来像一个普通用户的浏览器配置。2.3 与Puppeteer Stealth的渊源与差异playwright-stealth是著名的puppeteer-extra-plugin-stealth的移植版本。两者核心思想和技术手段同源。但由于Playwright和Puppeteer在架构和API上的差异移植并非简单复制。Playwright支持多浏览器内核其异步处理模型也与Puppeteer略有不同。因此playwright-stealth在实现上做了适配以确保在Playwright的上下文中能正确、稳定地执行所有伪装脚本。理解这一点很重要很多针对Puppeteer Stealth的绕过技巧和讨论同样适用于Playwright Stealth。社区的经验和解决方案在很大程度上是相通的。当你搜索疑难杂症时不妨把搜索范围扩大到Puppeteer领域往往能找到灵感。3. 从零开始Playwright Stealth的完整集成指南理论讲完我们进入实战。假设你现在有一个全新的项目或者一个正在被检测困扰的现有项目让我们一步步将playwright-stealth武装起来。3.1 环境准备与基础安装首先确保你的Python环境是3.7或更高版本。创建一个干净的虚拟环境是一个好习惯可以避免包依赖冲突。# 创建项目目录并进入 mkdir playwright-stealth-demo cd playwright-stealth-demo # 创建并激活虚拟环境以Linux/macOS为例 python -m venv venv source venv/bin/activate # Windows系统使用venv\Scripts\activate # 安装Playwright核心库 pip install playwright # 安装浏览器二进制文件推荐安装Chromium因为它是Stealth主要优化的对象 playwright install chromium接下来安装主角playwright-stealthpip install playwright-stealth现在基础的舞台就搭好了。3.2 同步与异步API的集成Playwright支持同步和异步两种编程模式。playwright-stealth也相应地提供了两种函数。选择哪一种取决于你项目的主体风格。同步模式集成如果你的脚本是传统的同步写法使用sync_playwright那么导入和使用stealth_sync函数。from playwright.sync_api import sync_playwright from playwright_stealth import stealth_sync with sync_playwright() as p: browser p.chromium.launch(headlessTrue) # 通常无头模式更需要伪装 page browser.new_page() # 关键一步在页面执行任何导航操作之前应用stealth插件 stealth_sync(page) page.goto(https://bot.sannysoft.com/) # 这是一个经典的自动化检测测试页 # ... 你的后续操作 browser.close()异步模式集成如果你的项目使用asyncio例如在FastAPI等异步框架中调用或者你希望获得更好的并发性能那么使用异步模式。import asyncio from playwright.async_api import async_playwright from playwright_stealth import stealth_async async def main(): async with async_playwright() as p: browser await p.chromium.launch(headlessTrue) page await browser.new_page() # 应用异步版本的stealth插件 await stealth_async(page) await page.goto(https://bot.sannysoft.com/) # ... 你的后续操作 await browser.close() asyncio.run(main())实操心得我强烈建议无论你是否使用无头模式都启用stealth插件。因为有头模式下的浏览器依然会暴露navigator.webdriver等属性。启用它只有好处没有坏处除了极微小的性能开销。另外务必在page.goto()导航到目标网站之前调用stealth函数。因为伪装需要在页面环境初始化时就生效如果先访问网站检测脚本可能已经运行并记录了原始指纹。3.3 验证伪装效果使用测试页面如何知道我们的伪装是否有效不要直接上生产环境试错先用专门的测试页面验证。基础测试页https://arh.antoinevastel.com/bots/areyouheadless这个页面非常简单只检测你是否为无头Chrome。未使用Stealth时它会显示“You are Chrome headless”使用后应显示“You are not Chrome headless”。这是最基础的入门测试。综合测试页https://bot.sannysoft.com/这是更全面、更严格的测试页面。它会同时检测数十个指标包括WebDriver属性、用户代理、插件、语言、WebGL、字体等等并以一个简单的表格形式给出结果。未使用Stealth你会看到大片红色的“FAILED”和“DETECTED”。成功使用Stealth后绝大多数甚至全部项目都应该变成绿色的“PASSED”和“NOT DETECTED”。将你的脚本指向这个测试页运行并截图或打印页面内容这是检验Stealth插件是否正常工作的黄金标准。# 在应用stealth并导航到 bot.sannysoft.com 后可以截图保存结果 await page.screenshot(pathstealth_test_result.png, full_pageTrue) # 或者获取页面文本内容进行判断 content await page.content() if FAILED not in content: print(Stealth 伪装成功) else: print(仍有部分特征被检测到需要进一步调优。)4. 高级配置与定制化伪装策略默认的stealth配置已经能应对大多数中等强度的检测。但对于一些拥有顶尖风控系统的网站例如大型电商、社交媒体平台可能需要更精细的调整或者需要解决一些特定问题。4.1 自定义用户代理与视口虽然stealth会处理用户代理但有时你可能需要伪装成特定的浏览器版本或设备。最好在应用stealth之后再设置这些属性以避免冲突。await stealth_async(page) # 设置一个常见的、非无头的用户代理 await page.set_extra_http_headers({ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 }) # 设置一个常见的桌面端视口大小 await page.set_viewport_size({width: 1920, height: 1080})注意事项用户代理字符串的格式必须正确且最好与你的浏览器内核Chromium版本大致匹配。使用一个过于老旧或未来版本的UA字符串本身就可能成为一个可疑点。4.2 启用浏览器上下文与更真实的启动参数直接browser.new_page()创建的页面其上下文相对“干净”。使用browser.new_context()可以创建一个浏览器上下文它拥有独立的缓存、Cookie存储更像一次独立的浏览器会话。结合一些启动参数可以进一步增强隐蔽性。async with async_playwright() as p: # 启动浏览器时添加一些参数 browser await p.chromium.launch( headlessTrue, args[ --disable-blink-featuresAutomationControlled, # 禁用自动化控制特征部分版本Chrome有效 --disable-dev-shm-usage, # 解决在Docker等环境下的资源问题 --no-sandbox, # 沙盒模式根据部署环境决定是否禁用 --disable-web-security, # 禁用同源策略仅用于特定测试非必要勿用 --start-maximized # 启动时最大化对有头模式更有意义 ] ) # 创建一个上下文可以模拟特定设备 context await browser.new_context( viewport{width: 1366, height: 768}, user_agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..., localezh-CN, # 设置语言环境 timezone_idAsia/Shanghai, # 设置时区 ) page await context.new_page() await stealth_async(page) # 对从这个上下文创建的页面应用stealth # ... 后续操作4.3 处理WebSocket与CDPChrome DevTools Protocol泄露这是一个高级话题。有些检测手段会监控浏览器与DevTools之间的WebSocket连接或者检查是否存在CDP会话。Playwright底层是通过CDP控制浏览器的这本身会留下痕迹。playwright-stealth的最新版本已经包含了一些针对CDP痕迹的清理。但为了更彻底你可以尝试在创建浏览器上下文时避免使用某些可能暴露的API或者使用playwright.chromium.launch_persistent_context来启动一个带有持久化用户数据目录的浏览器这更像一个长期使用的真实浏览器。# 使用持久化上下文示例 import os user_data_dir ./chrome_user_data if not os.path.exists(user_data_dir): os.makedirs(user_data_dir) browser await p.chromium.launch_persistent_context( user_data_dir, headlessFalse, # 持久化上下文与无头模式有时兼容性不佳可尝试有头 args[--disable-blink-featuresAutomationControlled], viewportNone, # 使用默认大小 ignore_default_args[--enable-automation] # 忽略“自动化”相关默认参数 ) page await browser.new_page() await stealth_async(page)这种方法相当于你有一个“常驻”的浏览器配置文件里面会保存历史记录、Cookie、本地存储等指纹的稳定性更高但也带来了状态管理的问题需要清理Cookie等。5. 实战避坑常见问题与排查技巧实录即便装备了stealth在实际战场上依然可能“中枪”。以下是我在长期实践中总结的常见问题和排查思路。5.1 问题一Stealth插件应用后部分功能异常现象应用stealth后页面上的某些JavaScript功能失效或者点击、输入等操作没有反应。原因与排查stealth通过重写原生API来实现伪装。极少数情况下这可能会与页面自身的脚本发生冲突尤其是那些也重度依赖或检测这些API的页面。最小化复现首先在一个不使用stealth的脚本中测试同样的操作确认功能本身是正常的。隔离测试如果功能异常尝试注释掉stealth调用看是否恢复正常。如果恢复则基本确定是stealth引起。检查控制台错误在启动浏览器时添加devtoolsTrue参数打开开发者工具查看Console面板是否有JavaScript报错。browser await p.chromium.launch(headlessFalse, devtoolsTrue)选择性禁用playwright-stealth是由多个“规避模块”组成的。理论上可以禁用其中某个模块但这需要你修改库的源代码对新手不友好。更实用的方法是考虑是否必须对这个网站使用stealth如果该网站检测不严或许可以不用。5.2 问题二特定网站仍然能检测到自动化现象通过了bot.sannysoft.com测试但访问目标网站如某电商平台时仍然很快被屏蔽或弹出验证码。原因与排查这说明目标网站使用了stealth尚未覆盖或已绕过stealth的检测技术。风控技术在不断进化。行为检测这是当前最主流的检测方式。你的脚本操作太快、太规律了。例如页面加载后瞬间点击滚动速度恒定输入速度像打字机一样均匀。解决方案引入随机延迟和人类化操作。import random import asyncio async def human_type(page, selector, text): 模拟人类打字随机延迟 await page.click(selector) for char in text: await page.keyboard.type(char) await asyncio.sleep(random.uniform(0.05, 0.2)) # 每个字符间随机延迟50-200毫秒 async def human_scroll(page, pixels): 模拟人类滚动非匀速 total 0 while total pixels: step random.randint(50, 200) await page.mouse.wheel(0, step) total step await asyncio.sleep(random.uniform(0.1, 0.5))网络请求指纹检测请求头、TLS指纹、TCP窗口大小等底层网络特征。Playwright发起的请求其Header顺序、默认携带的字段可能与普通浏览器有差异。解决方案使用page.set_extra_http_headers精心设置请求头模拟常见浏览器的Header顺序这需要抓包分析。更高级的方案是使用playwright的route和fetchAPI完全接管请求过程但这非常复杂。Canvas/WebGL高级指纹虽然stealth做了处理但有些网站使用自研的、更复杂的Canvas指纹算法。解决方案目前社区没有完美的通用方案。可以尝试禁用WebGL但可能影响页面功能或者寻找专门对抗特定算法的补丁脚本。5.3 问题三性能下降与超时现象使用stealth后脚本执行速度明显变慢甚至出现超时错误。原因与排查伪装是有成本的。注入和运行大量的JavaScript补丁代码以及模拟人类行为引入的延迟都会增加耗时。量化影响对比使用stealth前后完成相同操作所需的时间。如果只是增加20%-50%这在可接受范围内。优化策略仅对必要页面使用如果自动化流程中只有部分页面如登录页、关键数据页检测严格可以只在这些页面应用stealth在其他页面使用普通模式。调整超时设置适当增加page.goto()和page.wait_for_selector()等操作的超时时间。await page.goto(url, timeout60000) # 超时设为60秒 await page.wait_for_selector(#some-element, statevisible, timeout30000)硬件升级在资源充足的服务器上运行。5.4 问题排查速查表当你遇到检测问题时可以按照以下清单逐步排查问题现象可能原因排查步骤与解决方案被基础测试页检测Stealth插件未生效1. 确认stealth函数在goto前调用。2. 检查导入语句和函数名sync/async是否正确。3. 运行测试页bot.sannysoft.com查看具体失败项。被特定商业网站检测1. 行为过于规律2. 指纹仍有漏洞3. IP或Cookie被关联1. 引入随机延迟和人类化操作模型。2. 使用browser.new_context配合真实UA、视口、语言。3. 检查是否使用了透明代理或数据中心IP考虑更换高质量住宅代理。4. 清理Cookie或使用无痕上下文。页面功能异常Stealth与页面脚本冲突1. 禁用stealth确认功能恢复。2. 打开浏览器开发者工具查看JS报错。3. 考虑对该站点不使用stealth或寻找替代操作路径。脚本运行缓慢Stealth开销 人为延迟1. 评估性能损耗是否在业务可接受范围。2. 优化脚本逻辑减少不必要的页面导航和等待。3. 仅在检测严格的环节使用人类化行为模拟。验证码频繁弹出综合风险评分过高1. 确保以上所有伪装措施都已到位。2.最重要的使用高质量的代理IP特别是住宅IP。一个干净的IP地址是绕过验证码的基石。3. 降低访问频率模拟真人作息。6. 超越Stealth构建企业级抗检测自动化方案playwright-stealth是一个强大的工具但它不是银弹。在高度对抗的环境中需要一套组合拳。一个健壮的、接近“生产级”的自动化方案应该考虑以下层面1. 基础设施层IP与代理管理这是最核心的一环。再好的浏览器指纹伪装如果来自一个已知的数据中心IP段或一个被标记为滥用的IP也会立刻失败。代理类型选择优先使用住宅代理其次是高质量的ISP代理尽量避免使用公开的数据中心代理。代理池与轮换实现IP自动轮换每个任务或每次会话使用不同的IP。避免在短时间内从同一个IP发起过多请求。会话隔离确保不同的浏览器上下文Context使用不同的代理IP避免Cookie和本地存储信息交叉污染。2. 浏览器环境层指纹多样化不要所有脚本都用同一套伪装参数。多样化配置随机化用户代理从一个包含常见UA的列表中随机选取、视口大小、时区、语言、屏幕色彩深度等。使用真实浏览器配置文件如前所述launch_persistent_context可以加载真实的Chrome用户数据这提供了最丰富的、真实的指纹信息。考虑Playwright的其它引擎除了Chromium可以偶尔使用Firefox或WebKit。不同浏览器的指纹特征不同可以打乱检测方的模型。3. 行为层模拟真人交互模式这是最难但也是最有效的部分。随机化操作路径不要总是以相同的顺序点击链接或填写表单。可以设计多个“操作剧本”随机选择。模拟浏览与等待在关键操作前让页面“停留”一段时间随机滚动模拟阅读行为。处理弹窗与验证码对于简单的弹窗要有预期的处理逻辑。对于复杂验证码需要集成第三方打码服务。4. 监控与自适应层健康检查定期用bot.sannysoft.com等测试页验证你的浏览器环境是否仍然有效。失败重试与降级当操作失败如被重定向到验证码页时应有重试机制。重试时可以更换浏览器上下文、代理IP甚至整个浏览器实例。日志与审计详细记录每次任务的IP、User-Agent、执行结果、遇到的挑战如验证码。这些数据是优化策略的宝贵依据。将playwright-stealth作为这个庞大防御体系中的一环它负责解决“静态指纹”的问题。而动态行为、网络层、资源管理则需要你根据业务场景设计和实现更上层的逻辑。记住对抗检测是一个持续的过程没有一劳永逸的方案唯有不断观察、分析和调整。

相关新闻

深度解析:ComfyUI-Easy-Use中transformer_options配置隔离机制与版本兼容性策略

深度解析:ComfyUI-Easy-Use中transformer_options配置隔离机制与版本兼容性策略

深度解析:ComfyUI-Easy-Use中transformer_options配置隔离机制与版本兼容性策略 【免费下载链接】ComfyUI-Easy-Use In order to make it easier to use the ComfyUI, I have made some optimizations and integrations to some commonly used nodes. 项目地址: h…

2026/7/7 19:40:48 阅读更多 →
零样本平面图定位:基于几何基元的室内空间推理方法

零样本平面图定位:基于几何基元的室内空间推理方法

1. 项目概述:当平面图不再需要“见过”就能准确定位Z-FLoc这个名字乍一听像某个新出的硬件模块编号,但其实它代表了一种思路非常清奇的定位范式转变——不靠海量标注数据训练,不依赖预设地图拓扑,甚至不需要在目标建筑里跑过一遍S…

2026/7/7 19:38:48 阅读更多 →
2026-07-06 GitHub 热点项目精选

2026-07-06 GitHub 热点项目精选

/* 全局样式 */* { margin: 0; padding: 0; box-sizing: border-box; }body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;max-width: 900px; margin: 0 auto; padding: 30px 20px; line-height: 1.7; color: #2d3748;backgro…

2026/7/7 19:38:48 阅读更多 →

最新新闻

数据清洗不是预处理,而是Python数据工作的第一思维习惯

数据清洗不是预处理,而是Python数据工作的第一思维习惯

1. 为什么数据清洗不是“脏活”,而是你写代码时最该前置的思维习惯刚入行那会儿,我带过几个实习生,他们写完一个漂亮的机器学习模型,准确率92%,兴冲冲跑来给我看结果。我问:“训练数据里缺失值怎么处理的&a…

2026/7/7 20:57:20 阅读更多 →
Excel时间序列分析实战:从数据清洗到Holt预测

Excel时间序列分析实战:从数据清洗到Holt预测

1. 为什么用电子表格做时间序列分析?这不是“将就”,而是清醒的选择很多人一听到“时间序列分析”,脑子里立刻跳出Python、R、Jupyter Notebook这些词,仿佛不写几行代码、不调几个scikit-learn的函数,就不算真正入门。…

2026/7/7 20:57:20 阅读更多 →
Pyomo工业优化建模:可读性、可扩展性与可调试性的工程实践

Pyomo工业优化建模:可读性、可扩展性与可调试性的工程实践

1. 为什么我坚持用 Pyomo 做优化建模——一个十年工业算法工程师的坦白你有没有过这种经历:手头有个排产问题,Excel Solver 算到第三轮就卡死;写了个带非线性约束的参数调优脚本,scipy.optimize.minimize 跑出一堆 NaN&#xff0c…

2026/7/7 20:57:20 阅读更多 →
终极漫画电子化指南:5分钟掌握Kindle Comic Converter完整技巧

终极漫画电子化指南:5分钟掌握Kindle Comic Converter完整技巧

终极漫画电子化指南:5分钟掌握Kindle Comic Converter完整技巧 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc 还在为电子阅读器上看漫画体…

2026/7/7 20:55:19 阅读更多 →
Java毕业设计用蛋糕商城系统:SpringBoot+MySQL完整可运行源码包

Java毕业设计用蛋糕商城系统:SpringBoot+MySQL完整可运行源码包

本文还有配套的精品资源,点击获取 简介:专为计算机专业学生准备的毕业设计级蛋糕在线选购系统,基于SpringBoot 2.x构建,后端用Java开发,数据库采用MySQL,配套完整建库脚本cake_mall.sql,导入…

2026/7/7 20:55:19 阅读更多 →
Adobe Illustrator自动化脚本技术架构深度解析:从核心原理到性能优化

Adobe Illustrator自动化脚本技术架构深度解析:从核心原理到性能优化

Adobe Illustrator自动化脚本技术架构深度解析:从核心原理到性能优化 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts Illustrator-scripts项目是一个基于ExtendScript技…

2026/7/7 20:53:18 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻