[Networking] TexasState:
If you're like me, then you have a data plan with T-Mobile that includes only 2.5GB of data for tethering. After you 2.5GB is up,T-Mobile begins redirecting all of your tethered traffic to a webpage prompting you to buy more tethering data.

T-Mobile does this by reading all of the headers on every HTTP request. It analyzes each one and reads the User-Agent string. This is what tells websites how to deliver their content for you and is why you only get mobile versions of webpages on your phone and not on your laptop. So, many people got around this by spoofing the user agent with a browser plugin to make it look like your laptop was requesting the mobile version of websites (so T-Mobile would think that it's a phone requesting the data, not a tethered laptop.) However this solution only works for that specific browser. Other browsers, applications, and devices that do not support User-Agent spoofing were left without a solution. Was I really the only one trying to tether my PS3 for Netflix and gaming?

So some people turned to VPNs which basically act as a secure proxy so that T-Mobile could not read the traffic and tell what the User-Agent was. But this often costs money and/or slows down your network speed. Seeing as how people who are looking for a tether workaround are trying to not spend money, and are trying to use T-Mobile's lightning fast LTE, this isn't really a practical solution.

So after spending hours and hours looking for a solution, I came to the conclusion that there was none yet.

I deduced that the obvious solution would be to modify the packets on the fly and change the user-agent string of every HTTP request as it came to the phone before forwarding it on to T-Mobile. Luckily for us, all HTTP requests that have no User-Agent string or a string of "null/null" etc. are automatically accepted! So all that needed to be done was to strip the user-agent string of all of the outgoing HTTP requests - on the fly.

My first thought was that hopefully there was an android app that could do this.

There isn't.

And I am not capable of making one but if you find one or can make one, please tell me and I will adjust this explanation because that would make things a bit simpler. However, since we don't live in a perfect world, we have to run a program on a computer and route all traffic through that program. This wonderful little program that I came across called "Fiddler" (it won't let me post the link but it's www[dot]fiddler2[dot]com) is just what we need. It's a completely free program.

Go download and install fiddler. This program will allow us to monitor and 'fiddle' with the network traffic on the fly!

First, fire up your tethering app on your phone and connect your computer. I personally use android WiFi tether but I suppose it probably doesn't matter which one you use. Once you've connected your computer. Open up fiddler, go to "Rules," "User-Agents," and select "Custom..." A window will pop up. Leave this blank and click okay. Now, all of the network traffic from that computer with have its user-agent string modified to "User-Agent:[blank]" Test this out on any browser on your computer and you should not be redirected to the upsell page.

Now for all of your other devices! I was particularly concerned with my PS3 but any device that supports proxy use will work. That's a hell of a lot more devices than the number that support UA spoofing haha. Go to "Connection Settings" on your PS3 and select "Manual"

Go through your setup as usual and connect to your phone's wifi hotspot. When you come to the page that says "Proxy Settings" select "Use"

For the IP address go back to your computer and look at Fiddler. In the top-right corner there is an image of two computers and it says "Online" next to it. Hover over that icon and it will have an IP address listed. This is the virtual proxy that Fiddler has set up for auxillary incoming traffic on the local network. Type that IP address into the PS3's proxy settings and use port 8888 (you may have to configure your computer firewall to allow incoming traffic on that address/port)

Also, in Fiddler go to the AutoResponder tab and check the box that says "Unmatched requests passthrough." This is so that HTTP requests that come in without a User-agent already defined will just be passed on. If this box is not checked you may get frequent 404 errors.

Finish up the connection settings on the PS3 and let it fly! You can watch the traffic on Fiddler in real time!

This is my first post on XDA and this workaround is brand new as far as I can tell so there may be some kinks that need to be worked out.

Let me know if you have any questions or problems!

Respectfully,

Hunter.