Reddit 自动化发布成功了并不代表真的发布出去
在推行 Reddit 自动化分发流程时,我发现一个非常阴险的问题:很多人以为只要 API 返回 URL 且页面能打开,就代表发布成功。但实际上,你使用发帖账号登录后,看到的帖子依然完整——标题、正文、分数通通在,但是除你之外,全世界 nobody 能看到。这就是 Reddit 的阴险之处所在。
正确的监测方法是使用匿名客户端回读。
import praw
## 仅凭API返回URL无法确认发布成功
# 关键点:只传 App 凭证,不传用户账号密码,实现匿名访问
anon = praw.Reddit(
client_id="你的CLIENT_ID",
client_secret="你的CLIENT_SECRET",
user_agent="removal-check-bot",
)
anon.read_only = True
s = anon.submission(id="帖子ID")
# 必须同时检查这两个维度,因为 Reddit 的删除标记不统一
is_removed = s.removed_by_category is not None or s.selftext in ("[removed]", "[deleted]")
removed_by_category字段揭示删除真相
removed_by_category 这个字段是核心情报,它可能出现以下几种情况:
- automod_filtered:由 AutoModerator 删除,通常会伴随一条机器人评论解释原因(如 Karma 不足)。调整内容或养号即可解决。
- moderator:真人版主删除,代码层面难以解决,只能接受。
- reddit:全站垃圾刷过滤器激活,意味着账号已被系统标记,应立即停止发布。
- deleted:作者本人删除,不属于系统拦截。
HTTP请求检测Shadowban易受IP干扰
踩坑经验:不要使用 HTTP 请求 reddit.com/user/xxx/about.json 来检测 Shadowban,许多数据中心 IP 会直接收到 403 响应,导致误判账号被封。
Karma门槛拦截器因数据缺失失效
另一个逻辑漏洞:当你编写检查版块 Karma 门槛的拦截器时,可能会发现它毫无效果。这是因为 reddit.user.karma() 只有在该版块存在记录时才会返回对应数值,否则直接忽略该 Key,导致 if 判断失效,内容直接放行。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
不接个第三方流量监控真的没法用,PRAW 那个默认统计纯纯在骗人