Downloads ยท 30 days
0
dotfishizy/ANTIPREDSRBX
ANTIPREDSRBX is a machine learning model from dotfishizy. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
import json import time import threading import urllib.request import urllib.error import re from transformers import pipeline
Downloads ยท 30 days
0
Access
Public
Updated Dec 24, 2025
Repo size
โ
Likes
0
Public
Click a slice to open those files.
.md8.5 KB ยท 85%
From the Hugging Face model README
import json import time import threading import urllib.request import urllib.error import re from transformers import pipeline
START_USER_ID = 1074729050 # Start scanning after your ID BATCH_SIZE = 500 MAX_BATCHES = 10
DELAY_AFTER_SUCCESS = 1 DELAY_AFTER_RATE_LIMIT = 5 BREAK_AFTER_USERS = 530 BREAK_DURATION = 15 # seconds
RAW_KEYWORDS = [ "bunny", "bunnny", "cempie", "pie", "clm", "master", "old man", "boy", "loli", "lolipop", "nertga", "nga", "nrger", "furry", "cp", "con", "comming", "cmzing", "czmming", "14yo", "endanger", "girl", "rcist", "rcst", "black", "blacked", "inch", "inches", "long", "stick", "beat it", "baby", "child", "bull", "bbc", "feet", "armpit", "big", "bbb", "bigbull", "giantess", "naughty", "BBD", "Maid", "Uwu", "Toy", "t0y", "filler", "Seed", "Asian", "butt", "abdl" ]
lock = threading.Lock() batch_next_id = [START_USER_ID + i * BATCH_SIZE for i in range(MAX_BATCHES)] batch_scanned_count = [0] * MAX_BATCHES bad_actors = [] scanned_ids = set()
MODEL_NAME = "deepseek-ai/DeepSeek-R1" # Smaller model to reduce lag classifier = pipeline("text-classification", model=MODEL_NAME)
LEET_MAP = str.maketrans({ "0": "o", "1": "i", "3": "e", "4": "a", "5": "s", "7": "t", "@": "a", "$": "s" })
def normalize(text): if not isinstance(text, str): return "" text = text.lower().translate(LEET_MAP) text = re.sub(r"[^a-z\s]", "", text) text = re.sub(r"\s+", " ", text) return text.strip()
NORMALIZED_KEYWORDS = [normalize(k) for k in RAW_KEYWORDS]
def contains_bad_keyword(text): text = normalize(text) for kw in NORMALIZED_KEYWORDS: if kw in text: return kw return None
def hf_ai_scan_bio(bio_text): if not bio_text: return None try: result = classifier(bio_text)[0] # {'label': 'LABEL', 'score': 0.95} label = result['label'] score = result['score'] if label.lower() in ["safe", "none"]: return None return f"{label} (confidence: {score:.2f})" except Exception as e: print("AI scan failed:", e) return None
def fetch_json(url): req = urllib.request.Request(url, headers={"User-Agent": "Roblox-Scanner/1.0"}) with urllib.request.urlopen(req, timeout=10) as response: return json.load(response)
def get_user_profile(user_id): return fetch_json(f"https://users.roblox.com/v1/users/{user_id}")
def get_user_favorites(user_id): try: data = fetch_json( f"https://favorites.roblox.com/v1/users/{user_id}/assets?assetType=0&limit=50" ) return [item.get("name") for item in data.get("data", []) if item.get("name")] except Exception: return []
def worker(batch_index, thread_speed=1): global scanned_ids
while True:
with lock:
start_id = batch_next_id[batch_index]
end_id = start_id + BATCH_SIZE
batch_next_id[batch_index] += BATCH_SIZE
for user_id in range(start_id, end_id):
if user_id in scanned_ids:
continue
try:
profile = get_user_profile(user_id)
favorites = get_user_favorites(user_id)
username = profile.get("name", "")
display_name = profile.get("displayName", "")
bio = profile.get("description", "")
name_hits = []
bio_hits = []
# Check username & display name
for field in (username, display_name):
kw = contains_bad_keyword(field)
if kw:
name_hits.append(kw)
# AI scan bio
if bio:
ai_result = hf_ai_scan_bio(bio)
if ai_result:
bio_hits.append(ai_result)
# Check favorites
if favorites:
for fav in favorites:
kw = contains_bad_keyword(fav)
if kw:
name_hits.append(kw)
# Mark bad actors
with lock:
scanned_ids.add(user_id)
batch_scanned_count[batch_index] += 1
if name_hits or bio_hits:
bad_actors.append({
"user_id": user_id,
"username": username,
"display_name": display_name,
"name_matches": sorted(set(name_hits)),
"bio_matches": sorted(set(bio_hits)),
})
# Break every BREAK_AFTER_USERS
if batch_scanned_count[batch_index] % BREAK_AFTER_USERS == 0:
time.sleep(BREAK_DURATION)
# Delay based on thread speed
time.sleep(DELAY_AFTER_SUCCESS / thread_speed)
except urllib.error.HTTPError as e:
if e.code == 404:
continue
elif e.code == 429:
time.sleep(DELAY_AFTER_RATE_LIMIT)
else:
continue
except Exception:
continue
def console_listener(): """ Commands: .show -> Show flagged users (red) .ashow -> Show flagged users (blue) .finish -> Stop scanning & show all flagged users .ait -> Show AI thought process .showids -> Show Roblox IDs of flagged users .thread X -> Set scanning speed (1-10) .help / !help -> Show commands """ global DELAY_AFTER_SUCCESS
while True:
cmd = input().strip().lower()
with lock:
if cmd == ".show":
print("\n=== FLAGGED USERS (RED) ===")
for actor in bad_actors:
print(f"{actor['username']} | Names: {actor['name_matches']} | Bio: {actor['bio_matches']}")
elif cmd == ".ashow":
print("\n=== FLAGGED USERS (BLUE) ===")
for actor in bad_actors:
print(f"{actor['username']} | Names: {actor['name_matches']} | Bio: {actor['bio_matches']}")
elif cmd == ".finish":
print("\n=== FINAL FLAGGED LIST ===")
for actor in bad_actors:
print(f"{actor['username']} | Names: {actor['name_matches']} | Bio: {actor['bio_matches']}")
print("Stopping scanner...")
exit(0)
elif cmd == ".ait":
print("\n=== AI THOUGHT PROCESS ===")
for actor in bad_actors:
if actor['bio_matches']:
print(f"||//||\\|| AI THOUGHT ON: {actor['username']} -> {actor['bio_matches']}")
elif cmd == ".showids":
print("\n=== FLAGGED USER IDs ===")
for actor in bad_actors:
print(actor['user_id'])
elif cmd.startswith(".thread"):
parts = cmd.split()
if len(parts) == 2 and parts[1].isdigit():
speed = min(max(int(parts[1]), 1), 10)
DELAY_AFTER_SUCCESS = 1 / speed
print(f"Thread speed set to {speed}")
elif cmd in [".help", "!help"]:
print(console_listener.__doc__)
else:
print("Unknown command. Type .help for commands.")
def main(): # Start console listener threading.Thread(target=console_listener, daemon=True).start()
# Start worker threads
for i in range(MAX_BATCHES):
threading.Thread(target=worker, args=(i,), daemon=True).start()
while True:
time.sleep(10)
if name == "main": main()