How to override fetch in javascript to intercept it

Posted on November 20, 2023

This is an handy script to override fetch and perform some manipulation before the network request starts:

const { fetch: originalFetch } = window;
window.fetch = async (...args) => {
    let [resource, config ] = args;

    if(resource == '/some/route') resource = 'https://www.othercontent.com';

    const response = await originalFetch(resource, config);

    return response
}

The above code is not very useful if you have full control of the server, thus, it is when you need to manipulate a website you don't control at server level, (hint: scraping).