diff --git a/Script/Darkweb-Scrapping/index.html b/Script/Darkweb-Scrapping/index.html
new file mode 100644
index 0000000..da60143
--- /dev/null
+++ b/Script/Darkweb-Scrapping/index.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+Jieyab Example Darkweb Onion Site Directory Scrapper
+
+
+
+
+
+
+
Jieyab Example Darkweb Onion Site Directory Scrapper
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Script/Darkweb-Scrapping/onion-site-directory-scrapper.py b/Script/Darkweb-Scrapping/onion-site-directory-scrapper.py
new file mode 100644
index 0000000..ad788c3
--- /dev/null
+++ b/Script/Darkweb-Scrapping/onion-site-directory-scrapper.py
@@ -0,0 +1,226 @@
+#!/usr/bin/env python3
+import time
+import json
+import requests
+import signal
+from bs4 import BeautifulSoup
+from urllib.parse import urlparse
+from pathlib import Path
+from datetime import datetime
+
+BASE_DIR = Path(__file__).resolve().parent
+
+OUTPUT_FILE = (BASE_DIR / "output.json").resolve() # Conf w your path!
+
+INTERVAL = 60 * 60 # 1 hour for scrapper and daemon
+RUNNING = True
+
+# =========================
+# SIGNAL HANDLER
+# =========================
+def shutdown(signum, frame):
+ global RUNNING
+ RUNNING = False
+
+signal.signal(signal.SIGINT, shutdown)
+signal.signal(signal.SIGTERM, shutdown)
+
+# =========================
+# HELPERS
+# =========================
+def now():
+ return datetime.now(UTC).isoformat()
+
+def onion_domain(url):
+ try:
+ return urlparse(url).netloc.lower()
+ except:
+ return None
+
+def normalize_onion(url):
+ try:
+ p = urlparse(url)
+ if ".onion" not in p.netloc:
+ return None
+ return f"{p.scheme}://{p.netloc}/"
+ except:
+ return None
+
+# =========================
+# LOAD / SAVE INDEX
+# =========================
+def load_index():
+ if OUTPUT_FILE.exists():
+ return json.loads(OUTPUT_FILE.read_text(encoding="utf-8"))
+ return []
+
+def save_index(data):
+ OUTPUT_FILE.parent.mkdir(parents=True, exist_ok=True)
+ OUTPUT_FILE.write_text(
+ json.dumps(data, ensure_ascii=False, indent=2),
+ encoding="utf-8"
+ )
+
+# =========================
+# TOR SESSION AND CONF
+# =========================
+def tor_session():
+ for port in (9150, 9050):
+ try:
+ s = requests.Session()
+ s.proxies = {
+ # Windows
+ # "http": f"socks5h://127.0.0.1:{port}",
+ # "https": f"socks5h://127.0.0.1:{port}",
+ # Linux
+ "http": f"socks4://127.0.0.1:{port}",
+ "https": f"socks4://127.0.0.1:{port}",
+ }
+ s.headers["User-Agent"] = "Mozilla/5.0 (Tor; OnionDirectoryIndexer)"
+ s.get("http://check.torproject.org", timeout=10)
+ return s
+ except:
+ continue
+ raise RuntimeError("Tor not available")
+
+# =========================
+# EXTRACTOR
+# =========================
+def extract_onions(html, source):
+ soup = BeautifulSoup(html, "html.parser")
+ results = []
+
+ for a in soup.find_all("a", href=True):
+ href = a["href"]
+ if ".onion" not in href:
+ continue
+
+ url = normalize_onion(href)
+ if not url:
+ continue
+
+ results.append({
+ "title": a.get_text(strip=True)[:120],
+ "link": url,
+ "source": source
+ })
+
+ return results
+
+# =========================
+# SAFE DIRECTORY SOURCES
+# =========================
+COLLECTORS = {
+
+ # ======================================
+ # ADDED THE ONION LIST DIRECTORY SITE
+ # ======================================
+
+ # === CORE DARKWEB DIRECTORIES (WAJIB) ===
+ "dark.fail": "https://dark.fail/",
+ "ahmia": "https://ahmia.fi/",
+ "onionlinks": "https://onionlinks.com/",
+ "tordex": "https://www.tordex.app/",
+
+ # Onion / Tor
+ "torch66": "http://tor66sewebgixwhcqfnp5inzp5x5uohhdy3kvtnyfxc2e5mxiuh34iid.onion/",
+ "deepweblinks": "http://darkwev6xtagl7742tqu24v2j4namr5ocfsfpha74a5nh4bwyp27a3ad.onion/",
+ "onionland-search": "http://3bbad7fauom4d6sgppalyqddsqbf5u5p56b5k5uk2zxsy3d6ey2jobad.onion/",
+ "torlinks": "http://torlinksge6enmcyyuxjpjkoouw4oorgdgeo7ftnq3zodj7g2zxi3kyd.onion/",
+ "deep-search": "http://search7tdrcvri22rieiwgi5g46qnwsesvnubqav2xakhezv4hjzkkad.onion/",
+ "excavator": "http://2fd6cemt4gmccflhm6imvdfvli3nf7zn6rfrwpsy7uhxrgbypvwf5fad.onion/",
+ "darksearch": "http://darkzqtmbdeauwq5mzcmgeeuhet42fhfjj4p5wbak3ofx2yqgecoeqyd.onion/",
+ "torwatch": "http://xq5hcm32m7ipdqt2ydqj6cc7lpj3lw3iwqnxiak2juynysoevjmancad.onion/",
+ "duckduckgo": "https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/",
+ "danex": "http://danexio627wiswvlpt6ejyhpxl5gla5nt2tgvgm2apj2ofrgm44vbeyd.onion/",
+ "grams": "http://grams64rarzrk7rzdaz2fpb7lehcyi7zrrf5kd6w2uoamp7jw2aq6vyd.onion/",
+ "torgle": "http://iy3544gmoeclh5de6gez2256v6pjh4omhpqdh2wpeeppjtvqmjhkfwad.onion/",
+ "tordex": "http://tordexu73joywapk2txdr54jed4imqledpcvcuf75qsas2gwdgksvnyd.onion/",
+ "freshonion": "http://freshonifyfe4rmuh6qwpsexfhdrww7wnt5qmkoertwxmcuvm4woo4ad.onion/",
+ "Logen.int": "http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/",
+ "Logen.int": "http://3fzh7yuupdfyjhwt3ugzqqof6ulbcl27ecev33knxe3u7goi3vfn2qqd.onion",
+ "Logen.int": "http://uquroyobsaquslaunwkz6bmc3wutpzvwe7mv62xeq64645a57bugnsyd.onion",
+ "Logen.int": "http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega",
+ "Hidden Wiki blog": "http://darkwebp7lyr44rpgqdtevalty2pk5oqmc6m2cnicnix7itelt3lp3id.onion/",
+ "Onionx": "http://onionxpwovutq7bfv54ees3sfhcj32euy4bd555vvc4aufemxhkzvoyd.onion",
+ "Darksearch": "http://darkzqtmbdeauwq5mzcmgeeuhet42fhfjj4p5wbak3ofx2yqgecoeqyd.onion",
+ "OnionFind": "http://ofinde3b67voi7xiq3qflof2mwriwngicd7glwvf3bclgdgcjfozlzqd.onion/",
+ "SearchXNG": "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion/",
+ "4GET": "http://4getwebfrq5zr4sxugk6htxvawqehxtdgjrbcn2oslllcol2vepa23yd.onion",
+ "DeepLink": "http://deepxfmkjlils3vd7bru5rrxy3x3lchjgmv3wsgycjfynktmuwgm64qd.onion",
+ "breaking bad forums" : "http://bbzzzsvqcrqtki6umym6itiixfhni37ybtt7mkbjyxn2pgllzxf2qgyd.onion",
+
+ # Clearnet (darkweb directory / tracker)
+ "darkwebdaily.net": "https://darkwebdaily.net/",
+ "daut.link": "https://daunt.link/",
+ "tor taxi": "https://tor.taxi/",
+ "darkwebdaily": "https://darkwebdaily.live/",
+ "immuniweb": "https://www.immuniweb.com/darkweb/",
+ "ransomwatch": "https://ransomwatch.telemetry.ltd/",
+ "watchguard": "https://www.watchguard.com/wgrd-security-hub/ransomware-tracker",
+ "onionlive": "https://onion.live/",
+ "torlink": "https://tor.link/",
+ "onionland": "https://onionland.io/",
+ "dargle": "https://www.dargle.net/domains",
+ "torry": "https://www.torry.io/",
+ "onionlandse": "https://onionlandsearchengine.net/",
+ "torsearch": "https://torsearch.com/",
+ "onionlinkhub": "https://www.onionlinkhub.com/",
+}
+
+# =========================
+# MAIN DAEMON LOOP
+# =========================
+def main():
+ print("[*] Onion directory daemon started")
+
+ while RUNNING:
+ try:
+ session = tor_session()
+ index = load_index()
+
+ index_map = {
+ onion_domain(i["link"]): i
+ for i in index
+ if onion_domain(i.get("link"))
+ }
+
+ added = 0
+
+ for source, url in COLLECTORS.items():
+ try:
+ r = session.get(url, timeout=45)
+ for item in extract_onions(r.text, source):
+ domain = onion_domain(item["link"])
+ if not domain:
+ continue
+
+ if domain in index_map:
+ index_map[domain]["updated_date"] = now()
+ else:
+ item["stored_date"] = now()
+ item["updated_date"] = item["stored_date"]
+ index_map[domain] = item
+ added += 1
+ except:
+ continue
+
+ if added > 0:
+ save_index(list(index_map.values()))
+ print(f"[+] Added {added} new domains (total {len(index_map)})")
+ else:
+ print("[=] No new domains found")
+
+ except Exception as e:
+ print("[!] Error:", e)
+
+ # Sleep with graceful stop
+ for _ in range(INTERVAL):
+ if not RUNNING:
+ break
+ time.sleep(1)
+
+ print("[*] Onion directory daemon stopped cleanly")
+
+if __name__ == "__main__":
+ main()
diff --git a/Script/Darkweb-Scrapping/output.json b/Script/Darkweb-Scrapping/output.json
new file mode 100644
index 0000000..0c36d27
--- /dev/null
+++ b/Script/Darkweb-Scrapping/output.json
@@ -0,0 +1,44 @@
+[
+ {
+ "title": "http://drughub66wzkqtmwt57dw4vsorosxm6kcru7kmrtf2uluvwmtgo7bkqd.onion",
+ "link": "http://drughub66wzkqtmwt57dw4vsorosxm6kcru7kmrtf2uluvwmtgo7bkqd.onion/",
+ "source": "onionlinkhub",
+ "stored_date": "2026-01-20 16:13:39",
+ "updated_date": "2026-01-20 16:13:39"
+ },
+ {
+ "title": "http://drughub66wzkqtmwt57dw4vsorosxm6kcru7kmrtf2uluvwmtgo7bkqd.onion",
+ "link": "http://darkmat3dufn33tprycxavpmnpo6xxqjivtt4nxbp443zlslrg5rkbqd.onion/",
+ "source": "onionlinkhub",
+ "stored_date": "2026-01-20 16:13:39",
+ "updated_date": "2026-01-20 16:13:39"
+ },
+ {
+ "title": "Torzon Market",
+ "link": "http://torzon4kv3gwdyqvnw775ccymlz5ytfwkbanihejib7ymbitk2ee2wid.onion/",
+ "source": "onionlinkhub",
+ "stored_date": "2026-01-20 16:13:39",
+ "updated_date": "2026-01-20 16:13:39"
+ },
+ {
+ "title": "Atlas Market",
+ "link": "http://atlasgooo2pie5vyvwbt35zvfsiiy3va7tirvbe5ocvjugq7lggxlmyd.onion/",
+ "source": "onionlinkhub",
+ "stored_date": "2026-01-20 16:13:39",
+ "updated_date": "2026-01-20 16:13:39"
+ },
+ {
+ "title": "Colombia Connection",
+ "link": "http://zlmrf3ze2rmvlger4fzkxjf542omretq7cdhut6dhz6xrs2mdkcv4zqd.onion/",
+ "source": "onionlinkhub",
+ "stored_date": "2026-01-20 16:13:39",
+ "updated_date": "2026-01-20 16:13:39"
+ },
+ {
+ "title": "Nexus Generation market",
+ "link": "http://nexusabcp7ow32iuxrua2vkx2y26mo3fem4fz2xlbau2qe3l65gkonid.onion/",
+ "source": "onionlinkhub",
+ "stored_date": "2026-01-20 16:13:39",
+ "updated_date": "2026-01-20 16:13:39"
+ }
+]
\ No newline at end of file
diff --git a/Script/Darkweb-Scrapping/requirements.txt b/Script/Darkweb-Scrapping/requirements.txt
new file mode 100644
index 0000000..117291b
--- /dev/null
+++ b/Script/Darkweb-Scrapping/requirements.txt
@@ -0,0 +1,5 @@
+requests==2.32.5
+beautifulsoup4==4.13.5
+requests==2.32.5
+beautifulsoup4==4.13.5
+lxml==6.0.1
\ No newline at end of file