<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Joey's Blog]]></title>
        <description><![CDATA[Welcome to my personal blog!]]></description>
        <link>https://joey0609.github.io/</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Sat, 17 Oct 2026 14:07:08 GMT</lastBuildDate>
        <atom:link href="https://joey0609.github.io/rss.xml" rel="self" type="application/rss+xml"/>
        <language><![CDATA[zh_CN]]></language>
        <item>
            <title><![CDATA[Anchor-Free Multi-Target Azimuth Auto-Alignment with UWB and IMU]]></title>
            <description><![CDATA[Project introduction to Anchor-Free Multi-Target Azimuth Auto-Alignment with UWB and IMU.]]></description>
            <link>https://joey0609.github.io/posts/005_anchor_free_auto_alignment/anchor_free_auto_alignment/</link>
            <guid isPermaLink="true">https://joey0609.github.io/posts/005_anchor_free_auto_alignment/anchor_free_auto_alignment/</guid>
            <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>:::note
📄 <strong>IEEE Paper</strong>:  <a href="https://ieeexplore.ieee.org/">Anchor-Free Multi-Target Azimuth Auto-Alignment with UWB and IMU</a> (IEEE Conference, 2026)
:::</p>
<p>We built a <strong>multi-target cooperative positioning system</strong> that enables a group of users to localize themselves relative to each other in <strong>GNSS-denied environments</strong> (indoor, underground, dense urban) <strong>without any pre-deployed base stations, anchor nodes, or absolute heading references</strong>.</p>
<p>Each user wears two small sensor modules: a <strong>foot-mounted IMU</strong> (BMI088 on ESP32-C6) for pedestrian dead-reckoning, and an <strong>upper-arm-mounted UWB node</strong> (DecaWave DW1000) for inter-node ranging. The system fuses these two data sources to jointly estimate every node's <strong>initial position</strong> and <strong>relative azimuth</strong>, mapping all local trajectories into a unified global coordinate frame.</p>
<p><img src="https://joey0609.github.io/_generated/assets/c1d6bc9cd22be304.webp" alt="UWB data aggregation and transmission architecture" /></p>
<p>The system operates under <strong>completely anchor-free conditions</strong> — no base stations, no magnetometers, no prior position information. At startup ($t=0$), <strong>Multidimensional Scaling (MDS)</strong> analytically recovers the relative spatial topology from UWB distance measurements alone. As users begin to move ($t&gt;0$), a <strong>spatiotemporal optimization</strong> jointly solves for global rotation and individual node azimuths while a <strong>dual-branch parallel strategy</strong> eliminates mirror ambiguity — the correct configuration yields residuals <strong>several orders of magnitude smaller</strong> than the incorrect mirror solution.</p>
<p>Field tests were conducted on a <strong>real hardware platform</strong>. The UWB module achieves a typical ranging accuracy of <strong>$5\text{--}20,\text{cm}$</strong> via Double-Sided Two-Way Ranging. The foot-mounted IMU provides robust local displacement increments through <strong>ZUPT</strong> (Zero Velocity Update) to suppress cumulative drift.</p>
<p><img src="https://joey0609.github.io/_generated/assets/65329dc4cac78452.webp" alt="Hardware platform: UWB and IMU modules" /></p>
<p>The experiment took place on a <strong>$28,\text{m}\times15,\text{m}$ indoor basketball court</strong> with <strong>5 subjects</strong> performing straight-line walking, right-angle turns, circular loops, and irregular maneuvers. The five nodes started from scattered positions with <strong>random initial orientations</strong> — <strong>no base stations or preset position information was available</strong>.</p>
<p><img src="https://joey0609.github.io/_generated/assets/e5882b9b9cd55547.webp" alt="Experimental scene: indoor basketball court" /></p>
<p>Throughout data collection, each node's foot-mounted module independently ran INS algorithms. Displacement data and UWB ranging were aggregated at the master node, and after removing NLOS outliers, a multi-epoch observation sequence was constructed for reconstruction.</p>
<p><img src="https://joey0609.github.io/_generated/assets/d3fe24348a38445c.webp" alt="Real-world trajectory reconstruction results" /></p>
<p>The results demonstrate that the algorithm <strong>successfully reconstructed continuous multi-node trajectories</strong> under real sensor noise, synchronization errors, and complex motion patterns — providing an <strong>autonomous initialization scheme</strong> for multi-device cooperative navigation in GNSS-denied environments.</p>
<p>:::note
📄 <strong>Paper</strong>: <a href="https://ieeexplore.ieee.org/">Anchor-Free Multi-Target Azimuth Auto-Alignment with UWB and IMU</a> — IEEE Conference, 2026
:::note</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Strictly Real-Time and Lightweight Foot-Mounted Inertial Navigation]]></title>
            <description><![CDATA[Project introduction to a lightweight and strictly real-time foot-mounted INS that achieves continuous low-latency state output via residual-energy and angular-motion fusion-based zero-velocity detection and a six-state UKF.]]></description>
            <link>https://joey0609.github.io/posts/004_realtime_footmounted_ins/real_time_foot_mounted_ins/</link>
            <guid isPermaLink="true">https://joey0609.github.io/posts/004_realtime_footmounted_ins/real_time_foot_mounted_ins/</guid>
            <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>:::note
