0% found this document useful (0 votes)
772 views7 pages

HTTP Spy June 2025 - Spy On Scripts HTTP Traffic

Uploaded by

vulizminecraft20
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
772 views7 pages

HTTP Spy June 2025 - Spy On Scripts HTTP Traffic

Uploaded by

vulizminecraft20
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

--// Created by depso!

-- This is a simple Http request spy with a UI interface


-- This is designed to work on very basic level exploits such as Xeno and Solara
-- JOIN THE DISCORD SERVER: https://discord.gg/s9ngmUDWgb

local DEBUG = false

--// Libraries
local Hook = {}
local Http = {}

--// ReGui
local ReGui = loadstring(game:HttpGet('https://raw.githubusercontent.com/depthso/
Dear-ReGui/refs/heads/main/ReGui.lua'))()
local PrefabsId = `rbxassetid://{ReGui.PrefabsId}`
ReGui:Init({
Prefabs = game:GetObjects(PrefabsId)[1]
})

local HttpService = game:GetService("HttpService")

--// Globals
local GlobalENV = getgenv()
local Typeof = typeof

--// Config
local UrlIntercepts = {
["http://127.0.0.1:6463/rpc?v=1"] = {
Callback = function()
warn("Blocked discord inivite!")
return ""
end,
},
}

local function AddHooks()


Hook:AddRefernce(game, {
Globals = {"game", "Game"},
Hooks = {
["HttpGet"] = "HTTP_HOOK",
["HttpGetAsync"] = "HTTP_HOOK",
["HttpPost"] = "HTTP_HOOK",
["HttpPostAsync"] = "HTTP_HOOK"
}
})

Hook:AddRefernce(GlobalENV, {
Hooks = {
["http_request"] = "HTTP_HOOK",
["request"] = "HTTP_HOOK",
}
})

Hook:AddRefernce(http, {
Hooks = {
["request"] = "HTTP_HOOK",
}
})
Hook:AddRefernce(syn, {
Hooks = {
["request"] = "HTTP_HOOK",
}
})
end

----// Main script


type table = {
[any]: any
}

--// Create window


local Console = nil
local Paused = false

local function Log(...)


return Console:AppendText(...)
end

local Window = ReGui:Window({


Title = "Http Spy | By: Depso",
Theme = "ImGui",
Size = UDim2.new(0, 350, 0, 370),
NoScroll = true
}):Center()

--// Buttons
local ButtonsRow = Window:Row()
ButtonsRow:Button({
Text = "Clear",
Callback = function()
Console:Clear()
end
})
ButtonsRow:Button({
Text = "Copy",
Callback = function()
local Content = Console:GetValue()
toclipboard(Content)
end
})
ButtonsRow:Button({
Text = "Pause",
Callback = function(self)
Paused = not Paused

local Text = Paused and "Paused" or "Pause"


self.Text = Text

--// Update console


Console.Enabled = not Paused
end,
})
ButtonsRow:Expand()

--// Create console


Console = Window:Console({
Text = "-- Created by depso",
ReadOnly = true,
Border = false,
Fill = true,
Enabled = true,
AutoScroll = true,
RichText = true,
MaxLines = 50
})

--// HTTP detection functions


type ScanRequest = {
Url: string,
Body: (string|nil),
IsPost: boolean?,
IsTable: boolean?,
}
function Http:ScanHTTPRequest(Args: {}): ScanRequest
local Request = {}

--// Search string/table for string content


for Index: number, Arg in next, Args do
--// Log each parameter for debugging
if DEBUG then
warn(`{Index}: {Arg}`)
end

--// :HttpGet
if Typeof(Arg) == "string" then
Request.Url = Arg
if not DEBUG then break end
--// request
elseif Typeof(Arg) == "table" then
local Url = Arg.Url or Arg.url
if not Url then continue end

--// Unpack content


local Body = Arg.Body or Arg.body
Request.Url = Url
Request.Body = Body
Request.IsPost = Body and true or false
Request.IsTable = true
Request.Headers = Arg.Headers

if not DEBUG then break end


warn(`Found! {Index}: {Arg.Url}, {Arg.url}`)
end
end

return Request
end
function Http:FindIntercept(Url: string): table?
for UrlMatch, Data in next, UrlIntercepts do
if Url:match(UrlMatch) then
warn(`Matched {UrlMatch} with {Url}`)
return Data
end
end
return
end

local function HttpCallback(OldFunc, ...)


local Args = {...}

--// Scan arguments for HTTP request infomation


local Request = Http:ScanHTTPRequest(Args)
if not Request then return end

--// Unpack arguments


local IsPost = Request.IsPost
local IsTable = Request.IsTable
local Url = Request.Url
local Body = Request.Body
local Headers = Request.Headers

if not Url then


return OldFunc(...)
end

--// Log HTTP request infomation


Log("HTTP", `[{IsPost and "POST" or "GET"}]:`, Url)

--// Post request


if Body then
Log("> [Body] ", Body)
Log("> [Headers] ", HttpService:JSONEncode(Headers))
end

local Responce = nil

--// Check for URL intercepts


local Intercept = Http:FindIntercept(Url)

--// Fetch HTTP request responce


if not Intercept or Intercept.PassResponce then
Responce = OldFunc(...)
end

--// Return responce if there is no intercept


if not Intercept then return Responce end

--// Check if spoof is a function


local Spoofed = Intercept.Callback

if Typeof(Spoofed) == "function" then


if Intercept.PassResponce then
Spoofed = Spoofed(Responce, Request)
else
Spoofed = Spoofed(Request)
end
end

--// Hook table reponse type


if IsTable then
local Base = Responce or {}
return Hook:Hook(Base, {
["Body"] = Spoofed
})
end

return Spoofed
end

--// Hook service


type Hook = {
Hooks: {[string]: any},
Globals: {[number]: string}?,
}
type Hooks = {
[Instance]: Hook
}
Hook.Hooks = {}
Hook.Cache = setmetatable({}, {__mode = "k"})
Hook.Alliases = {
["HTTP_HOOK"] = HttpCallback
}

function Hook:GetHooks(): Hooks


return self.Hooks
end
function Hook:IsObject(Object: Instance?)
local Type = Typeof(Object)
--local Accepted = {"userdata", "Instance"}
--return table.find(Accepted, Type)
return Type == "Instance"
end
function Hook:GetHooksForObject(Instance): Hook
return self.Hooks[Instance]
end
function Hook:AddRefernce(Instance, Hooks: Hook)
if not Instance then return end
self.Hooks[Instance] = Hooks
end
function Hook:GetCached(Instance)
return self.Cache[Instance]
end
function Hook:AddCached(Instance, Proxy)
self.Cache[Instance] = Proxy
end
function Hook:Hook(Object: Instance, Hooks: table)
--// Cache check
local Cached = self:GetCached(Object)
if Cached then return Cached end

local Proxy = newproxy(true)


local Meta = getmetatable(Proxy)

Meta.__index = function(self, Key: string)


local Hook = Hooks[Key]

-- __index hook
if Hook then
if DEBUG then
Log("> Spoofed", Key)
end
return Hook
end
local Value = Object[Key]

-- __namecall patch
if type(Value) == "function" then
return function(self, ...)
return Value(Object, ...)
end
end

return Value
end
Meta.__newindex = function(self, Key: string, New)
Object[Key] = New
end
Meta.__tostring = function()
return tostring(Object)
end
Meta.__metatable = getmetatable(Object)

--// Cache proxy


self:AddCached(Object, Proxy)

return Proxy
end
function Hook:ApplyHooks()
local AllHooks = self:GetHooks()
local Alliases = self.Alliases

for Object, Data in next, AllHooks do


local IsObject = self:IsObject(Object)
local Hooks = Data.Hooks
local Globals = Data.Globals

--// Check table for read-only


local IsReadOnly = false
if typeof(Object) == "table" then
IsReadOnly = table.isfrozen(Object)
end

--// Set writable


if IsReadOnly then
setreadonly(Object, false)
end

--// Add hooks to object or enviroment


for Key: string, Value in next, Hooks do
local Success, OldValue = xpcall(function()
return Object[Key]
end, warn)

if not Success then continue end

if Typeof(OldValue) == "function" then


--// Patch namecall methods
if IsObject then
local OldFunc = OldValue
OldValue = function(self, ...)
return OldFunc(Object, ...)
end
end

--// Closure type patch


if iscclosure(OldValue) then
OldValue = newcclosure(OldValue)
end
end

--// Find Allias


if typeof(Value) == "string" then
local Callback = Alliases[Value]

--// Patch allias function


if Callback then
Value = function(...)
return Callback(OldValue, ...)
end
end
end

--// Apply new value


Hooks[Key] = Value

--// For others such as tables


if not IsObject then
Object[Key] = Value
end
end

-- Hook functions of a instance


if IsObject then
local Proxy = self:Hook(Object, Hooks)
if not Globals then continue end

--// Add global references to environment


for _, Global: string in next, Globals do
GlobalENV[Global] = Proxy
end

continue
end

--// Set read only


if IsReadOnly then
setreadonly(Object, true)
end
end
end

--// Init
AddHooks()
Hook:ApplyHooks()

Log("Loaded successfully!")

You might also like