<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Penk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cs492934056</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cs492934056]]></copyright><item><title><![CDATA[从 AutoX.js 到纯 ADB：一次「自动打开微信扫一扫」的完整实践与风控对抗]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/164404914</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/164404914</guid><author>cs492934056</author><pubDate>Sat, 05 Sep 2026 23:28:15 +0800</pubDate><description><![CDATA[<think>我们只需要根据内容生成≤150字的摘要。内容很长，要抓住核心：从AutoX.js方案遇到微信风控，转向纯ADB零痕迹方案，以及工程化细节如多策略降级、验证、编码坑。语言简洁，概括主要转折和最终方案。</think>PC端通过adb控制手机打开微信扫一扫，从AutoX.js内嵌服务方案因模拟器特征、无障碍常驻等触发风控，最终改为纯ADB方案：手机零安装零常驻，用scheme/intent优先、uiautomator dump+input兜底，每步验证并自动降级，避开编码与痕迹问题。]]></description><category></category></item><item><title><![CDATA[OBS Studio 安装 Zoominator 插件]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/161432792</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/161432792</guid><author>cs492934056</author><pubDate>Wed, 27 May 2026 00:39:44 +0800</pubDate><description><![CDATA[Zoominator是一款功能强大的OBS Studio插件，支持对任意源进行动态缩放和鼠标跟随操作，特别适合游戏录制和教学演示场景。安装方法简单：将zoominator.dll复制到OBS的64bit插件目录，并将多语言资源文件放入data/obs-plugins/zoominator/locale/路径下。重启OBS后，即可在滤镜选项中找到Zoominator，通过调整缩放比例和跟随模式实现动态缩放效果。插件支持包括中文在内的多国语言，若安装后找不到插件，请检查文件路径是否正确。该插件为内容创作者提供了]]></description><category></category></item><item><title><![CDATA[前端已死，为什么现在前端web的面试题那么多，广，深]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/151063665</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/151063665</guid><author>cs492934056</author><pubDate>Mon, 01 Sep 2025 10:34:37 +0800</pubDate><description><![CDATA[前端面试题日益&quot;多、广、深&quot;的现象源于技术生态的极速膨胀和行业竞争变化。框架/库迭代、工程化复杂度提升、全栈化趋势等使知识范围大幅扩展；而行业进入存量竞争后，企业更倾向通过深度考察来筛选人才。典型面试涵盖计算机基础、语言深度、框架原理、工程化等多维度内容。建议开发者夯实基础、建立知识体系、注重实践，将持续学习内化为习惯，以适应行业对技术深度和广度不断提升的要求。]]></description><category></category></item><item><title><![CDATA[web前端面试-- MVC、MVP、MVVM 架构模式对比]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/149136693</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/149136693</guid><author>cs492934056</author><pubDate>Sat, 05 Jul 2025 14:53:06 +0800</pubDate><description><![CDATA[这三种都是用于分离用户界面(UI)与业务逻辑的架构模式，旨在提高代码的可维护性、可测试性和可扩展性。]]></description><category></category></item><item><title><![CDATA[Puppeteer基础入门--表单交互与截图]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/146209217</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/146209217</guid><author>cs492934056</author><pubDate>Tue, 18 Mar 2025 10:56:54 +0800</pubDate><description><![CDATA[puppeteer爬虫教程，异步控制与事件监听 - 掌握浏览器事件监听与流程控制 ⚙️。]]></description><category></category></item><item><title><![CDATA[Puppeteer基础入门 - 异步控制与事件监听]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/146210773</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/146210773</guid><author>cs492934056</author><pubDate>Tue, 18 Mar 2025 10:51:50 +0800</pubDate><description><![CDATA[弹窗与文件处理 - 掌握对话框交互与下载管理 💾。]]></description><category></category></item><item><title><![CDATA[Puppeteer基础入门--元素操作基础]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/146203768</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/146203768</guid><author>cs492934056</author><pubDate>Tue, 18 Mar 2025 10:51:10 +0800</pubDate><description><![CDATA[表单交互与截图 - 学习自动化填写表单与页面快照技巧 📸。🛠️ 高级挑战：尝试用XPath重写百度热搜抓取逻辑。解决方案：在回调中重新获取元素。原因：页面跳转后访问旧元素。解决方案：滚动到可视区域。text/="热搜"原因：元素被动态移除。]]></description><category></category></item><item><title><![CDATA[Puppeteer基础入门--Puppeteer初探]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/146203269</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/146203269</guid><author>cs492934056</author><pubDate>Tue, 18 Mar 2025 10:48:51 +0800</pubDate><description><![CDATA[元素操作基础 - 学习如何定位和提取页面数据 🎯。📁 示例代码已上传至GitHub仓库的。检查防火墙是否阻止Chrome进程。]]></description><category></category></item><item><title><![CDATA[Puppeteer教程--爬虫教学视频大纲设计]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/146202013</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/146202013</guid><author>cs492934056</author><pubDate>Tue, 18 Mar 2025 10:46:30 +0800</pubDate><description><![CDATA[【代码】Puppeteer教程--爬虫教学视频大纲设计。]]></description><category></category></item><item><title><![CDATA[问题记录-- 在 Vue2 中动态更新 Select 组件的选项]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/142134777</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/142134777</guid><author>cs492934056</author><pubDate>Tue, 15 Oct 2024 14:59:30 +0800</pubDate><description><![CDATA[在 Vue 中，使用方法来获取select的options可以确保每次渲染时都获取到最新的数据，避免了直接引用数组可能导致的视图不更新的问题。这是一种常见的处理异步数据更新的方式，确保组件能够正确响应数据的变化。数组变化触发方法的原因在于 Vue 的响应式系统是如何追踪依赖的。使用方法返回数组可以确保在每次渲染时获取最新的数据，从而使组件能够正确响应数据的变化。这样设计能够提高组件的灵活性和可维护性。]]></description><category></category></item><item><title><![CDATA[工具按照功能点进行卡密设计指南-- 需求分析思路讲解nodeJS封装好工具类开箱即用]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/136948232</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/136948232</guid><author>cs492934056</author><pubDate>Wed, 27 Mar 2024 10:38:35 +0800</pubDate><description><![CDATA[设计一个，其中集合多中类型的脚本，需要对单独的项目功能进行卡密操作。卡密：用于充值自动化脚本对应项目功能点的秘钥，由服务商生成，客户导入使用。
项目功能点：每个脚本对应一个项目功能点，比如某音刷数据、某书刷数据。
项目功能点数据：一个对象数组的数据结构，其中对象属性包含了功能点appName以及功能点到期时间。]]></description><category></category></item><item><title><![CDATA[闲谈-- 软件测试工程师的分类以及工作内容]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/136863163</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/136863163</guid><author>cs492934056</author><pubDate>Wed, 20 Mar 2024 11:29:57 +0800</pubDate><description><![CDATA[由于会点自动化，但是又不知道自动化在工作中能干什么，所以总问一些测试的同事的工作中会不会用到自动化~后来才发现自动化有一个专门的岗位叫自动化测试工程师！！！下文就是总结，毕竟可以不会做，但是要了解。实际工作中可能没那么细分，但是概念还是要清楚的。]]></description><category></category></item><item><title><![CDATA[Vue双向数据绑定的简单实现-- Observer、Compiler、proxy]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/134129655</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/134129655</guid><author>cs492934056</author><pubDate>Tue, 19 Mar 2024 17:06:59 +0800</pubDate><description><![CDATA[双向数据绑定人人都会背了，已经没什么新奇了。
但是如果遇到XX喜欢问源码之类的，或者问你设计思路你又该如何应对呢，所以下面这篇文章主要是为了记录双向数据绑定的一个实现，采用了类的方式，积极向面向对象编程靠拢。 此处。

效果
待发…]]></description><category></category></item><item><title><![CDATA[Chrome扩展框架- 共享数据之options_page创建数据，其他页面devtools pannel、popup、options、content_script 能够读取]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/136356890</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/136356890</guid><author>cs492934056</author><pubDate>Tue, 19 Mar 2024 16:31:00 +0800</pubDate><description><![CDATA[有一个需求，需要从页面中保存数据到本地，供使用，已验证可以实现。popup以及页面应该也是可以的，后期继续测试~~~共享数据之options_page创建数据，devtools pannel、popup、options、content_script 能够读取。]]></description><category></category></item><item><title><![CDATA[web前端面试-- 模块化的几种规范CMD、COMMONJS、AMD、ESM以及UMD模块化解决方案，export *的写法]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/134976265</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/134976265</guid><author>cs492934056</author><pubDate>Wed, 13 Dec 2023 18:48:05 +0800</pubDate><description><![CDATA[JavaScript 目前有四种模块规范：CMD、COMMONJS、AMD 和 ESM。CMD 是 JavaScript 最早的模块规范，它使用 require 函数来导入模块。CMD 模块是 JavaScript 最早的模块规范，但它存在一些缺陷，比如模块的导入顺序不受控制，模块的依赖关系无法被管理，等等。COMMONJS 是 JavaScript 模块的另一种，它使用 require 函数来导入模块。COMMONJS 模块在解决CMD。]]></description><category></category></item><item><title><![CDATA[vue2 vs vue3 --可访问的全局属性对象(vue2通过vue.property原型链\ vue3通过app.config.globalProperties）]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/134379090</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/134379090</guid><author>cs492934056</author><pubDate>Mon, 13 Nov 2023 16:56:56 +0800</pubDate><description><![CDATA[有时候遇到一些面试官，他会问Vue3如何获取当前实例。其实一开始听这句话是有歧义的，因为不知道面试官说的是根实例还是组件的实例。所以我们一般可以反问一下~选项式api，直接用this就可以直接访问了；组合式api，都不用this，直接就可以访问了。本文主要是讲解Vue2，Vue3获取当前根实例的公共属性以及方法的区别。]]></description><category></category></item><item><title><![CDATA[web前端面试-- window.innerWith、window.outerWidth、clientWidth、offsetWidth、scrollWidth的区别]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/134243207</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/134243207</guid><author>cs492934056</author><pubDate>Mon, 06 Nov 2023 18:01:57 +0800</pubDate><description><![CDATA[它是元素内容区域的宽度，可以通过CSS的width属性来设置。例如，如果一个div元素的宽度为200px，内边距为10px，那么它的clientWidth就是200px - 2 * 10px = 180px。]]></description><category></category></item><item><title><![CDATA[vue2 vs vue3 -- 响应式对象区别，vue2中通过Object.defineproperty、Vue3中ref（Object.defineproperty）reactive(proxy)]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/134116824</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/134116824</guid><author>cs492934056</author><pubDate>Mon, 30 Oct 2023 22:16:40 +0800</pubDate><description><![CDATA[vue2 vs vue3 -- 响应式对象区别，vue2中通过Object.defineproperty、Vue3中ref（Object.defineproperty）reactive(proxy)]]></description><category></category></item><item><title><![CDATA[HTTP请求参数的区别-- Body、Query、Params的区别]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/134064966</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/134064966</guid><author>cs492934056</author><pubDate>Thu, 26 Oct 2023 21:59:36 +0800</pubDate><description><![CDATA[Query参数：Query参数是通过URL的查询字符串传递的数据。Params参数：Params参数是通过URL路径的一部分传递的数据。例如，对于URL  http://example.com/users/123 ，其中的 123 就是一个Params参数，用于标识用户ID为123的用户。总结起来，Body参数用于传递请求主体中的数据，Query参数用于传递URL查询字符串中的数据，而Params参数用于传递URL路径中的数据。Body参数：Body参数是通过请求的主体部分传递的数据。]]></description><category></category></item><item><title><![CDATA[web前端面试-- IEEE754标准JS精度丢失问题0.1+0.2!=0.3、0.2+0.3==0.5 十进制转二进制讲解]]></title><link>https://blog.youkuaiyun.com/cs492934056/article/details/133919898</link><guid>https://blog.youkuaiyun.com/cs492934056/article/details/133919898</guid><author>cs492934056</author><pubDate>Thu, 19 Oct 2023 21:51:06 +0800</pubDate><description><![CDATA[IEEE754标准下，浮点数是用二进制进行存储运算的，部分十进制小数转成二进制是一个无限循环的数值，运算的时候会造成精度丢失。在浏览器环境中以IEEE754存储的0.1、0.2、0.3 咱们可以直接在控制台打印出来。好家伙，不按套路出牌，之前也没深究，但是既然重新学习一下，就记录一下，免得又忘记了。面试官是问你0.1+0.2，或者0.2+0.3的问题吗？不是的，要是下次有个作妖的问你，0.x+0.y呢？方法：小数乘2取整，直到没有小数位置，正向排列。方法：整数除2取余，直到整数倒叙排列。web前端面试-- ]]></description><category></category></item></channel></rss>