|
|
#31 |
|
Connoisseur
![]() Posts: 59
Karma: 16
Join Date: Feb 2015
Device: Kindle Paperwhite
|
When I added The Economist epub into calibre from the github website, the author shows as Kovid Goyal attached to the epub which means that person is somehow successful in modifying an economist recipe in calibre to download the articles?
|
|
|
|
|
|
#32 |
|
Member
![]() Posts: 18
Karma: 10
Join Date: Nov 2024
Device: pc
|
Workaround for The Economist – generating EPUBs when the built‑in recipe fails
The current Calibre recipe for The Economist no longer fetches articles – it fails on the index with a 403 from CloudFront, even when trying the GraphQL fallback. After some investigation, I found that the official Android app uses a completely different GraphQL endpoint and client identification headers that are still accepted.
I’ve written a standalone Python script that successfully pulls the entire weekly edition, downloads images, and builds a clean EPUB. The script doesn’t replace the Calibre recipe, but it demonstrates a method that could be adapted back into a recipe. I’m sharing it here so the community can see the approach and, if someone is inclined, update the built‑in recipe (or just use the script directly). Key differences that make it work: 1. GraphQL endpoint Instead of the endpoint the current recipe uses, this script calls: Code:
https://cp2-graphql-gateway.p.aws.economist.com/graphql 2. Custom headers It mimics the official Economist Android app (version 4.40.0) by setting: Code:
User-Agent: TheEconomist-Liskov-android accept: multipart/mixed; deferSpec=20220824, application/json x-economist-consumer: TheEconomist-Liskov-android x-teg-client-name: Economist-Android x-teg-client-os: Android x-teg-client-version: 4.40.0 These headers bypass the CloudFront block. When GraphQL isn’t necessary or to supplement missing data, the script fetches the article page with a mobile User‑Agent (Liskov suffix) and extracts the article body from __NEXT_DATA__ or direct HTML, which also still works. 4. Robust retry / session handling The script uses a requests.Session with a retry adapter, parallel downloads for articles and images, and proper error handling – all of which improve reliability. Current limitation:
Disclaimer: This is shared for educational purposes and personal use only. It’s not intended to overload the servers or to redistribute copyrighted material. Please respect The Economist’s terms of service. |
|
|
|
| Advert | |
|
|
|
|
#33 |
|
creator of calibre
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 46,401
Karma: 29634066
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
@xkcklzn that doesnt make any sense. Your script is using the exact same graphql endpoint the recipe uses it is probably copied directly from the recipe. And looking at the code its calling scrape_economist_edition() with use_web=True which means the graphql endpoint is not being used at all. The only reason your script works is that it uses a different browser type (requests versus mechanize and different user agent) and not enough people have used it, so the anti bot protection hasnt learned to fingerprint it. You shouldnt blindly trust what AI tells you.
|
|
|
|
|
|
#34 |
|
creator of calibre
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 46,401
Karma: 29634066
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
I have changed the recipe to remove the graphql which is what was being blocked and additionally to use the android app user agent to fetch the article pages. that seems to be working for the moment, no idea how long it will survive.
|
|
|
|
|
|
#35 |
|
Resident Curmudgeon
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 84,310
Karma: 153715495
Join Date: Nov 2006
Location: Roslindale, Massachusetts
Device: Kobo Libra 2, Kobo Aura H2O, PRS-650, PRS-T1, nook STR, PW3
|
|
|
|
|
| Advert | |
|
|
|
|
#36 |
|
Guru
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 939
Karma: 15576314
Join Date: Jan 2013
Location: Ely, Cambridgeshire, UK
Device: Kindle Oasis 3, Kindle Oasis 1
|
Agreed. If you want it, buy the Economist (and then read it on your e-reader using Calibre's recipe anyway, guilt-free). It's absolutely worth the money. I for one am extremely glad that Kovid's spent so much time keeping the recipe working: it's undoubtedly the bit of Calibre that I run (automatically) most frequently, and probably the bit I'd miss most if it stopped working (since I'm weird and don't hyper-classify my books: my bookshelves are a mess too).
|
|
|
|
|
|
#37 | |
|
Connoisseur
![]() Posts: 56
Karma: 10
Join Date: Dec 2010
Location: Melbourne, Australia
Device: Kobo Clara Colour
|
Quote:
Spoiler:
This looks like the same error that I had before. So I'm not sure if I'm using the new recipe or the old one. It's my understanding that Calibre runs the latest recipe but perhaps I am wrong. Do I need to update Calibre manually to get the latest recipe? Or has it been blocked already? ![]() I wish they would provide subscribers with a Kobo/Kindle version so we didn't have to go through all of this... |
|
|
|
|
|
|
#38 |
|
Connoisseur
![]() Posts: 56
Karma: 10
Join Date: Dec 2010
Location: Melbourne, Australia
Device: Kobo Clara Colour
|
|
|
|
|
|
|
#39 |
|
Junior Member
![]() Posts: 2
Karma: 10
Join Date: Oct 2024
Device: onyx note 5
|
I'm using the latest recipe, but I still had to comment out # browser_type = 'webengine' to make it work. Could it be that Qt WebEngine has a very distinct "browser fingerprint" that makes it easily recognized and blocked by advanced anti-bot systems?
|
|
|
|
|
|
#40 |
|
creator of calibre
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Posts: 46,401
Karma: 29634066
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
no as far as I can tell its just that the anti bot systems pick up on any particular engine's fingerprint after many people use it.
|
|
|
|
![]() |
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| failed to fetch the economist | etms88 | Recipes | 3 | 12-27-2022 09:07 PM |
| Firmware Upgrade Failed! | greenapple | Ectaco jetBook | 6 | 07-06-2010 03:30 AM |
| Failed to Fetch Economist | wayner | Calibre | 10 | 12-19-2009 12:30 AM |
| Jetbook Hardware Upgrade Failed | Les Hall | Ectaco jetBook | 4 | 08-19-2009 11:28 PM |
| Upgrade to 0.4.84 failed | BrendenM | Calibre | 14 | 10-24-2008 06:25 PM |