📄 <strong>IEEE Paper</strong>: <a href="https://ieeexplore.ieee.org/">Strictly Real-Time and Lightweight Foot Mounted Inertial Navigation via Residual Energy and Angular Motion Fusion</a> (IEEE Conference, 2026)
:::</p>
<p>To validate the feasibility of the proposed method on a low-cost embedded platform, a foot-mounted inertial navigation system was developed based on an <strong>ESP32-C6 (160 MHz)</strong> and a <strong>BMI088 six-axis IMU</strong>. The IMU is fixed on the instep of the shoe — this mounting configuration ensures wearing convenience while enhancing the rigid coupling between the sensor and the shoe, thereby improving the stability of zero-velocity updates.</p>
<p><img src="https://joey0609.github.io/_generated/assets/95b88422b4ce44eb.webp" alt="Test platform and installation setup" /></p>
<p><strong>Two key challenges</strong> are addressed. First, zero-velocity detection is sensitive to gait variations — our <strong>fusion-based detector</strong> combines <strong>residual energy</strong> (capturing foot-contact transitions via short-term acceleration/angular velocity residuals) with a <strong>low-frequency angular motion envelope</strong> (preserving gait periodicity). A <strong>soft-normalization compression</strong> stabilizes decisions under large dynamic range without introducing long latency.</p>
<p>Second, conventional INS suffers from drift and delayed output. We construct a <strong>six-state Unscented Kalman Filter (UKF)</strong> that models the <strong>composite additive acceleration error</strong> directly in the navigation frame, enabling continuous propagation with conditional ZUPT corrections at low computational cost. A <strong>one-frame-in/one-state-out mechanism</strong> ensures strictly real-time output — the state with timestamp $k$ is published within the same processing cycle, even during swing phases.</p>
<p>Indoor experiments were conducted on a <strong>standard half basketball court</strong> (approximately <strong>15 m × 14 m</strong>). Two subjects performed repeated closed-loop walking under metronome guidance at step frequencies of <strong>90, 100, and 120 steps/min</strong> to evaluate adaptability to different gait speeds and individuals — results for different step frequencies are illustrated by curves of different colors.</p>
<p><img src="https://joey0609.github.io/_generated/assets/a8654bee353a1e4e.webp" alt="Indoor test results at different step frequencies" /></p>
<p>In addition, a continuously varying step-frequency experiment from <strong>90 to 120 steps/min</strong> was conducted to evaluate detector stability under dynamically changing gait rhythms.</p>
<p>To further validate applicability over longer paths, an <strong>outdoor long-distance walking experiment</strong> was conducted. The system maintained stable trajectory propagation and periodic error suppression during extended walking, demonstrating its capability for continuous navigation in practical scenarios.</p>
<p><img src="https://joey0609.github.io/_generated/assets/57c7e139f9a9acb6.webp" alt="Outdoor long-distance test route" /></p>
<p>To highlight the engineering significance of the strictly real-time output, the proposed <strong>one-frame-in/one-state-out mechanism</strong> was compared with a conventional delayed-publishing baseline that updates the state only after the supporting foot is confirmed. The results show that the proposed method continuously outputs the current state at every IMU sampling instant, with errors exhibiting bounded continuous fluctuations over time. In contrast, the delayed-publishing baseline shows noticeable stepwise outputs and larger instantaneous lag — demonstrating that the improvements are reflected not only in endpoint accuracy but also in <strong>state freshness and temporal alignment</strong>.</p>
<p>The method achieves <strong>stable positioning</strong>, <strong>continuous low-latency outputs</strong>, and <strong>good trajectory repeatability</strong> across indoor and outdoor scenarios — providing a practical real-time inertial solution for wearable pedestrian navigation.</p>
<p>:::note
📄 <strong>Paper</strong>: <a href="https://ieeexplore.ieee.org/">Strictly Real-Time and Lightweight Foot Mounted Inertial Navigation via Residual Energy and Angular Motion Fusion</a> — IEEE Conference, 2026
:::</p>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GM220S 超级管理员密码获取教程]]></title>
            <description><![CDATA[GM220S 光猫超级管理员密码破解教程——当默认密码失效时，通过 Telnet + U盘提取配置文件解密获取超级管理员权限。]]></description>
            <link>https://joey0609.github.io/posts/001_gm220s_passwd/gm220s_passwd/</link>
            <guid isPermaLink="true">https://joey0609.github.io/posts/001_gm220s_passwd/gm220s_passwd/</guid>
            <pubDate>Sat, 01 Mar 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<blockquote>
