基于零宽字符(Zero Width Characters)的盲水印技术。学会这招,你也能给你的页面加上隐形追踪器。

什么是零宽字符?

在Unicode字符集中,有一类神奇的字符。它们存在,但不占用任何宽度,也不显示任何像素。简单说,它们是隐形的。

最常见的几个:

  • \u200b (Zero Width Space):零宽空格
  • \u200c (Zero Width Non-Joiner):零宽非连字符
  • \u200d (Zero Width Joiner):零宽连字符

- 阅读剩余部分 -

阅读全文 »

说到 WebSocket,很多人第一反应就是「又爱又恨」。爱的是它够快,恨的是出了问题压根没法看。Network 面板刷一次丢一次,想抓个包得把页面刷新到怀疑人生;后端说"消息发了",前端却一脸懵:"我咋没收到?"

现在,这块"黑布"终于被扯下来了—— WebSocket DevTools 正式上线——抓包、改包、断网、重放,一条龙搞定,Chrome 商店就能装,30 秒上手。

- 阅读剩余部分 -

阅读全文 »

在前端监控系统中,数据采集只是第一步,如何确保数据能够稳定上报到服务器才是关键挑战。用户可能面临断网、弱网环境,或者快速关闭页面,这些情况都可能导致日志数据丢失。

一、上报方式与策略:如何选出最优解?

前端数据上报主要有三种方式:Image(图片请求)、sendBeacon 和 XHR/Fetch。

1. 三种上报方式详解

GIF/Image
利用图片请求(new Image().src)来传输数据,将上报数据拼在URL后面,服务器返回一张1×1的透明GIF图完成上报。

特点:天然支持跨域,绝无"预检"请求(因为是简单请求)。
局限:只能发GET请求,URL长度有限(通常<2KB),无法携带大数据。

sendBeacon
使用navigator.sendBeacon(url, data),浏览器将数据放入后台队列,即使页面关闭也会尽力发送。

特点:异步非阻塞(不卡主线程),可靠性极高。
局限:数据量有限(约64KB),无法自定义复杂的请求头。

XHR/Fetch
使用XMLHttpRequestfetch发送POST请求。

特点:容量极大(几兆都没问题),适合发送录屏、长堆栈。
局限:跨域时通常会触发OPTIONS预检(成本高),页面关闭时请求容易被掐断(fetch需配合keepalive)。

- 阅读剩余部分 -

阅读全文 »

针对耗时数天甚至数周的Python任务,传统开发模式往往难以应对网络波动或内存溢出。长运行任务(Long-running jobs)的失败方式与普通脚本完全不同,在长时间执行过程中可能面临笔记本电脑进入睡眠、办公室Wi-Fi掉线、数据库偶尔故障等问题。

为了让脚本具备"长寿"基因,需要从韧性(Resilience)、可观测性(Observability)和可恢复性(Recoverability)三个维度重新构建工具链。以下是七个专门为此设计的Python库,它们能解决那些只有在系统崩溃时才会意识到的棘手问题。

- 阅读剩余部分 -

阅读全文 »