[πŸ”Ž] HTTP(S) Spy
Key RequiredUniversal

[πŸ”Ž] HTTP(S) Spy

Universal Scriptgarfieldcattogarfieldcatto 9.1K views 17 executesUpdated Jan 4, 2022
5.0/ 5(8 votes)
80100% Positive
Lua Scriptβ€’121 lines (4250 chars)
--[[
    HttpSpy v1.0.4
]]

assert(syn, "Unsupported exploit");

local version = "v1.0.4";
local logname = string.format("HttpSpy/logs/%s-log.txt", os.date("%d_%m_%y")); -- americans malding rn
local serializerpath = string.format("HttpSpy/serializer-%s.lua", version);

if not isfolder("HttpSpy") then makefolder("HttpSpy") end;
if not isfolder("HttpSpy/logs") then makefolder("HttpSpy/logs") end;
if not isfile(logname) then writefile(logname, "") end;
if not isfile(serializerpath) then writefile(serializerpath, game:HttpGet("https://raw.githubusercontent.com/NotDSF/leopard/main/rbx/leopard-syn.lua")); end;

local Serializer = loadstring(readfile(serializerpath))()
local pconsole = rconsoleprint;
local format = string.format;
local gsub = string.gsub;
local append = appendfile;
local methods = {
    HttpGet = true,
    HttpGetAsync = true,
    GetObjects = true,
    HttpPost = true,
    HttpPostAsync = true
}

local function printf(...) 
    append(logname, gsub(format(...), "%\27%[%d+m", ""));
    return pconsole(format(...));
end;

local __namecall, __request;
__namecall = hookmetamethod(game, "__namecall", newcclosure(function(self, ...)
    local method = getnamecallmethod();

    if methods[method] then
        printf("game:%s(%s)\n", method, Serializer.FormatArguments(...));
    end;

    return __namecall(self, ...);
end));

__request = hookfunction(syn.request, newcclosure(function(req) 
    local BE = Instance.new("BindableEvent");
    coroutine.wrap(function() 
        local ResponseData = __request(req);
        local BackupData = {};

        for i,v in pairs(ResponseData) do
            BackupData[i] = v;
        end;

        if BackupData.Headers["Content-Type"] == "application/json" then
            local body = BackupData.Body;
            local ok, res = pcall(game.HttpService.JSONDecode, game.HttpService, body);
            
            if ok then
                BackupData.Body = res;
            end;
        end;

        printf("syn.request(%s)\n\nResponse Data: %s\n", Serializer.Serialize(req), Serializer.Serialize(BackupData));
        BE.Fire(BE, ResponseData);
    end)();
    return BE.Event:Wait();
end));

if messagebox("The websocket spy can be easily detected, are you sure you want to use it?", "Alert", 1) == 1 then
    local id = 1;
    __websocket = hookfunction(syn.websocket.connect, function(url) 
        local BE = Instance.new("BindableEvent");
        coroutine.wrap(function() 
            local WebsocketId = "WS_" .. id;
            local WebSocket = __websocket(url);
            local mt = getrawmetatable(WebSocket);
            local __send, __close = WebSocket.Send, WebSocket.Close;
    
            printf("local %s = syn.websocket.connect(%s)\n", WebsocketId, Serializer.FormatArguments(url));
            
            mt.__newindex = function(self, ...) 
                return rawset(self, ...);
            end;
    
            WebSocket.Send = function(self, message) 
                __send(self, message);
                printf("%s:Send(%s)\n", WebsocketId, Serializer.FormatArguments(message));
            end;
    
            WebSocket.Close = function(self) 
                __close(self);
                printf("%s:Close()\n", WebsocketId);
            end;
    
            WebSocket.OnMessage:Connect(function(message) 
                printf("%s recieved message: %s\n", WebsocketId, Serializer.FormatArguments(message));
            end);
    
            WebSocket.OnClose:Connect(function()
                printf("%s closed!\n", WebsocketId);
            end);

            BE.Fire(BE, WebSocket);
        end)();
        id = id + 1;
        return BE.Event:Wait();
    end);
end;

local RecentCommit = game.HttpService:JSONDecode(game.HttpGet(game, "https://api.github.com/repos/NotDSF/HttpSpy/commits?per_page=1&path=init.lua"))[1].commit.message;

for method in pairs(methods) do
    local b;
    b = hookfunction(game[method], newcclosure(function(self, ...) 
        printf("game.%s(game, %s)\n", method, Serializer.FormatArguments(...));
        return b(self, ...);
    end));
end;

pconsole(format("HttpSpy %s\nCreated by dsf#2711\nChange Logs:\n\t%s\nLogs are automatically being saved to: %s\n\n", version, RecentCommit, logname))

Features & Information

⚠️ This wasn't made by me! This was made by dsf#2711. βœ… HTTP(S) Request reconstructing βœ… Syntax Highlighting βœ… Lightweight βœ… Supports Synapse X and Shitware βœ… Auto JSON decoding βœ… Easy to use - Execute and use
#HTTP Spy#Universal

Community Comments (1)

TheDeobfuscatorTheDeobfuscatorJul 8, 2026

bad doesnt work

More Scripts for Universal Scripts