// Generates the SAPISIDHASH token Google uses in the Authorization header of some API requests async function getSApiSidHash(SAPISID, origin) { function sha1(str) { return window.crypto.subtle.digest("SHA-1", new TextEncoder("utf-8").encode(str)).then(buf => { return Array.prototype.map.call(new Uint8Array(buf), x=>(('00'+x.toString(16)).slice(-2))).join(''); }); } const TIMESTAMP_MS = Date.now(); const digest = await sha1(`${TIMESTAMP_MS} ${SAPISID} ${origin}`); return `${TIMESTAMP_MS}_${digest}`; } const SAPISIDHASH = await getSApiSidHash(document.cookie.split('SAPISID=')[1].split('; ')[0], 'https://photos.google.com'); console.log(SAPISIDHASH);