To see what would happen, I attempted to access Hulu from a VPN outside the US. As I expected, Hulu detected the VPN. My understanding is that this is because Hulu is aware of the IP address ranges that belong to known VPNs. However, what caught me by surprise was Hulu's ability to display the time of the incident in my local time zone. How can this be possible? How does Hulu know in which time zone I am actually located?
By asking your browser for the current time zone offset, e.g.
var d = new Date(); console.log(d.getTimezoneOffset())
Since I'm in the US/Pacific time zone and it's currently summertime, this returns 420 (7 x 60) for me.
With a bit of additional clever code, it's possible to estimate the exact time zone, rather than just the current offset.