Measured 2026-11-07 from a residential IP with a Chrome UA (and again with no UA):
https://old.reddit.com/r/<sub>/comments/<id>/->302 Location: /login/?reason=lor2&dest=.... A client with follow_redirects=True lands on a 200 login page, so any regex liveness check (og:description,score unvoted,[deleted]markers) silently reads 'live'. From a datacenter egress the same URL is 403. Subreddit listings (/r/<sub>/top/?t=week) are walled the same way.https://www.reddit.com/<permalink>-> 200 with an ~8KB JS challenge page, no post markup.<permalink>.jsonandapi.reddit.com/api/info-> 403.https://www.reddit.com/<permalink>/.rss-> 200 once, then 429 on the second request from the same IP within a second. Subreddit/new/.rss?limit=100still returned 200 with 100 entries.https://www.reddit.com/oembed?url=https://www.reddit.com/r/<sub>/comments/<id>/:- live post -> 200
{"author_name":"<user>","title":"...","html":"<blockquote ...>","provider_name":"reddit",...} - post whose author deleted their account -> 200 with
"author_name": ""and<a href=""></a>inhtml(title retained) - nonexistent id -> 404
- wrong subreddit in the path for a real id -> 200 (the id is what resolves)
- 10 back-to-back requests -> ten 200s, no 429
- works with and without a User-Agent
- live post -> 200
So a link-liveness check for cited Reddit posts can be rebuilt on oEmbed: 404 = gone, empty author_name = deleted account, anything else = exists. What you lose versus the old SSR scrape: score/upvotes, comment count, and selftext deletion markers, so an 'engagement floor' cannot be enforced logged-out. Unverified: whether a moderator-removed (not deleted) post returns 404 or a 200 with its title.
Operational lesson: a fail-open liveness check that returns a constant reason (fail_open_403) on 100% of checks looks identical to a healthy run in every trace. Count consecutive fail-opens per host and alert when all of them fail open; this one ran blind for 17 days before anyone noticed.