Web Request Interceptor GUI in Python – FuzzuTech
Demo :
Click Video πππ
π️ Description:
A modern Python GUI app to intercept and block suspicious URLs using regex patterns. Great for cybersecurity awareness and ethical hacking demos. Built with tkinter and ttkbootstrap by FuzzuTech.
π Features:
-
Regex-based URL blocking
-
Request interception using
requests
-
GUI built with
tkinter + ttkbootstrap
-
Real-time header view
-
Hacker-style dark mode interface
-
Beginner friendly Python script
-
Educational cybersecurity tool
Code :
import tkinter as tk
from tkinter import ttk, messagebox
import requests
from ttkbootstrap import Style
import re
class InterceptorApp:
def __init__(self, root):
self.root = root
self.root.title("Web Request Interceptor - FuzzuTech")
self.root.geometry("600x500")
self.root.resizable(False, False)
style = Style("cyborg") # Modern dark theme
style.master = self.root
self.patterns = []
self.url_var = tk.StringVar()
self.pattern_var = tk.StringVar()
self.build_gui()
def build_gui(self):
frm = ttk.Frame(self.root, padding=20)
frm.pack(fill=tk.BOTH, expand=True)
ttk.Label(frm, text="Enter URL:").grid(row=0, column=0, sticky="w")
ttk.Entry(frm, textvariable=self.url_var, width=50).grid(row=0, column=1, columnspan=2, sticky="ew")
ttk.Button(frm, text="Send Request", command=self.send_request).grid(row=0, column=3, padx=5)
ttk.Label(frm, text="Add Block Pattern:").grid(row=1, column=0, sticky="w")
ttk.Entry(frm, textvariable=self.pattern_var, width=40).grid(row=1, column=1, sticky="ew")
ttk.Button(frm, text="Add Pattern", command=self.add_pattern).grid(row=1, column=2)
self.text = tk.Text(frm, wrap=tk.WORD, height=20, bg="#1e1e1e", fg="white", insertbackground="white")
self.text.grid(row=2, column=0, columnspan=4, pady=10)
for i in range(4):
frm.grid_columnconfigure(i, weight=1)
def add_pattern(self):
pattern = self.pattern_var.get()
if pattern:
self.patterns.append(pattern)
messagebox.showinfo("Pattern Added", f"Added pattern: {pattern}")
self.pattern_var.set("")
def send_request(self):
url = self.url_var.get().strip()
if not url:
messagebox.showerror("Error", "URL field cannot be empty.")
return
for pattern in self.patterns:
if re.search(pattern, url):
self.text.insert(tk.END, f"[BLOCKED] URL matched pattern: {pattern}\n", "block")
return
try:
response = requests.get(url)
headers = response.headers
self.text.insert(tk.END, f"\n--- Headers from {url} ---\n", "header")
for key, val in headers.items():
self.text.insert(tk.END, f"{key}: {val}\n")
self.text.insert(tk.END, "-" * 60 + "\n")
except Exception as e:
self.text.insert(tk.END, f"[ERROR] {str(e)}\n", "error")
if __name__ == "__main__":
root = tk.Tk()
app = InterceptorApp(root)
root.mainloop()
Comments
Post a Comment