<p>⚠️ <strong>免责声明</strong>：本教程仅适用于 GM220S 型号光猫，其他型号仅供参考。对于操作不当导致光猫出现故障，教程作者概不负责。 本教程仅供学习和研究使用，请勿用于非法用途。</p>
</blockquote>
<h2>🔍 背景</h2>
<p>当我们在尝试通过超级管理员进入配置的时候，按照网上的教程输入：</p>
<ul>
<li><strong>用户名</strong>：<code>CMCCAdmin</code></li>
<li><strong>密码</strong>：<code>aDm8H%MdA</code></li>
</ul>
<p>发现 😅 <strong>密码错误</strong>——装宽带的师傅显然修改了密码。这时候如何获取真正密码呢？下面一步步教你。</p>
<hr />
<h2>📋 操作步骤</h2>
<h3>第一步：打开 Telnet 🔓</h3>
<ol>
<li>
<p>打开 <code>http://192.168.1.1</code> 登录你的用户管理页面（账号密码在路由器背面）</p>
<ul>
<li>账号是 <code>user</code>，密码要记住，后面要用到</li>
</ul>
</li>
<li>
<p>接着打开这个网址：</p>
<pre><code>http://192.168.1.1/getpage.gch?pid=1002&amp;nextpage=tele_sec_tserver_t.gch
</code></pre>
</li>
<li>
<p>✅ <strong>勾选「打开 LAN_Telnet」</strong>，点击确定</p>
<ul>
<li>点了确定之后也许网页刷新了一下，什么都没有发生——这是正常的，继续下一步即可</li>
</ul>
</li>
</ol>
<h3>第二步：插入 U 盘 💾</h3>
<p>找一个 U 盘插入到 GM220S 的 USB 接口上。</p>
<h3>第三步：连接到 Telnet 🖥️</h3>
<p>打开 <strong>cmd</strong>（方法：任务栏 Windows 徽标上右击 → 终端/命令提示符），输入：</p>
<pre><code>telnet 192.168.1.1
</code></pre>
<ul>
<li>
<p>✅ <strong>如果提示输入用户名和密码</strong> —— Telnet 打开成功 🎉（如下图）
<img src="https://joey0609.github.io/_generated/assets/569611092b5b0377.webp" alt="alt text" /></p>
</li>
<li>
<p>❌ <strong>如果提示 <code>telnet</code> 不是内部或外部命令</strong> —— 请打开「程序与功能 → 启动或关闭 Windows 功能」，勾选 <strong>Telnet 客户端</strong></p>
</li>
<li>
<p>❌ <strong>如果提示连接失败</strong> —— 说明 Telnet 可能没有打开，请重复第一步</p>
</li>
</ul>
<p><strong>登录 Telnet：</strong></p>
<ul>
<li><strong>账号</strong>：<code>CMCCAdmin</code></li>
<li><strong>密码</strong>：<code>光猫后面 user 的密码 + @C1</code></li>
</ul>
<p>没有提示密码错误，说明成功连接 ✅</p>
<p>连接后可以输入 <code>ls</code>（小写 L 不是 1）回车，会展示出目录结构 📂</p>
<h3>第四步：拷贝配置文件到 U 盘 📤</h3>
<p>先确认 U 盘已经插入，然后运行：</p>
<pre><code>cp /userconfig/cfg/db_backup_cfg.xml /mnt/usb1_1
</code></pre>
<p>之后就可以拔出 U 盘了 ✅</p>
<h3>第五步：密码获取 🔑</h3>
<ol>
<li>
<p>把 U 盘插入电脑，确认根目录下有 <code>db_backup_cfg.xml</code> —— 没有则重复第四步</p>
</li>
<li>
<p>找个地方创建一个<strong>空文件夹</strong>，把上述文件拷贝进去</p>
</li>
<li>
<p>下载 <a href="https://www.123pan.com/s/uksRVv-tvPh">offzip</a>（提取码：<code>uocD</code>），将 <code>offzip.exe</code> 放在该文件夹（如下图）
<img src="https://joey0609.github.io/_generated/assets/bb2d905854c51e2d.webp" alt="alt text" /></p>
</li>
<li>
<p>在文件夹路径栏里输入 <code>cmd</code> 并回车（如下图）
<img src="https://joey0609.github.io/_generated/assets/cdb2f49f155e2e9b.webp" alt="alt text" /></p>
</li>
<li>
<p>在弹出的命令提示符窗口中运行：</p>
<pre><code>offzip -a db_backup_cfg.xml . 0
</code></pre>
<p><img src="https://joey0609.github.io/_generated/assets/a49c067eaf2534a4.webp" alt="alt text" /></p>
</li>
<li>
<p>出现上图即为成功 ✅ 可以看到文件夹里多了一堆 <code>.dat</code> 文件
<img src="https://joey0609.github.io/_generated/assets/48a2c1d262ead173.webp" alt="alt text" /></p>
</li>
<li>
<p>接下来下载安装 <strong>FileLocatorPro</strong>（下载地址见结尾），打开后按下图输入
<img src="https://joey0609.github.io/_generated/assets/758d54c7fbb92976.webp" alt="alt text" /></p>
</li>
<li>
<p>点击开始后，你会看到：
<img src="https://joey0609.github.io/_generated/assets/22963bd31bbc1c87.webp" alt="alt text" /></p>
</li>
<li>
<p>🎉 <strong>Pass 这一栏就是超级管理员密码！</strong> 打开 <code>http://192.168.1.1</code> 登录，大功告成！</p>
</li>
</ol>
<hr />
<h2>📥 资源下载</h2>
<table>
<thead>
<tr>
<th>资源</th>
<th>链接</th>
</tr>
</thead>
<tbody>
<tr>
<td>offzip 及相关工具</td>
<td><a href="https://www.123pan.com/s/uksRVv-tvPh">123云盘下载</a>（提取码：<code>uocD</code>）</td>
</tr>
<tr>
<td>参考视频</td>
<td>BV18d4y1P7kH（部分优化）</td>
</tr>
</tbody>
</table>
<blockquote>
<p>💡 <em>如果对你有帮助，记得支持一下我哦~</em></p>
</blockquote>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[树莓派 Ubuntu 22.04 — Todesk 连接卡 100% 解决方案]]></title>
            <description><![CDATA[解决树莓派 Ubuntu 22.04 上 Todesk 连接进度卡在 100% 及 RealVNC Server 不显示 UI 的问题——都是 Wayland 协议兼容性惹的祸。]]></description>
            <link>https://joey0609.github.io/posts/002_ubuntu_todesk_stuck/ubuntu_todesk_stuck/</link>
            <guid isPermaLink="true">https://joey0609.github.io/posts/002_ubuntu_todesk_stuck/ubuntu_todesk_stuck/</guid>
            <pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<h2>🎯 背景</h2>
