(Guide) Running fully featured studio using a proxy (This is currently temporarily unsupported by Roblox for security reasons!)

Hello! :smile:
I’ll be explaining how to reenable the proxy setting in studio manually. Please be advised by the warning below (you won’t miss it).

Roblox Wrapper (that isn’t actually useful for this case yet so see further sections unless you’re interested :cry:)

I plan to (at some point) add this as a feature (force enabling proxies, as well as MAYBE using a proxy with the Roblox client which will only ever come under the condition that Roblox clearly won’t see this as harmful. I doubt this will ever be the case, Fiddler was used in recent exploits) to my Roblox Wrapper project. It
is, in short, a super lightweight little tool for Windows that allows you to control when Roblox updates and launches via code and offers a few little usages for basic use. I used this for automated backups of client versions for a while, but, (I uhhh… Actually started running out of space to put backups in and then the hard drive containing said backups LITERALLY CAUGHT FIRE SHORTLY AND HAS A BURN MARK ON IT, which is an incredible feat and was caused by motherboard failure and the poor SSD receiving a hefty jolt) I want to first of all wait until Roblox properly supports proxies again to support any sort of managing through the wrapper. I haven’t fully readied my wrapper for receiving this update (I can’t atm), but, below I go into detail on reenabling proxies yourself. It’s actually super easy! (And you can likely just stick it into the wrapper code yourself if you’d like, that’s how simple it is).

Heads up: Roblox currently has studio proxy settings intentionally hidden and proxy functionality intentionally disabled due to a security bug apparently involving the start up of proxies, because of this, only use a local proxy you are hosting yourself or one you ABSOLUTELY trust. I am unaware of what this bug entails, but, by employing this you do put potentially yourself at risk to it and thus, BE SAFE.

This resource is only currently intended for those who actually need proxies to use Roblox! Other use cases may put you at risk to the above whatever it entails!

(I also don’t know if this would work the same with the player, but, its technically 100% possible using the same basic method (but it involves far different flags), but, uh, don’t try it because its EVEN MORE unsupported and may be violating ToS I’m not sure. This is to notify you that this technically exists in some form, but, no, I won’t explain how to do it unless I know its in some form safe for you to use)

Intro

I thought I’d make this post, as, I occasionally need to be able to use a proxy to use studio, such as in a school environment, or even at home sometimes depending on the device (I locally host my own proxy in python, but this works for any). This is meant to be a solution to that.

Doing it yourself

First of all, how does this actually work even though its unsupported? Well, from what I’ve uncovered, Roblox supposedly supports an environment variable (through curl I believe) called ALL_PROXY. Even with this environment variable, I couldn’t get studio to run with a proxy ever. I very much so assume this is 100% intended. Instead, I have to explicitly enable proxies by changing an FFlag which WILL allow you to use a proxy and WILL rexpose the setting to you . This is (obviously) NOT supported for the reasons above, PLEASE keep this in mind, (but is for sure allowed within ToS) by Roblox for studio (And again, I can’t emphasize this enough, please be aware of the risks as mentioned!)

Setting up your own proxy server (If you want to)

To do this, I’d really recommend just setting up a simple one with python-proxy (which is what I personally use as its quite powerful and easy to use) which allows you to have Socks5 and HTTP proxies in one, and its lightweight which suits my use case (and probably yours). It uses a command line interface, so, you don’t need to do any python programming if you dont want to, starting it can be as simple as running the pproxy command.

Using a proxy by manually reenabling support

This does enable the studio setting. Be advised of the things I said above.

  1. Find studio. You will need to do this every update if you do it manually unfortunately, but, you can do this whole bit automatically via Roblox Studio Mod Manager (Thanks for the creation of this tool CloneTrooper1019, you are awesome!). The studio folder in this case would be in %LocalAppdata%\Roblox Studio rather than %LocalAppdata%\Roblox\versions\{studio-version-identifier} and the following steps will be done by RSMM so you should use the FFlag interface.
  2. Create a folder titled “ClientSettings”
  3. Create a file named “ClientAppSettings.json”
  4. Add the following content to the file (if one exists, add the two lines below. It WILL be replaced by RSMM if you are using that, again, you should use RSMM’s UI to do this):
{
	"DFFlagHideProxySettings": "False",
	"DFFlagEnableHttpProxy": "True"
}

This firstly, unhides the proxy settings (what good is having proxy support if you can’t even use it), then it reenables proxy support.
5. When you launch studio you will still receive an authentication error unless your in-studio proxy settings are already properly configured from before it was removed. If you used this feature a while back, the proxy server you use may be accessible, and if you do not want this, only include the first line so you can remove the setting, then once you’ve removed it, readd the second line to enable it again. This is important to note.

