JavaScript¶
Inject JavaScript into a browser¶
This snippet is not as useful if the site blocks script-src in their CSP, and Tampermonkey and Greasemonkey are much better: 
const code = `
    console.log('hello');
`;
const script = document.createElement('script');
script.textContent = code;
(document.documentHead || document.documentElement).appendChild(script);
script.remove();
Monkey patching¶
Simple monkey patching, prints args and results to stdout.
Using the script above or a user script, you can monkey patch easily in the browser and in Node.
e.g. to monkey patch an async browser method:
const _get = navigator.credentials.get;
navigator.credentials.get = async function(...args) {
    // modify the arguments how you want. arguments is also set
    // on a browser, you probably want to JSON.stringify() this so it stays in history, otherwise you will lose the value
    // however logging the actual value is helpful to see object prototypes etc
    console.log('args', args, JSON.stringify(args));
    let res = await _get.apply(this, args);
    // modify the return value
    console.log('res', res, JSON.stringify(res));
    return res;
}