<p>前几天买了个树莓派 🍓，装上了 <strong>Ubuntu 22.04</strong> 系统。为了方便远程控制，安装了 <strong>Todesk</strong>。安装一切正常，但在连接的时候——</p>
<p>😱 <strong>电脑端进度卡在 100%</strong>，而 Ubuntu 上却显示已连接成功。</p>
<p>不知所措之下，又装了 <strong>RealVNC Server</strong>，结果不显示 UI，安装时还报错。经过一番捣鼓后终于找到问题根源，特此分享 📝</p>
<hr />
<h2>❌ 遇到的问题</h2>
<h3>1️⃣ Todesk — 连接卡在 100%</h3>
<p>连接服务器时，进度始终卡在 <strong>100%</strong>，但是被控端显示正常被连接。</p>
<p><img src="https://joey0609.github.io/_generated/assets/3ad985ead4176633.webp" alt="alt text" /></p>
<blockquote>
<p><em>由于复原比较麻烦，图是 P 的，但大概就是这么个事儿 😅</em></p>
</blockquote>
<h3>2️⃣ Real VNC Server — 安装后不显示 UI</h3>
<p>安装时遇到以下输出：</p>
<pre><code>NOTICE: common configuration in /etc/pam.d contains the following modules:
   pam_sss.so
