Title says it all. I have done this myself before, however don't have the time to get it up and running properly on my own. I have servers in the states for this and many other purposes. What is required is a setup that will do as follows:
Basically we are interested in proxying content only for certain geo-locked domains. The actual streaming media sits on CDNs and is usually not geo-locked. The amount of proxying we'll end up doing will be relatively insignificant compared to a VPN-based setup (where everything must be proxied). The outlined solution will typically result in significant bandwidth savings.
How this setup works
User browses to CBS homepage. Behind the scenes, this triggers the following sequence of events:
Browsing device asks for the IP address of [login to view URL] (using DNS).
If the router is not running dnsmasq, it sends the DNS query for [login to view URL] to DNS server running on the VPS.
The VPS DNS server responds with the IP address of VPS SNI Server as the authorative answer for the DNS query.
If the router is running dnsmasq, it directly sends the resolved IP address back to browsing device. Otherwise, it has to wait for DNS resolution from steps 2 and 3 (above).
Browsing device sends a request for content for www.cbs.com.
VPS SNI Server sends a request for content to www.cbs.com.
Since the VPS SNI Server has an IP presence in USA, [login to view URL] responds with proper content.
VPS SNI Server proxies the content back to the browsing device.
Since this is a subscription based service, we need to
Register user IP and whitelist it in the DNS
Non-whitelisted IP's are forwarded to the Google DNS.