Seriously, ssh -D is your friend:
Specifies a local ``dynamic'' application-level port forwarding.
This works by allocating a socket to listen to port on the local
side, and whenever a connection is made to this port, the connec-
tion is forwarded over the secure channel, and the application
protocol is then used to determine where to connect to from the
remote machine. Currently the SOCKS4 and SOCKS5 protocols are
supported, and ssh will act as a SOCKS server. Only root can
forward privileged ports. Dynamic port forwardings can also be
specified in the configuration file.
My prior job required me to travel to China for a few weeks every 2-3 months & I found it invaluable. Fire it open on the command line, and set your browser to use that local port as a SOCKS proxy.
(Note, however, this will not help you deal with shitty bandwidth to sites outside china. On that front, you're pretty much just fucked until you leave China. Even "off hours" don't help that much.)