The default vncserver PAM configuration only enables pam_unix. See
`man vncinitconfig` for details on any manual configuration required.

Looking for font path... /usr/share/fonts/X11/misc,/usr/share/fonts/X11/Type1,bu
ilt-ins (from xset).
Installed systemd unit for VNC Server in Service Mode daemon
Start or stop the service with:
  systemctl (start|stop) vncserver-x11-serviced.service
Mark or unmark the service to be started at boot time with:
  systemctl (enable|disable) vncserver-x11-serviced.service

Installed systemd unit for VNC Server in Virtual Mode daemon
Start or stop the service with:
  systemctl (start|stop) vncserver-virtuald.service
Mark or unmark the service to be started at boot time with:
  systemctl (enable|disable) vncserver-virtuald.service
</code></pre>
<p>安装是正常安装了 ✅ 但是点击图标时，要输入管理员认证，认证之后<strong>就没有任何 UI 显示</strong>。就像这个链接里描述的那样：</p>
<p>🔗 https://superuser.com/questions/1750182/installing-realvnc-server-on-ubuntu-22-04-error-download-is-performed-unsandbo</p>
<p>（虽然估计你打不开，丢一张网站截图在这里 👇）
<img src="https://joey0609.github.io/_generated/assets/8e7836e7925dbfcf.webp" alt="alt text" /></p>
<hr />
<h2>✅ 解决方案</h2>
<blockquote>
<p>🧠 <strong>根本原因</strong>：截止发文时间，Todesk 只支持 <strong>X11 协议</strong>，没有适配最新的 <strong>Wayland 协议</strong>。所以我们需要把窗口系统调整为 X11。</p>
</blockquote>
<p><img src="https://joey0609.github.io/_generated/assets/ebf68c27f04cddce.webp" alt="alt text" /></p>
<h3>Step 1 ✏️ 修改配置文件，关闭 Wayland</h3>
<pre><code>sudo nano /etc/gdm3/custom.conf
</code></pre>
<h3>Step 2 🔧 取消注释</h3>
<p>找到以下这行，把前面的 <code>#</code> 号删掉：</p>
<pre><code>#WaylandEnable=false
</code></pre>
<p>⬇️ 改为：</p>
<pre><code>WaylandEnable=false
</code></pre>
<p><img src="https://joey0609.github.io/_generated/assets/37f7eaa2b80a08d3.webp" alt="alt text" /></p>
<h3>Step 3 💾 保存退出</h3>
<p>按 <code>Ctrl + X</code> 离开，提示是否保存时输入 <code>Y</code> 回车保存。</p>
<h3>Step 4 🔄 重启系统</h3>
<pre><code>reboot
</code></pre>
<p>🎉 <strong>重启完成，以上两个问题都被解决！</strong></p>
<hr />
<h2>💡 总结</h2>
<p>所以说如果你的 Todesk 进度也卡在了 <strong>100%</strong>，十有八九是因为<strong>图传的问题</strong>（比如解码编码出了状况），而根源就是 <strong>Wayland 与 X11 的不兼容</strong>。</p>
<hr />
<h2>📖 附 1：背景知识 — X11 与 Wayland 区别</h2>
<table>
<thead>
<tr>
<th>维度</th>
<th>X11</th>
<th>Wayland</th>
</tr>
</thead>
<tbody>
<tr>
<td>🏗️ <strong>架构</strong></td>
<td>客户端-服务器架构，应用通过 X 服务器与显示器交互</td>
<td>合成器-客户端架构，应用直接与合成器交互</td>
</tr>
<tr>
<td>⚡ <strong>性能</strong></td>
<td>输出需多次复制转换，性能较低</td>
<td>输出直接传递给合成器，性能更优</td>
</tr>
<tr>
<td>🔒 <strong>安全性</strong></td>
<td>应用可访问整个 X 服务器（含其他应用数据）</td>
<td>沙箱隔离，每个应用只能访问自己的数据</td>
</tr>
<tr>
<td>🔄 <strong>兼容性</strong></td>
<td>非常成熟，已被广泛使用几十年</td>
<td>部分旧应用不兼容（可通过 XWayland 兼容层运行）</td>
</tr>
<tr>
<td>🛠️ <strong>开发难度</strong></td>
<td>高级抽象层，开发较简单</td>
<td>需要处理更多细节（窗口管理、输入事件等）</td>
</tr>
</tbody>
</table>
<hr />
<h2>📚 附 2：参考资料</h2>
<ul>
<li><a href="https://blog.csdn.net/benco1986/article/details/131372561">https://blog.csdn.net/benco1986/article/details/131372561</a></li>
<li><a href="https://blog.csdn.net/crazyjinks/article/details/130017180">https://blog.csdn.net/crazyjinks/article/details/130017180</a></li>
<li><a href="https://www.tuxedocomputers.com/en/Whats-the-deal-with-X11-and-Wayland-_1.tuxedo">https://www.tuxedocomputers.com/en/Whats-the-deal-with-X11-and-Wayland-_1.tuxedo</a></li>
</ul>
]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bilibili 直播去遮挡—移除马赛克蒙层]]></title>
            <description><![CDATA[Bilibili 直播页面去除马赛克蒙层的多种方法——Tampermonkey 油猴脚本，适用于电脑端。]]></description>
            <link>https://joey0609.github.io/posts/003_bilibili_mask_remove/bilibili_mask_remove/</link>
            <guid isPermaLink="true">https://joey0609.github.io/posts/003_bilibili_mask_remove/bilibili_mask_remove/</guid>
            <pubDate>Tue, 23 Jan 2024 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<blockquote>
