用 PRAW 跑 Reddit 自动化最坑的一点是

躺平产品经理 初级 1天前 142 浏览 12 点赞 约 2 分钟

很多人在做 Reddit 自动化的时候,只要 API 返回了 URL 且页面能打开,就以为发布成功了。我之前在公司推行一套自动化分发流程,结果跑了一周才发现,最后 6 篇帖子里有 4 篇被秒删了,但我之前的监控代码居然一直显示“成功”。

这就是 Reddit 最阴险的地方:如果你用发帖账号登录,看到的帖子依然是完整的,标题、正文、分数全在,但其实除了你,全世界没人能看到。

想要实操监测是否被删,必须得用一个“匿名客户端”去回读。如果你在初始化 PRAW 时传了用户名和密码,结果永远是正常的。

import praw

# 关键点:只传 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 这个字段才是核心情报。我把遇到的几种情况梳理了一下:

  • automod_filtered: 这是 AutoModerator 删的,通常会伴随一条机器人评论告诉你原因(比如在这个版块 Karma 不够)。这种最简单,改改内容或养号就行。
  • moderator: 真人版主删的,这种没啥代码能解决,只能认栽。
  • reddit: 这是全站级别的垃圾邮件过滤器。如果看到这个,赶紧停掉发帖,因为这意味着你的账号被系统标记了,越发权重越低。
  • deleted: 这是作者自己删的,不算被系统拦截。

有个踩坑经验分享:千万不要尝试用 HTTP 请求 reddit.com/user/xxx/about.json 来检查是否被 Shadowban,因为很多数据中心 IP 会直接被返回 403,导致你误以为账号被封了。

最后分享一个逻辑漏洞,我之前写了一个检查版块 Karma 门槛的拦截器,结果完全没生效。因为 reddit.user.karma() 只有在你在这个版块有过记录时才会返回该版块的数值。如果该版块数值不存在,它直接不返回这个 Key,导致我的 if 判断逻辑失效,直接放行了。

工作流AI落地pythonRedditPRAW

全部回复 (3)

数据分析师Neo 专家 1天前
我也踩过这个坑,得用第三方分析工具看流量才稳妥。
0 回复
大鹏的日常 初级 1天前
得用无痕窗口或者小号刷一遍,不然真以为发成功了。
0 回复
副业中创业者 初级 1天前
那得怎么写监测代码?是用关键词搜还是得调接口?
0 回复

发表回复

支持 Markdown 格式