HttpService not working

No matter where I send an HttpService request to I’m getting “Request Denied”, even if the game is a Blank Baseplate. This has been happening all day and I figured it would resolve itself by the end of the day but it hasn’t.

Repro:

local username='theguywithashortname'
local id=game.HttpService:JSONDecode(game.HttpService:GetAsync("https://api.rprxy.xyz/users/get-by-username?username="..username)).Id
print(id)

This code will work in Studio, however it will not work in-game.

Does anyone know what is wrong?

Edit: fetching the contents of google.com works, so it may just be a problem with rprxy.xyz, however that still doesn’t explain why it only works in Studio.

4 Likes

If you can get google.com, then it’s not a bug at all. Talk to the webmaster of rprxy.xyz instead of making a bug report.

1 Like

The fact that it returns everything perfectly fine in Studio and not in-game makes me feel like it’s a Roblox bug. It’s been working perfectly fine up until today, and it doesn’t seem anything on the website’s end has changed.

Recently rprxy was blacklisted from HttpService.

3 Likes

Do you know why? Are proxies against the rules now?

Nope, no clue.

You can get any players id → name or name → id ?

2 Likes

rprxy (and all subdomains) has been blacklisted on Monday since it has been evaluated as malicious by Roblox.

8 Likes

What kind of malicious? It might be helpful to know what kind of malicious service public proxy owners are known to have implemented.

5 Likes

I’d be interested in knowing what was malicious as well.

1 Like

Yep, this is happening to me too. Not sure what I will be using as an alternative in my case.

Does anyone know of other ways to have HttpService requests be sent to http://roblox.com? (if the external proxy was the only way)

1 Like

You can always set something up on your own web server for the specific thing you need.

2 Likes

Guys,
We have been investigating further on how and how often the bad actors use this url for illegitimate activities. For now, it is removed from the black list.

7 Likes

Thank you, I’m sure there’s a lot of games that use this proxy. What kind of illegitimate activities could be happening with it? It only fetches Roblox website information. If there’s something on the website that people are using for “illegitimate activities”, they could easily setup their own proxy for this activity and keep changing the domain if theirs gets blacklisted.

Hi TheGuyWithAShortName,
Thanks for your post. This is basically our thoughts too. Even if this server is used solely by bad actors, blacklisting it would not do any good since they could set a new server to do the same thing. Considering legitimate use cases for pulling Roblox data for game development/management purposes, we have removed rprxy service from blacklist.

4 Likes

The only real solution to bots is to link access to real world identification or objects. Having a limited ‘account’ cards in circulation or requiring government ID are two options. New accounts without physical verification could be robots so could be given limited access, enough to maintain the new user experience until they become physically verified. Pass it along, stop the bot pandemic.

1 Like

Remind me- I hope this isn’t a silly question- but, why do we have to use proxies to begin with?

It seems silly that we can’t make requests to Roblox in Roblox games. Proxies aren’t always scalable in high popularity games. They are also simply not reliable enough to use for any major source of income.

I feel like more of us would be free to develop interesting social features if we could make requests directly to Roblox.

Additionally, you could potentially implement it in a way that allows you to trace sources of abuse directly to the game. Preventing malicious requests and other forms of abuse.

2 Likes

I own rprxy. Let me know if there is anything I can do on my end to stop malicious requests.

9 Likes

i am dealing the same aswell

basically i made a project where i can stream my computer screen to a part using frames.

my code:

http = game:GetService("HttpService")

function GetPixels()
	local message = "request pixels"
	http:PostAsync("http://localhost:1111/test", message,Enum.HttpContentType.ApplicationUrlEncoded)
	local data = http:GetAsync("http://localhost:1111/test")
	return http:JSONDecode(data)
end

function ClearPixels()
	for index, pixel in ipairs(game.Workspace.Screen.SurfaceGui:GetChildren()) do
		if pixel.Name == "Clone" then
			pixel:Destroy()
		end
	end
end

function MakePixels()
	
	local pixels = {game.Workspace.Screen.SurfaceGui.Frame}
	
	local colors = GetPixels()
	
	local dataIndex = 1
	
	ClearPixels()
	for y = 1, 101, 1 do		
		for x = 1, 100, 1 do
			local pixel = pixels[#pixels]:Clone()

			pixel.Name = "Clone"

			pixel.Parent = game.Workspace.Screen.SurfaceGui

			pixel.Position = UDim2.new(pixel.Position.X.Scale + 0.01, 0, pixel.Position.Y.Scale, 0)

			pixel.BorderColor3 = Color3.fromRGB(tonumber(colors[dataIndex][1]), tonumber(colors[dataIndex][2]), tonumber(colors[dataIndex][3]))

			table.insert(pixels, pixel)
			dataIndex += 1
		end
		local pixel = pixels[#pixels]:Clone()
		pixel.Name = "Clone"
		pixel.Parent = game.Workspace.Screen.SurfaceGui
		pixel.Position = UDim2.new(pixels[1].Position.X.Scale, 0, pixel.Position.Y.Scale + 0.01, 0)
		pixel.BorderColor3 = Color3.fromRGB(tonumber(colors[dataIndex][1]), tonumber(colors[dataIndex][2]), tonumber(colors[dataIndex][3]))
		table.insert(pixels, pixel)
		dataIndex += 1
	end
end

while true do
	MakePixels()
end

python code:

from flask import Flask, render_template, request
import PIL
import os
import pyautogui
import time

from time import time, sleep
from numba import njit


def f():
    l = []
    for x in range(10):
        for y in range(10):
            for z in range (10):
                if (z + y + x) / 10 == x:
                    l.append(x)
        print(x)
    return l
#idc about first timing
f()

start = time()
for x in range(0):
    f()
print(f"fin after {round(time() - start,2)}sec")

def f():
    l = []
    for x in range(20):
        for y in range(10):
            for z in range (10):
                if (z + y + x) / 10 == x:
                    l.append(x)
        print(x)
    return l
#idc about first timing
f()

start = time()
for x in range(0):
    f()
print(f"fin after {round(time() - start,2)}sec")

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/test', methods=['POST', 'GET'])
def test():
    if request.method == 'GET':
        data = str(GetPixelColors())
        return data
    return render_template('index.html')

def GetPixelColors():
    colors = []
    screenshot = pyautogui.screenshot()
    screenshot.save("ss.png")
    
    img = PIL.Image.open("ss.png")
    img = img.resize((101, 102))
    img.show
    pixels = img.load()
    


    for y in range(102):
        for x in range(101):
            color = []
            color.insert(0, pixels[x, y][0])
            color.insert(1, pixels[x, y][1])
            color.insert(2, pixels[x, y][2])
            colors.insert(len(colors)-1, color)
    os.remove("ss.png")
    return colors

#print(GetPixelColors())
app.run(host='0.0.0.0',port='1111',debug=False)

appearance:

and the server client:

it uses localhost 1111

(connects to vs code python)

any solution to this?

i can give more information if u like

Seems like you are getting HTTP 999, this could be because you have invalid credentials. Here check this website out: https://http.dev/999