<p>⚠️ <strong>注意</strong>：该方法仅适用于电脑端，手机暂时没有方法删除。</p>
</blockquote>
<hr />
<h2>🧰 四种解决方法</h2>
<h3>方法一 🚀 Console 一键隐藏</h3>
<p>按 <code>F12</code> 打开<strong>控制台（Console）</strong>，输入以下内容并回车：</p>
<pre><code>document.getElementById('web-player-module-area-mask-panel').style.display = 'none';
</code></pre>
<p><img src="https://joey0609.github.io/_generated/assets/aa000ce745141ac0.webp" alt="alt text" /></p>
<p>✅ <strong>最快速</strong> — 无需安装任何东西，一次管一次。</p>
<hr />
<h3>方法二 🎯 元素删除法</h3>
<p>按 <code>F12</code> 打开<strong>元素面板（Element）</strong>，找到以下节点：</p>
<p><img src="https://joey0609.github.io/_generated/assets/f710493c62819187.webp" alt="alt text" /></p>
<p>按 <code>Delete</code> 键删除即可。</p>
<hr />
<h3>方法三 📦 使用现成油猴脚本</h3>
<p><strong>Bilibili Live Tasks Helper</strong></p>
<p>🔗 https://greasyfork.org/zh-CN/scripts/406048-bilibili-live-tasks-helper</p>
<blockquote>
<p><em>（如何安装油猴插件请自行搜索 🔍）</em></p>
</blockquote>
<p>可能是本人水平不够，没有找到脚本的配置入口，于是自己写了一个…👇</p>
<p><img src="https://joey0609.github.io/_generated/assets/2c71060826247203.webp" alt="alt text" /></p>
<hr />
<h3>方法四 ✍️ 自建油猴脚本</h3>
<p>如果现成脚本不好用，可以自己动手创建一个新的油猴脚本，然后把下面的代码复制进去就行啦 ✨</p>
<pre><code>// ==UserScript==
// @name        Modify Style for Bilibili Player
// @namespace   http://tampermonkey.net/
// @version     1.0
// @description Modify the style attribute of .web-player-module-area-mask on live.bilibili.com
// @author      Anonymous
// @match       https://live.bilibili.com/*
// @grant       none
// ==/UserScript==

(function() {
  'use strict';

  // Function to modify the style of the target elements
  function modifyStyle() {
    var elements = document.querySelectorAll('.web-player-module-area-mask');
    elements.forEach(function(element) {
      element.style = '';
    });
  }

  // Use a MutationObserver to watch for changes in the DOM
  var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
      if (mutation.addedNodes.length) {
        // Check if the target element is in the added nodes
        var targetElement = Array.from(mutation.addedNodes).find(
          node =&gt; node.classList &amp;&amp; node.classList.contains('web-player-module-area-mask')
        );
        if (targetElement) {
          modifyStyle();
        }
      }
    });
  });

  // Start observing the document body for added nodes
  observer.observe(document.body, {
    childList: true,
    subtree: true
  });

  // Also modify existing elements on script load
  modifyStyle();
})();
</code></pre>
]]></content:encoded>
        </item>
    </channel>
</rss>