I don't think it's an answer to the question, but it's a solution to the problem:
After trying to use the login
method, and then capturing a session json file and using that, and when that didn't work I signed up for a Residential Proxy service. And - I can't believe I'm saying this - it turned out that using docker was the simplest solution.
Specifically, building my script into a docker image and setting up a template on my Unraid server (running on my home network, and thus not currently blocked by Instagram) to execute via cron twice a day.