If you’re stuck, Alt+S opens the studio settings page, thankfully, pretty much all studio shortcuts can be used at the login screen (although 99% of these are obviously, completely and entirely useless if you’re not logged in or editing a place) so this should open your settings interface unless you changed that bind… Or removed it… Uhhh… Reset your settings if you’re actually stuck at login for some reason, and next time, DON’T REMOVE THE ONLY ACTUALLY IMPORTANT BIND, AT LEAST CHANGE IT JEEZ, even with a system-wide proxy you SHOULD actually still be able to log in within studio though which should get you access but you won’t have the ability to edit places because of how studio does proxying.

Now that you’re in studio and you are ready to set up the proxy, hit Alt+S on the login screen to open settings, head to Network > Proxy Settings. You’ll want to check Enable Proxy and enter your proxy server’s address (this is NOT able to use protocols like socks5:// but socks5 proxies are supported iirc. The python proxy I use makes this info easier because it has both HTTP and Socks5/4 support built in all in one). Lastly, go ahead and click Restart, and studio should log you in perfectly fine upon launch! You’ll see something like this: (The “offline” error is quite old and is the main example of where support is still lacking, and “offline mode” has literally no effect that I know of anymore)

10 Likes

Incredible feat indeed, you’re now a legend. Don’t give up!

2 Likes

Yep, I think this has to be one of the most memorable events for me in development ever. I think its particularly funnier that this happened specifically to the laptop that was automatically backing up Roblox updates and not anything else. (This is an obvious and completely logical sign that archiving Roblox updates is simply an impossibility governed by the laws of physics, and is an explanation for why nobody decided to do this yet)

I was going to post this a lot later in the year specifically for Roblox Wrapper, but then I decided I can really just release the concept.

If anyone’s searching for Roblox archives though, there are actually legitimate builds of studio from every single year on archive.org which is super neat. I have a collection of ones I trust that’s taking up a hefty chunk of space on my drives and I even have a 2016 player I ripped from one of my old PCs including two 2016 launchers from different quarters which I used for testing various functions of Roblox Wrapper.

As for Roblox Wrapper (and I mean I suppose I’ll explain everything behind that although its not super relevant to the guide itself)
Those tests included possibly getting it to almost launch into a real game on the 2016 client. I even got it to partially connect to a server during testing and get past several stages of actually connecting if I understood the protocol correctly (obviously the protocol wasn’t compatible). I was stopped by, apparently, something to do with the 2016’s anti exploit which is now missing from the client (or in a different form?) due to it being unstable I believe. Basically a flag is set somewhere that I have no clue how to get rid of which prevents the client from even launching at all (which was intended to basically brick the client until an update iirc?). This client is actually the sole reason for Roblox Wrapper’s legacy option even existing lmao, and I mean, hey, you can technically use the 2016 client but you’d need a convoluted system to override launcher options allowing you to hence override the server IP. (It’d be very similar to the system on MC for supporting older MC clients on newer server versions except wayyyyy too complicated and pointless to maintain)

Its highly unlikely I’ll ever support that idea within Roblox Wrapper in any form due to mainly just security (a lot of the projects I would end up releasing that are potentially abusable I want to make sure would not actually be useful in any form of exploiting generally… Otherwise I’d probably get into trouble with Roblox or even if they didn’t mind, it’d still be REALLY BAD if I did a botch job). But its kind of on my list of things that are most definitely too hard for me to do right now and maintain, but technically possibilities. Roblox Wrapper is already sort of questionable for exploits because it allows you to modify launch arguments, and supporting people (or trying to support people) connecting to REAL servers from old clients would be REALLY asking for trouble from Roblox especially considering compatibility would be SO BAD there’d be no point but not even mentioning how BAD security would also be, and thus I’d be relying on a much much simpler approach that isn’t so prone to any of that…

The actual end goal I had for a release was to use a legacy client + a studio build from ideally the same month, using a very simple (but questionably within ToS at least it would be at the time those clients were actually usable) trick to force the client to connect to localhost, and a good portion of my hopes and dreams to connect to a studio local server without problems (and yeah I looked into it, that would actually theoretically be possible without intruding the client because the modern launch API actually has a mode for studio local servers sort of, so, the client would basically do everything hard for you).

1 Like

How do you log any requests that are sent through the proxy?
I’ve tried fiddler4 which does not work (not sure why)
MITM Proxy (certificate errors which persist even if I disable SSL)
pproxy (Works but I cannot find out how to log anything)

Is there any way to do this now? There no longer seems to be an EnableHttpProxy flag.