
SrutalBeggs
discord got locked - will make new1 soon
★★★
- Joined
- Jan 28, 2025
- Posts
- 1,786
So I got access to the sewERs the othER day, and I had the "genius" idea of botting it to rack up post counts.
AftER wasting an entire aftERnoon writing fucking about with devtools to see how posting works and then turning evERything into a nice python script. I ran the script for a few hours and it worked fine. Until I got pERmabanned jfl. Brutal how I just wasted hours of my life. It was even more brutal since my Discord account also got fucked that day. Luckily I was unbanned later from here anyway. Idk what to do about my discord account tho
Anyway hERe's the script if you wanna see it. Sharing it because I don't want the whole thing to go to waste by just sitting in my hard drive doing nothing.
Don't use it hERe obviously, apparently you will be pERmabanned. With some modifications you could pERhaps get this to run in othER forums if they use similar software, so thERe's a usecase for it.
AftER wasting an entire aftERnoon writing fucking about with devtools to see how posting works and then turning evERything into a nice python script. I ran the script for a few hours and it worked fine. Until I got pERmabanned jfl. Brutal how I just wasted hours of my life. It was even more brutal since my Discord account also got fucked that day. Luckily I was unbanned later from here anyway. Idk what to do about my discord account tho
Anyway hERe's the script if you wanna see it. Sharing it because I don't want the whole thing to go to waste by just sitting in my hard drive doing nothing.
Don't use it hERe obviously, apparently you will be pERmabanned. With some modifications you could pERhaps get this to run in othER forums if they use similar software, so thERe's a usecase for it.
Python:
import os
import time
import random
import requests
cookie: dict[str, str]= {
"xf_csrf": "",
"xf_user": "",
"xf_session": ""
}
header: dict[str, str] = {
"User-Agent": "PostMaxxinator/v1.0/SrutalBeggs",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "no-cors",
"Sec-Fetch-Site": "same-origin",
"Content-Type": "multipart/form-data; boundary=---------------------------PHULLSAPP0RTSAAR",
"Priority": "u=0",
}
messages: list[str] = []
messageBodyTemplate: str = \
"""-----------------------------PHULLSAPP0RTSAAR
Content-Disposition: form-data; name="message_html"
<p>{}</p>
<hr>
<p style="color:#7FFF00;font-family:courier new;text-align:center;font-size:11px"><em>Message <font color="cyan"><b>#{}</b></font> brought to you by SrutalBeggs PostMaxxinator v1.0</em></p>
-----------------------------PHULLSAPP0RTSAAR
Content-Disposition: form-data; name="_xfResponseType"
json
-----------------------------PHULLSAPP0RTSAAR--"""
def main() -> None:
print("PostMaxxinator v1.0 by SrutalBeggs (dc: @beggs_srutal.is)\n\n")
# init, check if first run
firstRun: bool = False
if (not os.path.exists("cookies.is")):
print("cookies.is file does not exist yet, creating...")
open("cookies.is", "x").close()
firstRun = True
if (not os.path.exists("./messages/")):
print("Messages folder does not exist yet, creating...")
os.mkdir("messages")
firstRun = True
if (firstRun):
print("\n\nSeems like its your first time using this tool")
print("\nTo get your cookie, open up Developer Tools > Network, then post something")
print("After you post something, you should see a POST request with title add-reply")
print("Click on that and look at the request headers, you should find something called 'Cookie: '")
print("Beside that is your cookie, it should look something like this:")
print("xf_csrf=XXX; xf_user=XXX; xf_session=XXX")
print("Open cookies.is using notepad and copypaste. Obviously DON'T SHARE THIS WITH ANYONE!!!")
print("\nTo add messages, go to the /messages/ folder and create text files of your messages")
print("You can name the files anything, just ensure they are text files (MUST END WITH EXTENSION .txt)")
return
# get cookies
cookieStr: str = open("cookies.is", "r").readline()
splitCookies: list[str] = cookieStr.split("; ")
if (len(splitCookies) != 3):
raise Exception("Invalid input in cookies.is file! (Arguments not equal 3)")
for cookieType in splitCookies:
unknownCookie = cookieType.split("=")
match unknownCookie[0]:
case "xf_csrf":
cookie["xf_csrf"] = unknownCookie[1]
case "xf_user":
cookie["xf_user"] = unknownCookie[1]
case "xf_session":
cookie["xf_session"] = unknownCookie[1]
case _:
raise Exception(f"Invalid input in cookies.is file! Unknown cookie: {unknownCookie}")
# get messages
for fileName in os.listdir("./messages/"):
if (fileName[-4:] == ".txt"):
messages.append(open(f"./messages/{fileName}", "r", encoding='utf-8').read())
if (len(messages) == 0):
raise Exception("No messages found in /messages/ directory. Ensure files are stored as .txt files if files already exist")
# ask some questions
threadUrl: str = input("Enter thread url: ")
cooldown: float = float(input("Enter cooldown time. Note that forum ratelimit is 10s: "))
shouldRetry: bool = input("Should the script try again if it encounters errors while posting? (y/n): ") == 'y'
print("Ok. Press ctrl + c to terminate the script.\n")
ctr: int = 1
while (True):
message: str = random.choice(messages)
print(f"Sending message {ctr}:\n{message}\n")
requestBody: str = messageBodyTemplate.format(
message,
ctr
)
# attempt post
postSuccess: bool = False
while (not postSuccess):
response: requests.Response = requests.post(
url = f'{threadUrl}/add-reply',
cookies = cookie,
headers = header,
data = requestBody
)
respJson = response.json()
status: str = respJson["status"]
if (status == "ok"):
postSuccess = True
print("Message succesfully posted with status 'ok'")
time.sleep(cooldown) # sleep with default cooldown
else: # errors
if (status == "error"):
errorsList: list[str] = respJson["errors"]
err1: str = errorsList[0]
if (len(errorsList) == 1 and err1.startswith("You must wait at least ")): # we hit the rate limit
rateLimitResp: float = float(err1.split("You must wait at least ")[1].split(" seconds before performing this action.")[0])
print(f"Rate limit reached; Must wait for {rateLimitResp}s")
time.sleep(rateLimitResp)
else:
print("WARN: Post returned an error")
print(respJson["errors"])
else:
print("Something unforeseen has happened.")
print(respJson)
if (not shouldRetry):
print("Error has occured, exiting...")
return
ctr+=1
if (__name__=="__main__"): main()
Once again, don't botmaxx hERe. But if you insist on getting fucked in the ass by jannies, hERe's how saar:
Ensure you have python, obviously, and have
> Copy all the code and paste into a python script (.py). For neetness, place it in its own foldER
> Run the code once. The directory of your foldER should look like this now:
> Open up devtools (CTRL + SHFT + I in firefox, dunno about (((chrome)))))
> Open networks tab
> Post something on the forum
> You should see a POST request with title
> Click that and look at the request headERs, you should find something called 'Cookie:...'
> Beside that is your cookie, it should look something like this:
> Don't share this with anyone, you are handing them access to your account
> Open cookies.is using notepad copypaste that string
> To add messages to postmaxx with, open up the
* You can name the files anything, as long as the extension ends with
* To use formatting, you can use basic HTML
> Run the script, follow the instructions
> PERmabanned
Ensure you have python, obviously, and have
requests
installed.> Copy all the code and paste into a python script (.py). For neetness, place it in its own foldER
> Run the code once. The directory of your foldER should look like this now:
Code:
PostMaxxinator
│ script.py
│ cookies.is
└───messages
> Open networks tab
> Post something on the forum
> You should see a POST request with title
add-reply
> Click that and look at the request headERs, you should find something called 'Cookie:...'
> Beside that is your cookie, it should look something like this:
xf_csrf=XXX; xf_user=XXX; xf_session=XXX
> Don't share this with anyone, you are handing them access to your account
> Open cookies.is using notepad copypaste that string
> To add messages to postmaxx with, open up the
./messages/
directory and make textfiles of your messages* You can name the files anything, as long as the extension ends with
.txt
* To use formatting, you can use basic HTML
> Run the script, follow the instructions
> PERmabanned