10-24-2023, 10:26 PM | #31 |
Connoisseur
Posts: 72
Karma: 10
Join Date: Dec 2010
Device: Kindle Oasis
|
But with the lead story entirely missing…
|
10-24-2023, 10:28 PM | #32 |
Connoisseur
Posts: 72
Karma: 10
Join Date: Dec 2010
Device: Kindle Oasis
|
Sorry. Some stories come through correctly others return an empty item entitled “Too many requests “
|
11-20-2023, 06:27 AM | #33 |
creator of calibre
Posts: 44,569
Karma: 24495948
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
And just for posterity, this is how far I got with reversing the JS. I can extract the encrypted key and iv and encrypted data, the problem is in get_decryption_key() for some reason the wsj server isnt returning the decrupted key. The same request in a browser works, so I am guessing htere is some cookie missing or the server does some tls sniffing.
Code:
from html5_parser import parse import json from calibre import browser from mechanize import Request from urllib.parse import urlparse def extract_json_data(raw_html): from pprint import pprint pprint root = parse(raw_html) d = json.loads(root.xpath('//script[@id="__NEXT_DATA__"]')[0].text) page_props = d['props']['pageProps'] ed = page_props['encryptedDataHash'] encrypted_data = ed['content'] iv = ed['iv'] encrypted_key = page_props['encryptedDocumentKey'] url = root.xpath('//link[@rel="canonical"]')[0].get('href') return {'url': url, 'encrypted_data': encrypted_data, 'iv': iv, 'encrypted_key': encrypted_key} def get_browser_for_wsj(*a, **kw): br = browser() br.set_cookie('wsjregion', 'na,us', '.wsj.com') br.set_cookie('gdprApplies', 'false', '.wsj.com') br.set_cookie('ccpaApplies', 'false', '.wsj.com') br.set_cookie('vcdpaApplies', 'false', '.wsj.com') br.set_cookie('regulationApplies', 'gdpr%3Afalse%2Ccpra%3Afalse%2Cvcdpa%3Afalse', '.wsj.com') br.set_handle_gzip(True) br.addheaders += [ ('Accept', '*/*'), ('Accept-Language', 'en-GB,en-US;q=0.9,en;q=0.8'), ] return br def get_decryption_key(br, data, referer): from pprint import pprint pprint purl = urlparse(referer) rq = Request('https://www.wsj.com/client', headers={ 'Cache-Control': 'max-age=0', 'Referer': referer, 'X-Encrypted-Document-Key': data['encrypted_key'], 'X-Original-Host': 'www.wsj.com', 'X-Original-Referrer': '', 'X-Original-Url': purl.path, }) br.set_debug_http(True) try: res = br.open(rq) except Exception as err: if hasattr(err, 'read'): raise Exception('decryption key request failed with error: {} and body: {}'.format(err, err.read().decode('utf-8', 'replace'))) raise if res.code != 200: raise ValueError(f'decryption key request returned non OK HTTP result code: {res.code}') r = json.loads(res.read()) key = r['documentKey'] if not key: pprint(r) raise ValueError('No document key returned') def get_wsj_article(url='https://www.wsj.com/world/middle-east/u-n-world-leaders-push-to-get-gaza-aid-flowing-after-biden-pledge-3b59283b'): br = get_browser_for_wsj() res = br.open(url) raw_html = res.read() data = extract_json_data(raw_html) get_decryption_key(br, data, res.geturl()) if __name__ == '__main__': get_wsj_article() |
11-20-2023, 02:47 PM | #34 |
Fanatic
Posts: 543
Karma: 82944
Join Date: May 2021
Device: kindle
|
in get_decryption_key (line 43) try 'Referer': 'https://www.drudgereport.com/'
Was able to get documentKey successfully Last edited by unkn0wn; 11-20-2023 at 02:52 PM. |
11-21-2023, 01:24 AM | #35 |
creator of calibre
Posts: 44,569
Karma: 24495948
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
Yeah, that works but now the issue is how to decrypt using the key and iv, the obvious candidate, AES-CTR doesnt seem to work
Code:
import base64 import json from html5_parser import parse from mechanize import Request from urllib.parse import urlparse from calibre import browser def extract_json_data(raw_html): from pprint import pprint pprint root = parse(raw_html) d = json.loads(root.xpath('//script[@id="__NEXT_DATA__"]')[0].text) page_props = d['props']['pageProps'] ed = page_props['encryptedDataHash'] encrypted_data = base64.standard_b64decode(ed['content']) iv = base64.standard_b64decode(ed['iv']) encrypted_key = page_props['encryptedDocumentKey'] url = root.xpath('//link[@rel="canonical"]')[0].get('href') return {'url': url, 'encrypted_data': encrypted_data, 'iv': iv, 'encrypted_key': encrypted_key} def get_browser_for_wsj(*a, **kw): br = browser() br.set_cookie('wsjregion', 'na,us', '.wsj.com') br.set_cookie('gdprApplies', 'false', '.wsj.com') br.set_cookie('ccpaApplies', 'false', '.wsj.com') br.set_cookie('vcdpaApplies', 'false', '.wsj.com') br.set_cookie('regulationApplies', 'gdpr%3Afalse%2Ccpra%3Afalse%2Cvcdpa%3Afalse', '.wsj.com') br.set_handle_gzip(True) br.addheaders += [ ('Accept', '*/*'), ('Accept-Language', 'en-GB,en-US;q=0.9,en;q=0.8'), ] return br def get_decryption_key(br, data, referer='https://www.drudgereport.com/'): from pprint import pprint pprint purl = urlparse(referer) rq = Request('https://www.wsj.com/client', headers={ 'Cache-Control': 'max-age=0', 'Referer': referer, 'X-Encrypted-Document-Key': data['encrypted_key'], 'X-Original-Host': 'www.wsj.com', 'X-Original-Referrer': '', 'X-Original-Url': purl.path, }) br.set_debug_http(True) try: res = br.open(rq) except Exception as err: if hasattr(err, 'read'): raise Exception('decryption key request failed with error: {} and body: {}'.format(err, err.read().decode('utf-8', 'replace'))) raise if res.code != 200: raise ValueError(f'decryption key request returned non OK HTTP result code: {res.code}') r = json.loads(res.read()) key = r['documentKey'] if not key: pprint(r) raise ValueError('No document key returned') return base64.standard_b64decode(key) def decrypt_article(data): from Crypto.Cipher import AES from Crypto.Util import Counter ciphertext = data['encrypted_data'] # ciphertext += b'\0' * (16 - len(ciphertext) % 16) print(11111111, len(ciphertext), len(data['iv']), int.from_bytes(data['iv'])) counter = Counter.new(nbits=128, initial_value=int.from_bytes(data['iv'])) cipher = AES.new(data['key'], AES.MODE_CTR, counter=counter) return cipher.decrypt(ciphertext) def get_wsj_article(url='https://www.wsj.com/world/middle-east/u-n-world-leaders-push-to-get-gaza-aid-flowing-after-biden-pledge-3b59283b'): br = get_browser_for_wsj() res = br.open(url) raw_html = res.read() data = extract_json_data(raw_html) data['key'] = get_decryption_key(br, data) return decrypt_article(data) if __name__ == '__main__': data = get_wsj_article() print(data) print( b'content' in data) |
11-21-2023, 04:32 AM | #36 |
Fanatic
Posts: 543
Karma: 82944
Join Date: May 2021
Device: kindle
|
In get_decryption_key the 'X-Encrypted-Document-Key' : data[' encrypted_key'] should not be base 64 decoded. We will not get the documentKey.
I tried but the decoded output is unreadable, maybe cause it's still 64decoded. At this point I'm mostly unaware of how decryption works here. Last edited by unkn0wn; 11-21-2023 at 04:55 AM. |
11-21-2023, 06:50 AM | #37 |
creator of calibre
Posts: 44,569
Karma: 24495948
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
yeah it's not base64 decoded, as it has to be sent in a header. As I said, it remains to figure out what decryption algorithm is used, either by stepping through the JS in a debugger or reversing it. From a quick read of the JS it looks like some variant of AES with a 16 byte "iv". I tried a few of the more obvious ones like AES-256-CTR but no luck.
|
11-24-2023, 04:56 AM | #38 |
Fanatic
Posts: 543
Karma: 82944
Join Date: May 2021
Device: kindle
|
if anyones interested, try to figure out the decryption method used here
Code:
{ 'url': 'https://www.wsj.com/tech/ai/openai-leadership-hangs-in-balance-as-sam-altmans-counte-rebellion-gains-steam-47276fa8', 'encrypted_data': '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', 'iv': 'J0mre5ohZnHgK/RgHOTYhQ==', 'encrypted_key': 'TY4XXz7TLdVFkd7pXhRZfqaRLYYdtpyCFrKnKe9EXfvaCfMOPo2dP/kC6TBmdCL7/IT7leMxY05OBv9gQkGVZgqCcI7lTLscMfvhhnmCjieb/NH3qbOkwwD+c0QXYosmf2aKYhUafSozz8ngBg6Q385j9pS36+sEfW6X3vFc/X+khJ7tChceWPIcM1JU8zs99bMomN451Vbhz6vUc+1W0bCk6hJ4yX1WGRlWRbM1vd88pEBmterZN+icij1+2g==', 'key': 'bnQbZ9urHPWcAMC/RmPO/JyAXfKAGC6Jl7oqEjc1O+k=' } key is documentKey try to decrypt the encrypted_data to readable text/html. |
Tags |
calibre, wsj, wsj.com |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Saving articles from news downloads | sparks56 | Calibre | 1 | 02-17-2017 10:46 PM |
How to insert links between articles? | oecherprinte | Recipes | 3 | 11-27-2013 05:37 AM |
ReadItLater recipe only downloads 10 saved articles? | usuario74 | Recipes | 1 | 02-20-2011 05:24 PM |
calibre only downloads some articles from FT | St28 | Recipes | 0 | 01-21-2011 10:25 AM |
Sharing/saving articles in news downloads for Kindle | f1nkster | Calibre | 4 | 07-28-2010 02:53 PM |