This is the code I'm usingand I keep getting thisCode:import requests headers = { 'accept': '*/*', 'cache-control': 'no-cache', 'sec-ch-ua': '\\" Not A;Brand\\";v=\\"99\\", \\"Chromium\\";v=\\"96\\", \\"Google Chrome\\";v=\\"96\\"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '\\"Windows\\"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'cross-site', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36', } params = ( ('CrmId', 'itvpnp'), ('AccountId', 'itvpnp'), ('ContentId', '10-0674-0003-001'), ) data = '\b\x04' response = requests.post('https://itvpnp.live.ott.irdeto.com/Widevine/getlicense', headers=headers, params=params, data=data)
Code:license response status: <Response [400]> server reports: {"code":100100,"message":"The request is invalid. Error while parsing: AccountId. Parameter not expected as an array"} server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.
+ Reply to Thread
Results 1 to 21 of 21
-
Last edited by ChemicalMisfit; 30th Dec 2021 at 15:52.
-
Thats the wrong mpd. That one won't work...
Basically there are two mpd's...
the one you postedCode:https://itvpnpdotcom.cdn1.content.itv.com/10-0674-0003-001/18/1/VAR028/10-0674-0003-001_18_1_VAR028.ism/.mpd?Policy=
and the correct oneCode:https://itvpnpdotcom.content.itv.com/10-0674-0003-001/18/1/VAR028/10-0674-0003-001_18_1_VAR028.ism/.mpd?hdnea=
the bit after the = is different for both.
It will give you one or the other. Often I get the wrong one a few times and then the correct one after a few refreshes. I don't know if there is a way of forcing the correct one each time. -
Ahh thanks even with the correct one I get: license response status: <Response [400]>
server reports: {"code":100100,"message":"The request is invalid. Error while parsing: AccountId. Parameter not expected as an array"}
server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request. -
I can only assume your headers are incorrect. What's the page of the video and I'll have a look?
-
https://www.itv.com/hub/joanna-lumleys-home-sweet-home-travels-in-my-own-land/10a0674a0003
These are the headers I get:
import requests
headers = {
'authority': 'itvpnp.live.ott.irdeto.com',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
'accept': '*/*',
'origin': 'https://www.itv.com',
'sec-fetch-site': 'cross-site',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://www.itv.com/',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,ru;q=0.6',
}
params = (
('CrmId', 'itvpnp'),
('AccountId', 'itvpnp'),
('ContentId', '10-0674-0003-001_18'),
)
data = '\b\x04'
response = requests.post('https://itvpnp.live.ott.irdeto.com/Widevine/getlicense', headers=headers, params=params, data=data)
#NB. Original query string below. It seems impossible to parse and
#reproduce query strings 100% accurately so the one below is given
#in case the reproduced version is not "correct".
# response = requests.post('https://itvpnp.live.ott.irdeto.com/Widevine/getlicense?CrmId=itvpnp&AccountId=itvpnp&ContentId =10-0674-0003-001_18', headers=headers, data=data) -
I get these headers... (and having tried them it gives me the keys)
Code:import requests headers = { 'authority': 'itvpnp.live.ott.irdeto.com', 'pragma': 'no-cache', 'cache-control': 'no-cache', 'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"', 'sec-ch-ua-mobile': '?0', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36', 'sec-ch-ua-platform': '"Windows"', 'accept': '*/*', 'origin': 'https://www.itv.com', 'sec-fetch-site': 'cross-site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'referer': 'https://www.itv.com/', 'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8', } params = ( ('CrmId', 'itvpnp'), ('AccountId', 'itvpnp'), ('ContentId', '10-0674-0003-001_18'), ) data = { '\b\x01\x12\xD6\x1F\x12A\n?\n)\b\x01\x12\x10\xB6"\x9B\xCB\xC4\xE3K\x95\x9D\0\xCC\xD9 \xED\xDBK"\x1310-0674-0003-001_18\x10\x01\x1A\x10\xFD\x8C\xCF\xD7U4\x8B\'\xFE\xCD\xBDbdb\xA5\xA9\x18\x01 \xB1\xE4\xB8\x8E\x060\x158\xC3\x97\xB8\x94\x0EB\x80\x1F\n\x14license.widevine.com\x12\x10\x17\x05\xB9\x17\xCC\x12\x04\x86\x8B\x063:/w*\x8C\x1A\xC0\x1C\x9B\x01\x80\xC4n': '\xA7\x83\xEC\xDB\xC7\xDC=9s\x8A3J\x05\xE70w\xD5!\x97\xCF\n\0|\x80\x8C\x9E\x8Eq\x8F\x8E\xC4\xA7e\xCEeG\xF3NN\xD8\x1D\x81\xFCJd8\x06\xC0h\xAE[\xFB:#Cr\xB0\x82p\x9A\xA6\x0F\x1F\xC9\xA3\f\xC1\xD2\xAE\x8D\xC0\x18\x126x\x8E\xA1k\xC5\xE3hQ\xF2K\xF7\x94\x11\xF3f\x9A\xF9\x11\x88g \x1F\x96<d\xA3\xF9sa~\xE3\x97\tX%<\xE3Vr\xBB{s\x05\x88\xBA\xB3K \x04,\x81*\x07\xBE\x91\xF4\xB3!\xC2\x9C\xB6\x93\xA6\x86\x03t\xC7^\xEF\xBA5\xD7\x13\x1E\x14\x8Ad\x97\\$j\xA2m\xFD\xCFN\xAE\xBA2\x06\xA8\xD8\xDF', '\xE1\xCF_G\xF8\xD0\xBBvc\xDD\xBCc_\'\xC9c\x066\x91\xCF\xB4\xBA\xD6\x0E\x0B\xFD\xBB\f\x91n#w{P\xFC_Sn2\xD6 \xB4\x02(\xD0Q\xCA\x0B4f8\xF8\x96)\xC72\x12\xF7/\x99m\xD1\xA2\x1F\xF5C\xD8\x85\xDDP\xE4[F\xF5C\x93qR\x1Bi_\x05i\xC8\xB4d\x9FY<\x8C?\xD4sz\x86\xE9\xC80\xAB`\xD7u\xFA\xF3\xA8\xBAz\xBBQ\xFD\xB6\xB1\xD6\x10H3x"v\xA8\x01\x98\xE7\xF2\r\xB0\x0E\x81\x16\xB8\x10{\xE7o\xA3\xD5\xCE~\x8A\r\xA4\xA1\x0EH\xBE\xB6J\xC3\x18\x13\b/gY\xEF\x03\xE3-\xDC\xCA\x19\x93\xDB\xF6\xBC\xBAV\xB6_?\x89\x91\x94\xCE {\x18\x83y\x1A\x102\xC1\x97F\x99\x15\xC1{\xAAvC>Dq~\x97\xB1E\xF1Rm\x98]\x8Aa40\x91\x07\xA1\x1B\xDFY\x073Y\x97\xA7\xC5\xAF\x1B\x8B\xCF\xDER\xA2\xE1\xA0\xA6e\x9Cj\xBD\xAE"l\fi\x14\xA3\xA6^\x06\xF5\x97\xC1|8\xF5\xF5\xCA\x87\xBB\x0E]\xB8\xB5\xC0\x05iKf\xB6:\xB0V\xA46\x8F\xF1\x04x\xAE\xBC\xB8\xB2\x89]\x9E\xE5O\x8EZ\x18\xB1[1 *\xE1\xE5j\x0F\xBC\x93D\xF8\x95\x9A@\fi\x05\x17\xE3\xD2\xFFD\xB5\xF6\xCF1\xC6\xC2\xE0\xCB\xA3Dj\xD7\x1E\xB5\xEEeP\r\xD8\xBC"\xC7\xE8%\x9E\0\0b@ \t\xC8|iW$\xE0\xF8\xD5\xEB\x04\x0EKR(?\xE2$\xD7s\xFE\xAE.\xA0\xF2~\xF2\xD6\xA5"\'R\x10\x8C\xA0\xBEY\xBC\x1E\x92w\xB9qa\x1A\x85\x88\xF3\x9A\xF5\x9B\x11\x1E\x18J6\xC5\xFD\xF6H\xCE\xEE\xC1(?\x9C\x8F\xB5\xA3 \xCDD4\x88.A\xE3\x8AC\xFD\x16\xB5\xC8\x1B\xAFa\tEf\x8DM': 'c\xBB\xE5\xE9\xFDg\x8B\x80\xEC\x9Em\xE1o\xC7\xD9X\xFCM\xFE=\xAE\xF4i#\xD7\x0BW\xFEN\xDE3\x8AA\xB9\xD4\x0B\nL\xCA\xD9o\x1E\xDE\xCE\xB3\\\x19\x88\xF0\r\x99\x99\xF5v\'~\x92\xB9\x1F\x17\xAE3', '\x12\xD4\xBE': '', '}\xF4\x96\x89\x96\xD7/l>\xA6\xAA\xD9]\x8D}Rf\x1A19C\x9B\xC7\xB8\xA03@c7\xA9-~\xF4\xAC\x196i\xE6)\x80\x0E\xCF\x809\xC2\xE0\xBC\xDB\xA7Bq\x9C3u\xC9\x16A\xB3th\x8Aj\xB8X#\xA8F\x82:H<Fn\x97\x9A_\x8A`Tx\xCA\x03\xF2\x9D\xAA\xB54\xBD\x7FF\xB8\x99\xBEe\xF5\xFCR\xD6\x84\x8E\x86\x81\xCB\f\x1EZU\xB8\xE8\xB3v\xB4\xCD\xC1\xEF\xF5\x02\xBB\x1BnJ:a\x842(\xFF%."\xD4Z\xD3\xEF\xC37\x9Ap\xFA\xA9\\\xE41aU\x04\xFC(\xF4\xD5\x0F\xAD\x1C\xB7\xB3\x9A\x1C\x8D\x81o\x1E\xE2\x809C\f\xB7a\xE5K\xF5\xAF\xA5\x9F{\x828\xBF\xA2?\x10\n\x8D\xED[\xC5\x1D\x07\xAA\x93\xB9\xB9\x93\x88\xC0\xCA\xB1\x19Y\x18\xE3\x87u\xB7\xEE{\x07\xD1\xF8\xD0o\xF8\x1DJ\xB9Z\xD4\xB0r5\x16\xCAW-\xC3\x13\xEB': 'dwSeWX\x16\x1B(\x06\xA6\xBA\xA7F^47j\xD8\xBB\xCEa\x90G\xF0\b\x11\x86\xF1\xF8\x8A\xC1\xE0<%\xC3Z~u\xDC\x839%\x86\xC1T\xDC\x99\xA2\x06\x1C\x95\xC8/\x93\x1E\x80\xD8=\xE3{(j\x0F\x9A\xA1\xFC\x16f\xA6\xEE\xFD\x07\xA1\xC4\xCA\xD3%\xB2\xFC\xD5\x99"\xF3\xE8\xD6\xB3\xA3\xC2g\xA8fMk\xE0\xC2\x93\xED\bVG\x85\xAE\x17\xBD\x9B\x8A\x01\x85\x97h\xA6\x7F\x86\x8EP1~\xE5\x9BrK\x8F\xB5H7\x11/\x13\xC4\xC4 \xFA7K\x87\x9C\xDA-]q\xD8"\xE9\xEA6V7k\xC6\x16T\x99%\xE6d\x917\x02\xAB\xA3\xDF\xB0\xA2\xC4\x8B\xC1M<\xC5\xFF\x86\xE2\x148\xD0\x0B\xB9\x12\xFA\x9B!\x11\xB5\xC6E\x1F\xE8\xDA\x1D\xDCQ\x93\xBAd\x8D\x1C\x95\xCF\xAB\xB6\xDD\xF0\x84=y\xFA\x0B\xE8-\xF03\x80\xE1u\t\xD5w\xFB\xEE\xF0\xCB,v_\xBBS\x90v\x1C\xCE\xE1\xE6\xC4\xC6\x18\xF6L;L\x92\x930\xE3\xE5\xC7\x93\xBBW\x8A\xAD\xE9\n\x84\xF3\x9E\x98?\xECfQ\x8F\xDE\x8Fm\x17t\xFB\xEB\x93\x8D\xDE\xF2\xF1\x13\x9F9P\xFB\xDA\xE1\x88\x8D\xB4\xAD\xEE\xFA\x0B\xB49\xBCq\x18Y\x8F\x11H53\f\xCA\xB8#\x01e\xAAK \xBB\xA6u\x91A\xE9C\xBE$y\xDBy\x90lX\x19v\xA9w\xBD\xB0\xFE\xE7rO @ \x82\x16B\x94*\x97\xA1)\xBF\xC1=w\xB2\x14 \x0Fr\xA5gJ\xC1\xEF\x7F\xBAr3\'\x9CA/,\x7F$_\xF8\xCF_\x93\x7F\t%*a\x01m\xC1O\xB5#\0/<*CmP\xB1\xFC\xAF\xC1*\xFAh\xF1\x96\xCD\x10\xC07g9\xD0\x0B,\xF9\x0B\xC7*XMj\x9CTS.\x03\x03\x98^Q\x8F\xE1', '\xA5vYsy\xCD\xEBg\x81BO\xB1d\x1B\x1Ef\xFDgI\xAF\xE7q.e\to\x80\xBC\xE0\xD0{\xA8\xAC\x1Des \x12\xB9\x9Ea\xEC68\xEC\x01l\xF9An\xEF\x812\xC0\xD7\xF1\x81\xF0\xD0\x9E\xDFa_\x90\xF9)\x80X/\xB6H{027{\x1E\xB8_8p\xB9\x1Ccf\xDC\xC7\x19\x03\xF5\xE7\xD6o\x97\xA7`?~\xF1\xDFw,x\x07N\b\x93\x8B\xE5\xA9e\xFB0\x85\xB9\xE95)\x88/\xE2\xF2\xC7\x10\xD8\xFCc\xB1S\x07\xD3\xA6\xC2\xC9h!\x17\x8Az\xD0\xAD\x8A?\x84\x8B.\x19}cV\xD4\x1EL}\x90\x907\x96P\b\x8A\xCAd\x9B\xC0ls[nh/ey[\x82g\xE9\xF0\xBB\xD9#;\'_\xB60w\xD6\x95^7\xAE\xD0w\xD5\x94\xA9|6\x13\xE4!\xD7': '', '\xFFnG\x8C\xDD\xE9\x96\x81\xA6\xB1(\xEC\x91\xD8(\xAC\xFE4\xB0\xBD\x11\x87': '', 'Ab\xB4:\x9BzRR\x89\xC2\xD3\xF7\xF9\x02\t\x1D?\x87\xD7d\xA4\xA3\x9B\x8D4e`A\x9F\0\xFB\xCD\x88P\xC6\xC8\xEB\xCBP\xF6(\x8Fb7\xCF\x1C\xD6L\xBD\x82\xB6pu\xC7\xEC%\x10\b6\xEEr\xD0\\:]}\xB1\x90/V\xDAl\x01]G\x8BA\xB5\x8F!\xE9\xF3 0^\x90\xA1\x9B\xC15\xFDz1x\xB0\xF8I\xC2\x05(OF\xA5\x1A\t\xA3': '\xC99\x9B\xD8yo\xBBeU?\xBE\xF5V\xA4\xC4\xE3A\xF28\xEA\x8A\xA7\xFC\x10\xEE\xA2\xCA\x07\xB3\x96\x1Fo0\xC0\xD7\x0B\xA8yL\x90\n\\b^\xD4i\xC6\xCE\xC3\x1F\xBC\f\x80f\xC0/\xCC\xF73\x17\xB2\x0B\x9C\xB3\xC75\xAE\x02\x0Fz\tA\xB5\xF6\x80T\xA4t\xB2\x7Fi9\x025\x81(k\rlk\x171\'\xA6\xF6\xB0\x87\x83\xE4I\x0F\x05Oy\xEEg\xFA\\\x15\x01\xF3\x97\x18\x8D\x8C\xC3\xF6^b\x1B\xB1>.\x04=\xF71\xE8\xA6\xCC\xBBN\xE0\x947\x16\x9B\x87\xEC\x04\x1E/\xB4u\x84{\xF8<\xA9\xF9\x16\x07QC\x0B\x1F\xD9\xDEG\x89L\x14\xCD\xEB\xE3W\x97\x19\x0Fa\xEE\xAC\xCC \xA9_\x9E\x1A\x8B\x12\x8B\x1A\xC5\xFE\\\xB9\xE8JQ\xAE\x02\xD2\xFA\xA7\xF5\xBA\xC6\0\xD2\xB0l\xBDY\xFA\xE9\x0F^\xABq\xC6\xEE\xBD7\x03\xB6\x0E\xF4\x92\xA5s\x01\x8E\xB2[\xBA\xD5\x18\xB6\x88\xE7\xDD>%/\xAB2\xEC\xDA\xF6\xFF\xC1\xEBs^\xB33ry.t\xF8\x96\xEA\xD0\'\xA6.c\xBF\x85Cn\xA1\xE4\'\xF2\xE3\xE1\xC6l,\xE4\x10\x9D\xD5\x87\x17G\xF5,\x15\x87\xF4\xD4\xA8\xAD[\x8DO\xF97\xFF\xFD\xC5\x98|\xF8', '\xA9\x16\xF0c \x93\x12h\0F\xFAq,\x85F]\xCE:\x90\x1Fq|9\x7F>n\xE0\xA7\xA5s\x03\x9C$\x89P6i\xA5\x98P>\xBFssfP\x10\xB25\xA5\0\xCE\x18\xD9\xBF\x10\xE6\xF3\xF5\x7F\r\x12\xACY\xC6\xC5\xF6/V\xBA\xE6\x1A,\xDB\xC1S@\xF0\xFC\xB1\x18\xF4\xC2ji\x9DA\xB7\xDBl!\xC8\xF5M\x81\xCD\xB3\xF1\x12bA\xF7\xD8L\x8A\x90K\x85z]\x80\x8F\x98e@\xDC\x18\xC1a\x18\x11\xAA\xDC\xDB\x96e\xCEm\x11\xA4b"\x1C\x1C\xDC\xD2\xCE\xB2\x98v\x89\xE2\xD4S^ \x8AQ': '', '\xE5\xD1\xF2\xBBg\xC8\x077\x1Ena\x99\xF2\xE3\xF0\xEBy\x8D\x10\x88': '', '\x14Q>\xFDc\xCA\xE4\x8B\x1E.\xBD\xF9P\xFB^\xAC\xCC\x07\xBD#\x18\x92\xB6\xCA\x7F\x9F\xF6C!\xA9\x000C4T9\xAA\xCDM\x16\x84\xC4R\xB9\xCD\xAA\xDD64\x1F<\xEDVAc\xA6|A\xBC\x02d\x06#\x8A': '', 'M(d{fQ\xC2\xD9Nl\xB8\x0F\xC1\xA8\x1DF\x1AI\xB6\x86\x04.l\x95\xDA\xFE\xC4h}Z\x7F\xBE\x1Cp"\xE8\xD6\b\xE3\xF2\x8C\xCD\xEE\xA1X~\x99\xA9\xD5s\x8F8y\x14\xC5\xC8\xFE\xBDy]*o,xX\xFB~\xAE\xF2\xE3\x0B\xB4\rm\x18\x99Z\x1A*\x80\xD6nC3\xE8tYl\x8C\xA3Z\xEBlo]\xF18\x91\x81\xC6\x01|W\xB9u\xD9\x02\x04H\xDE\xF8\x8D\x1C\xD7\xD8\xFC\xB4\xC0\xC1\xF4P\xDB\x8A\x8B\xE6*\xE7\xE2\xF7t\xDF\xDAK%y\x01\x07\x86\xCB\' <\x81\xFAJB}\x9C\x81y01\x8E9\x11u\xBA\x11\x9E<\xD8\xD5\xAE\xB9\x9A': '', 'tz\xFA\x89\xE1 2P\xFC\xE1\xC3\xDD\x9F\x98\xDA\xD0s!{\x1B]T\xC8\x88\x15V\x05\xF3e\f\x9E\xFE\xA5\x1E2/\x07\x8D\xCE!\xBED5\x9A\x8Dl\xC1go\xB2%2TB\xE0\xF3\xC5-\x99\xF0A\xDA\xBD\xB7\x14U\xFC\\\xBCQ\xE8\xC4\xE7\x9C\x9Ac7u\x84\xB7\xD6\xADZ\0\xE5\x8A\xD3\xFAb9\xB7\xB4\x0E\x8B\xDD\xEE\x1BA\xAC\x81\xC6\x1F\xF1\x81_\xB7\x19\xD9\xD8{@\xD9.~a2\xEFS\xCA*\x14\xD1\x97\x05\x8B\x11\xCF\x8D\xEA\x83N\xF1\xB6\xB4P\x8Ccm\xE55\xCB9c\xD0\x8E_W\x13\x86f\x1AQ\x99C\x19\xD1\x05\xC2\xA3F\x87\0I\x07{#\x9F\xB9\xF5\xC0Q\xF3K\xBA\x83\xC7\x9B\xA3\x9AO`\xBB\xE5W\xE6\x96\xFF.\x9FQs\xEAn\xBCb\xA7\xC7k\x97[1\xDA\x98\x11\xD6\xE8q\x97\xFB\x97t9\x1Bb\x16\x814\x88\xFC\xAF$/H7p"\xB7\xDA\x1FX}\xD4okdz\x03\x13<7\xCB\xC8\x16\xA7m\xEB\x0E\xB5\xC0\xBFO\x8C\x02\x80\xE6\b\x93.\x11': '', '\x8C\x8E\x9E\xC9\xC9 \x12\xCC\xD5\x7F\x9D\xA2u\xE7X}\x04k\xC4\xB7\xA4\xBE\x17?\xC3\xAC\x11L\xC9\xA0Q\x05\x15\xB5\x91\x02\xBE\xC3o\x86\xB4%R\xB3\x07>\xB1\xB2\x1B\x89\x02\x87\x87\x8DP~`\xD46R\xFE\xCCc2\x15o\xA6RB\b': '\xBB\xE9\xEB7\xF4\x94=\xB8J\x8BIWi\x04\xD2i(\xA9cG\x13"\x18\xF8\xF6\x19:\xE6\xE3\xA9z\xBC\xFA<\x88\x10 B\x90\x95\xD9\xF4\xB50\xAC9\x8F\xCF"\xA0\xBD\xCF\x9D4\xEAJ\xB1\xE5\x01x\x9D\xF3X\x91\xBC!\x85\x0F\xD3\xCEE\x1A\xAE\xBB\x1E\xC9\xFD\xC2@\x8B\xA4\xD3.!\xE35cI\x14\x83\x8A\xDC@\x9C\x03\x1A\x98H\b\xD1\xE1z\xFC\xB0\xE7B\xE0\xBEH\x15^\'\xD9Xd^\xC1v\xA5\x9C\x1E,u3\x9D\xC6\x89\xC9\xDC\xF2\xE9\xAF\xEF5a\xD9\x98?a\\\xB2$^\xC4\tf)\xBC\xE2\r\xE4(\xCC\xDF\xD9\xAF\x8B\x8As]7\xD5R\x97Q4\xB0\xDA\xA65N\x86Rez\xD8\xE5L\x9B\xCB\xC9I\xDB\xE6\xCD\x15 \xBD\xC9\x9Dg\x91\x87;Hi\xB0\xF9\xD2-\xA2\x19\x80\xFC\x1FFs\xD6\x8D9$\x02\xE9\x8A\xD5MJ\xB6\xD1\x9AQ\xC0\x12\x1E\x1EWl\xEBrk\xEC\x01\xE5U\xE9\x15\xA4\xB9\xF1{=d\xE5= \b\x155\xB2\x0E}\xEC\xF6:\x02\x8A\xAA[\xB18iL\x82\xCCqx\x9A\xC6gk9\xBE\x05\xA3\x9B\x8F\x98\xA4\xF6F\xA7\xF1\t\t\xE6\xEB\x99m\xCB\'^\xB8\x87iKb\x1ClOX\x1Cf\x12\xF1\xD0\x99\xAB\x88\x84!\x96\x1C\x07\xAC\xC0\xED\xF5\x12\xA4\xBA\xE4\xFA)\x19\x8E\xD1\x1FH\xD3\x9CI\xC1\x96\xEE|\xB5\xA9g\xBF\xDB\x03\xA5\xD7\t\xCE@\f\xDC\x8C\xAFL\x1FJO\xC3\x83\xAD?', '\xED\x7F\xBE\xF7\xB5\x8F\x80\x7F\xDF9#*\x1E\x88\xC7\xBD\xD92\xCC>a\xBC(\xB3\xEF\xF1\xFC\xF8\x0E\xEC;\xCCU\xDC\xBEEg\x8E\xD7I\x0E\x1A\x11\xA3\x8FY\x8D\xD3\xDFU\xFE\n\x04\x7F\xD9\xD8\x17\xAA\xF860\xB4f\xE9\x8A\x078\xDF\n\xA9\xE6O\xB5\xCA\xA3\x1A\x96F\xD8*\x0B\xA9\xD9\x1F\xDF\xC3\xD8#\xA5\x17*\xD2\x11\x02^\x88': '\x03\xCE\xE43\x82g\x16\x92\xE8\x1F8A\x8E:I\xC14h\x96\x07\xB3\xC1\xA4A\xF0\x1E\x99\x11\x14\xEA\x06aP\xDB`\xAA\x84\xF4\xAB\b2\xB6\t\x93\xD4\x85\xF6ROTd\x894]Z\x82\x02|\xADq\xF9\x15\xD5s\x1Bsa\xAE|\xC1)\xAFS\x0Fj\r\x1C\xB5\x92\xEB\xB3>^\xE2\xD7-;\x19\xD1\xAC\r\x15{\x0F\xE0\xF6\x87\x10<\xD5\x84u\x0E\xC5)\x81\xB0\x07\xF1\xE8\xCD \xDC\xB6\xAD1\x9E\xD0\'\xEE!\x1Cv3P1S\x9D\x84-\xCB\x9D pj\x86\x03\x05^\xB9VN\xFB]\x0FfH\x11t`\xB3\x8DY\x03\xBD\x11\x87"k\xBDu7\x1D\xBC\xC1\xD2^\xD1\x9F\xFE\xF3\xD1d|\xF7\x97`\x8Cu\xA3/\xD9!(\xFDj]%\x0B\x81B*', 'B\xB9@[[c7\xAF\xBA(\xFF\n\x8C\xFB\xFD Y\x18\x9B\x7F\xDA\xF9\f\xF1S2\x11 \x013\xC2\x1B\x19\x91o}': '', 'X\xC1.D\xFC\xDF~': 'i\xD7\x03\xA7{\xD0\xEE{1\xC1\n<\xC7\x9A\xDB\xC2\xDB\x8B\x05\xB0M\x1A\xA4\xAF\xF3J\xCC\xAF\xA1k\x9E(c\xC7\xF9\x18\xE6\xF7x\xDB\xE5\xD6\xB0m\xD8\x8A\xFD0\xFB\xB4\xE5\x06;s\xB9ND,6\xC0^\xC3\x85<A\xE9D\xEDR"\xD8*\x18Z\x05r\xD93I dD\xE6\xE2\x18\rU\xE6\xE3\x807\xA7\xF2\xEC\xA7\xB5\x97\xA6\xF7 8y\xDA~\xA6`;qe/\xF7>\xD3\xF5\xFE\x8B\xDD\xE7\xAA\x99~\xB9\x13\xAF\xE9\xAAt\x80\xFF[a\x97\xE2\x19\x94HM\xDC.\xED,\xD6\x855tq\x8B\xC8\xDAW-jg\xE7e\x82\x87\x8E\x19\xB0\x80\xE1', '\xE6\x18\x87[e\xA8\xA5\xDDl\x81\x9E"\xFB\xBD\xA2\xAA9\xD5': '', '\x86\x88\xB6\x93\xD4,\x8E\xE7$3\xA8\xCA': '\x13\xBE\xA7\xB4\xA4\x03\x9F\xA036\xC3\xB9R\xEC!\xE5\xFB\x18,\xDFN\tl\xBE\xDC\xC5l\xF3!T\xDF\xFEI\xFF\xD2a\t!\xBD\xAAD\x864\xBAwq\xA5B\xCD\xC0m\x18\xCFph[6\x8F\x1B\xBF\xA1\x9B\x14\xF4\xFD"\x10\x97\xB9\xE6w\xBC\xD01]G]\xB5\x8E\xA4\xBBvd*\x80\x02\rs\x8E\x92\x1D\r\x979-\x02n\xDF<\xA3\x19\xCF\x1F\xEA(d\x95A\xBEd\x95\xBENFJ\x95\x82`\'\x0EN\xB5W^x\xD6"\xA6D\xFA\x10\xC3\f\xE6\x7F\xD3\x05\xB6\x15\xCB7\x1C\xDFT\xE1\xCFOH\x93S\xFFa{\xF7@Hx\xF4\xA0\xC4\xDFjql\xF4\xD1\x02v\xEA\xF0I#\x17a\xE5"U\xD2J\x84\xDC (Pl\xB5\x8Axa\xDEDD}\xB9lL#\x84\x01\'$\xD9\xFA\xDC\xE5\x1ClG\xB7\x9Bs\x91\x8A\xCF\x03\xC6\t\xBBY\xAB=\x9Bm\x1FXb\xA2\xBBM\xFF\x04\xA8\xF1W!\x01\xF2Du\xF59/\x8F\xD3\x83\xCD\xFA!\x1D\xCC\xD6<\xE9\x18c\xE40\xB4M\xDD\xE5\b\f*J\xB1|=\x966\xB4\xB7\x14<\xA1\xDC\x17\b\xA9\xC5xB\x14\x86\xB5\x1DLYI\0\xDB\xB1G^\x1A\x04\x1EoG\0\xF40\xBE\xB4\xE6\xF3n\x8EGfp\x9D\xB4\xE8\xCDP\x9F\x1CX\xEBx\xD2\x11,H\x85\xD1\xE8\x94~I\x11\xFDV\xEDN\xF8@\x82\xDC\x93#\x1A\x80\x01i,@\xD04;\xF6', '\x9B\xCC\x12\xCC \x7F\xA2\x906\xED\xE6\x94\xAF\x87\xC7\xB5\0\x17\xAE\xDA\xBEc\x9Ek\xFEE\x9E\x04A\x13\xC7H\xBCZ\xC1\xFFqj\xCA\x91\xF5\'T\xDA|\x92)\x01\xB2\t2\xE0{%"\'j\x98f\xD8\xCF\x951\xE5V\xCD\xED\x01\xC3\xB1\x91\xBF$z\xF0E\x105\xA3T\xA3m\xE7\x8E\x81B\x89\xE1\x855\xD1\xA7b!\xF5\xAEb\x90\xD0o\x19J\xD7\x1C\xE6\xA6.\x13\x8A^1\x9F:\xF6e\xF9\xC7\x14\xFDcJ\x14\0\0\0\x01\0\0\0\x14\0\x05\0\x10\xE2\x8E\x0B\xC3\xA5\x8A[\x9D': '' } response = requests.post('https://itvpnp.live.ott.irdeto.com/Widevine/getlicense', headers=headers, params=params, data=data) #NB. Original query string below. It seems impossible to parse and #reproduce query strings 100% accurately so the one below is given #in case the reproduced version is not "correct". # response = requests.post('https://itvpnp.live.ott.irdeto.com/Widevine/getlicense?CrmId=itvpnp&AccountId=itvpnp&ContentId=10-0674-0003-001_18', headers=headers, data=data)
Last edited by T33V33; 30th Dec 2021 at 16:34.
-
-
WKS-Keys is what I'm using. What about the PSSH? What are you using? Where did you get it?
-
I grabbed it from here https://github.com/weapon121/WKS-KEY/releases/tag/WKS-KEY
and I'm using the EME logger to get the PSSH. -
so this PSSH then... AAAASXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACkIARIQti Kby8TjS5WdAMzZIO3bSyITMTAtMDY3NC0wMDAzLTAwMV8xOA==
-
ITV is a super simple one... As long as you use the correct headers, PSSH and lic-url it should give keys fine. From your info you are using the correct PSSH and lic-url so it must still be an error in the headers somewhere...
[Attachment 62631 - Click to enlarge] -
From Firefox, in Network tab of DevTools > right click on lic url - top one of the 2 when you Filter url for lic
Copy as curl (windows)
...paste into https://curlconverter.com/ left hand window > lang Python in right hand window
[Attachment 62633 - Click to enlarge]
Paste result into headers.py in Notepad++ Note the indents - 4 spaces - identical to mine
https://notepad-plus-plus.org/downloads/
> SAVE
Code:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0', 'Accept': '*/*', 'Accept-Language': 'en-GB,en;q=0.5', 'Referer': 'https://www.itv.com/', 'Origin': 'https://www.itv.com', 'Connection': 'keep-alive', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', }
[Attachment 62634 - Click to enlarge]
From a cmd prompt from within wks-keys folder which must include headers.py run:
l3.py
--keys
[Attachment 62632 - Click to enlarge]
If this doesn't work your cdm is revoked. I hope you have done some research / reading and know that the CDM that came with the original WKS-Keys is looooooong gone (?)Last edited by codehound; 30th Dec 2021 at 17:40.
-
Still getting the same issue
i'm honestly stuck
All I keep getting is
C:\Users\Admin\Desktop\WKS-KEYS>py l3.py
PSSH: AAAASXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACkIARIQti Kby8TjS5WdAMzZIO3bSyITMTAtMDY3NC0wMDAzLTAwMV8xOA==
License URL: https://itvpnp.live.ott.irdeto.com/Widevine/getlicense?CrmId=itvpnp&AccountId=itvpnp&C...74-0003-001_18
unable to parse license - check protobufs
or
PSSH: AAAASXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACkIARIQti Kby8TjS5WdAMzZIO3bSyITMTAtMDY3NC0wMDAzLTAwMV8xOA==
License URL: https://itvpnp.live.ott.irdeto.com/Widevine/getlicense?CrmId=itvpnp&AccountId=itvpnp&C...74-0003-001_18
license response status: <Response [400]>
server reports: {"code":100100,"message":"The request is invalid. Error while parsing: AccountId. Parameter not expected as an array"}
server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.
and these are my Headers:
Code:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0', 'Accept': '*/*', 'Accept-Language': 'en-GB,en;q=0.5', 'Accept-Encoding': 'gzip, deflate, br', 'Referer': 'https://www.itv.com/', 'Origin': 'https://www.itv.com', 'DNT': '1', 'Connection': 'keep-alive', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'TE': 'trailers', }
Last edited by ChemicalMisfit; 30th Dec 2021 at 19:27.
-
What browser are you using ?
Are you using the cdm that came with Wks-keys ?
If the answer to the secong Q is yes, then thats the issue. Revoked. -
Last edited by ChemicalMisfit; 31st Dec 2021 at 03:31.
-
Your CDM being blacklisted by ITV is entirely possible...
However, as the error message from the server clearly states, the problem is about the request parameters.
Server response:
license response status: <Response [400]>
server reports: {"code":100100,"message":"The request is invalid. Error while parsing: AccountId. Parameter not expected as an array"}
server did not issue license, make sure you have correctly pasted all the required headers in the headers.py. Also check json/raw params of POST request.
The url parameters you are sending are either completely unparsed (One whole string for all the url parameters, when it should be an object/dictionary), or are arrays containing only one string element (per parameter).
You're probably using medvm's widevine_keys. If so, the line you'd need to take a look at, and parse correctly for it to be an accepted parameter to be sent in the request, would be:
Code:params = urlparse(lic_url).query
-
Similar Threads
-
Trying (and failing) to download this show
By seanadl in forum Video Streaming DownloadingReplies: 8Last Post: 29th Nov 2021, 16:39 -
ITV streams
By djg666 in forum Video Streaming DownloadingReplies: 2Last Post: 11th Nov 2021, 11:44 -
is it possible to download videos from itv.com?
By lionstar in forum Video Streaming DownloadingReplies: 24Last Post: 16th Oct 2021, 12:25 -
problems downloading itv.com/ itv player files with tubedigger software
By elm in forum Video Streaming DownloadingReplies: 1Last Post: 4th May 2021, 04:28 -
Download subtitles from ITV.com
By Boldest06 in forum SubtitleReplies: 4Last Post: 24th Dec 2020, 08:55