mirror of
https://github.com/serrebidev/BlindRSS.git
synced 2026-08-13 09:49:26 -07:00
Feed parser fails to extract articles from valid feeds in multiple RSS/Atom formats #29
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
serrebi/BlindRSS#29
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The current parser in BlindRSS is unable to extract articles from several valid feeds. The feeds are confirmed to work in other aggregators, but BlindRSS shows “No articles found” because it fails to parse the content.
The parser must be extended to reliably handle a wider range of feed formats.
Formats that should be supported to ensure wide compatibility:
Examples of problematic feeds provided by major online services:
Steps to reproduce
Thanks for the detailed report. This is fixed and released in v1.70.2:
https://github.com/serrebidev/BlindRSS/releases/tag/v1.70.2
What changed:
guidorlinkare no longer discarded; BlindRSS generates a stable per-feed entry ID from the available title/date/content.I also verified the three reported feeds through the local provider before release:
The Windows release assets are published now. The macOS/Linux release workflow has been dispatched and should attach those platform assets when it completes.
Unfortunately, the problem was not resolved for two of the three URLs:
At the same time, they open and display successfully in the browser.
Quick checks to perform first
####Recommended improvements
@tseykovets Thanks for the report. I will address this tomorrow. Thanks for waiting and your understanding. I intend to fix this.
Fixed and released in v1.70.3:
https://github.com/serrebidev/BlindRSS/releases/tag/v1.70.3
What changed:
Validation performed before release:
Windows release assets and updater manifest are published on the release. The macOS/Linux release workflow was dispatched by the release script and should attach those platform assets after it completes.
Unfortunately, I’m still unable to fetch some feeds in BlindRSS. The problematic URLs are:
Below is the log from BlindRSS when trying to add/read the APKMirror feed. You can see the connection is being forcibly reset by the remote host (ConnectionResetError(10054)), and after a retry, the feed processing fails.
Important observation:
This strongly suggests the issue isn’t with XML parsing, but with the HTTP request made by BlindRSS: the server is dropping the connection, likely because the request looks “bot‑like” or non‑browser‑like.
Suggested improvements to address this
To make BlindRSS’s requests look more like those from a real browser and reduce the chance of being blocked, I’d suggest the following:
Let me know if you’d like any further details.
Thanks for your attention to this issue.
@tseykovets Thanks again for the excellent diagnosis — the
ConnectionResetError(10054)together with the feed loading fine in a browser was the key clue. You were right that this is the HTTP request looking non‑browser‑like at the connection level, not a parsing problem. This is now addressed in v1.70.4 and v1.70.5:https://github.com/serrebidev/BlindRSS/releases/tag/v1.70.5
What changed:
Accept-Language,Accept-Encoding, theSec-Fetch-*/sec-ch-uaclient hints,Upgrade-Insecure-Requests,Connection, and a site‑rootReferer.curl_cffi). Many anti‑bot WAFs — APKMirror included — reset the connection based on the TLS handshake fingerprint, before any HTTP headers are read, which is exactly theConnectionResetError(10054)you saw. Plain Pythonrequestscan't get past that no matter which headers it sends. When a fetch is reset, or is met with a Cloudflare/JS challenge or an HTML interstitial, BlindRSS now retries replaying a genuine Chrome fingerprint.Retry-After, so it backs off politely instead of hammering.One honest note about your setup: you mentioned running BlindRSS from a server. Some sites (APKMirror is a likely example) reject datacenter/cloud IP ranges by reputation regardless of how browser‑like the request is — at that point no client‑side change, headers or TLS impersonation, can help, because the block is on the IP rather than the request. For that case, set a Proxy on the feed in Feed Properties (a residential/mobile proxy) so the fetch goes out through an accepted IP. You can also set Browser impersonation: Always on a stubborn feed to skip straight to the Chrome fingerprint on the first try.
If APKMirror or Grav still won't load after updating, please enable debug logging, try the feed once, and share the log line for that fetch (it now includes the outgoing request) — and let me know whether the machine is on a datacenter IP. That will tell us immediately whether it's a fingerprint block (fixable in‑app) or an IP‑reputation block (needs the proxy option).
Thanks for your patience and the thorough reports.
I tested it on version 1.70.6.
The problem with the feed https://getgrav.org/blog.rss was resolved immediately. This feed loads and can be read immediately after being added.
The feed https://www.apkmirror.com/apk/google-inc/android-accessibility-suite/feed/ couldn't be read immediately after being added.
However, if I change the "Browser impersonation:" setting in its properties from "Auto" to "Always," the feed can be read.
A similar situation exists with feeds provided by feedburner.com.
Overall, I consider the problem resolved and am closing this issue.
Great job! Thank you very much!
For reference, here is the log of an unsuccessful feed loading from apkmirror when the "Browser impersonation:" setting is set to "Auto":