Files
douyin-pc/docs/2026-09-05-23-45-notice-mark-read-verification.md
T
2026-09-06 01:00:17 +08:00

3.1 KiB
Raw Blame History

is_mark_read=1 实测影响范围

授权与操作

用户确认当前有未读通知,并明确要求发送请求后检查是否变为已读。本次仅执行一次带标记的列表请求,不点击通知面板,不发送点赞、关注、评论等操作。

登录态检查成功,账号为「抖咅求真」。先用 is_mark_read=0、count=10 保存基线;再用同一列表接口 is_mark_read=1、count=1;最后用 is_mark_read=0、count=10 重读,对比通知 ID 的 has_read。

接口:GET /aweme/v1/web/notice/,其他参数为 device_platform=webapp、aid=6383、channel=channel_pc_web、is_new_notice=1、notice_group=960、min_time=0、max_time=0。

实测结果

通知 ID 请求前 标记请求是否返回 重新查询后
7682073499761968177 has_read=false has_read=true
7682073400638342193 has_read=false has_read=true
  • 标记请求 HTTP 200status_code=0,只返回 1 条。
  • 原先 2 条未读均变成已读,包括未返回的第二条。
  • 其余已读记录仍为已读。
  • 这次实际修改了远端未读状态,未尝试恢复。

结论:网页列表请求确实能触发已读,但影响范围超出本次返回的通知,不能用 count 限制为“只标记本次获取的数据”。

本次样本只证明返回范围外也被标记;未证明整个分组的所有历史通知必然都受影响,也未排除时间水位等服务端实现。没有用大量未读数据测试跨页边界,没有把单次实验泛化成精确的全局规则。

因此保持正式脚本 --mark-readed 的安全阻断:当前用户约束仍是只影响本次数据,本次实验授权不等于永久接受分组批量标记。

证据与复用

  • src/notice_mark_before.json:首次只读观察。
  • src/notice_mark_verification.json:正式实验基线、标记响应、重读响应、逐条对比和时间。
  • src/verify_notification_mark_read.py:独立实验入口,复用同目录的现有登录检查和只读通知请求。
  • src/test_verify_notification_mark_read.py:离线检查实验流程。
# 默认只读取与保存基线,绝不标记
python3 src/verify_notification_mark_read.py
# 明确授权后才使用;可能标记返回范围外的消息
python3 src/verify_notification_mark_read.py --apply
# 离线,不修改远端
python3 src/test_verify_notification_mark_read.py

安装依赖不变:Python、browser-harness、允许本机 CDP 的 Chrome 和手动登录账号。详见 2026-09-05-23-15-current-user-notifications.md;没有新依赖,不硬编码账号或凭证。

实验脚本先保存基线再发标记;没有未读时不发标记,登录校验失败则退出;不自动重试有副作用的请求。超时不代表服务端未生效,应先读取保存证据并重新查询,不直接重试 --apply。

离线检查通过,覆盖默认不标记、显式 --apply 才发一次请求、count=1 参数以及范围外状态变化对比。真实实验也成功。Pyright 对新增同目录模块出现无法解析的缓存诊断,实际 Python 导入执行通过,已记录为误报。