Yeah, captive portals are annoying. I got so frustrated with trying to connect to Starbucks' WiFi that I ended up writing my own script [1] that would allow me to authenticate from my terminal. I even wrote about what happens behind the scenes when you connect. [2]
1: https://github.com/imwally/coffeeconnect
2: https://nil.wallyjones.com/what-happens-when-you-connect-to-...