What makes us different from other similar websites? › Forums › Tech › How to Stop Ad Blocker Detection on Websites Like YouTube › Reply To: How to Stop Ad Blocker Detection on Websites Like YouTube
May 13, 2026 at 3:15 pm
#8475
Moderator
Fixed: Quoted path variables, used arrays for auth flags, fixed metadata fetch quoting, and updated browser-selection logic
#!/bin/bash
# --- COLORS & STYLING ---
G='\033[0;32m' # Success
B='\033[0;34m' # Secondary
P='\033[38;5;211m' # Rose Pink (Primary)
Y='\033[1;33m' # Warning
R='\033[0;31m' # Danger
W='\033[1;37m' # Highlight
NC='\033[0m' # Reset
# --- CONFIGURATION ---
YTDLP_URL="https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"
YTDLP_BIN="./yt-dlp"
OUTPUT_BASENAME="downloaded_video"
PLAYLIST_FILE="video_playlist.txt"
CONFIG_FILE=".ytdlp_config"
LOC_CONFIG=".ytdlp_location"
# --- LOCATION HELPER ---
get_save_directory() {
local SAVED_DIR=""
[ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")
if [ -d "$SAVED_DIR" ]; then
echo -e "${Y}» Existing Path Found:${NC} $SAVED_DIR" >&2
read -p " Use this location? (y/n): " USE_SAVED >&2
if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
echo "$SAVED_DIR"
return 0
fi
fi
echo -e "${P}» Setup New Directory${NC}" >&2
read -p " Enter Full Path: " NEW_DIR >&2
if [ -d "$NEW_DIR" ]; then
echo "$NEW_DIR" > "$LOC_CONFIG"
echo "$NEW_DIR"
else
echo -e "${R}✘ Directory does not exist!${NC}" >&2
echo ""
fi
}
# --- AUTHENTICATION & UPDATE HELPER ---
get_failure_fix() {
echo -e "\n${R}┌───────────────────────────────────────────────────────────┐${NC}"
echo -e "${R}│ CRITICAL ERROR: Download Interrupted │${NC}"
echo -e "${R}└───────────────────────────────────────────────────────────┘${NC}"
echo -e " [${P}U${NC}] Check for Updates [${P}B${NC}] Link Browser Cookies"
echo -e " [${P}F${NC}] Manual cookies.txt [${P}N${NC}] Return to Dashboard"
echo -e "${B}─────────────────────────────────────────────────────────────${NC}"
read -p " Action Required: " FIX_CHOICE
case $FIX_CHOICE in
[uU]*)
echo "Checking for updates..."
if "$YTDLP_BIN" -U; then
echo "Update successful."
else
curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
fi
return 0 ;;
[fF]*)
read -p " Path to cookies.txt: " USER_FILE
# Store only the path to keep command building clean
[ -f "$USER_FILE" ] && echo "$USER_FILE" > "$CONFIG_FILE" && return 0 ;;
[bB]*)
echo -e " (1)Chrome (2)Firefox (3)Brave (4)Edge (5)Opera (6)Vivaldi (7)Tor"
read -p " Select [1-7]: " B_NUM
case $B_NUM in 1) B="chrome";; 2) B="firefox";; 3) B="brave";; 4) B="edge";; 5) B="opera";; 6) B="vivaldi";; 7) B="tor";; *) return 1;; esac
# Store the browser name only
echo "BROWSER:$B" > "$CONFIG_FILE" && return 0 ;;
*) return 1 ;;
esac
}
# --- CORE FUNCTIONS ---
run_yt_dlp() {
local URL=$1
local AUTH_OPTS=()
if [ -f "$CONFIG_FILE" ]; then
VAL=$(cat "$CONFIG_FILE")
if [[ "$VAL" == BROWSER:* ]]; then
AUTH_OPTS=("--cookies-from-browser" "${VAL#BROWSER:}")
else
AUTH_OPTS=("--cookies" "$VAL")
fi
fi
"$YTDLP_BIN" "${AUTH_OPTS[@]}" -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \
--merge-output-format mp4 --output "${OUTPUT_BASENAME}.%(ext)s" "$URL"
return $?
}
process_media() {
local MODE=$1
local URL=$2
local RETRY=true
if [ -z "$URL" ]; then
CLIP=$(xclip -selection clipboard -o 2>/dev/null)
echo -e "${P}» Input URL${NC}"
read -p " Paste link (Enter for clipboard): " MANUAL_URL
URL=${MANUAL_URL:-$CLIP}
fi
[ -z "$URL" ] && return
[[ "$MODE" != "SILENT" ]] && read -p " Monitor Index (0-9) [Default 0]: " MON && MON=${MON:-0}
while [ "$RETRY" = true ]; do
if run_yt_dlp "$URL"; then
RETRY=false
FILE=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
if [ -f "$FILE" ]; then
[[ "$MODE" != "SILENT" ]] && mpv --fs --screen="$MON" "$FILE"
if [[ "$MODE" == "DOWNLOAD" || "$MODE" == "STREAM" ]]; then
read -p " Download complete. Save file? (y/n): " KEEP
if [[ "$KEEP" =~ ^[Yy]$ ]]; then
DEST=$(get_save_directory)
if [ -n "$DEST" ] && [ -d "$DEST" ]; then
# Build title using the same fixed auth logic
local SA_OPTS=()
if [ -f "$CONFIG_FILE" ]; then
local V=$(cat "$CONFIG_FILE")
[[ "$V" == BROWSER:* ]] && SA_OPTS=("--cookies-from-browser" "${V#BROWSER:}") || SA_OPTS=("--cookies" "$V")
fi
TITLE=$("$YTDLP_BIN" "${SA_OPTS[@]}" --get-title "$URL" | tr -dc '[:alnum:]\n\r ' | tr ' ' '_')
mv "$FILE" "$DEST/${TITLE}.mp4"
echo -e "${G}✔ Saved to $DEST/${TITLE}.mp4${NC}"
read -p "Press Enter to continue..."
else
echo -e "${R}✘ Save cancelled or directory invalid.${NC}"
rm "$FILE"
read -p "Press Enter to continue..."
fi
else
[ -f "$FILE" ] && rm "$FILE"
fi
fi
fi
else
if get_failure_fix; then
read -p " Fix applied. Retry now? (y/n): " REA
[[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
else
RETRY=false
read -p " Press Enter to continue..."
fi
fi
done
}
# --- DASHBOARD ---
[ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
while true; do
clear
# Rose Pink Header
echo -e "${P} ████████╗ █████╗ ██╗ ██╗███████╗ ███████╗██╗ ██╗ █████╗ ██████╗██╗ ██╗"
echo -e " ╚══██╔══╝██╔══██╗██║ ██╔╝██╔════╝ ██╔════╝██║ ██║██╔══██╗██╔════╝██║ ██╔╝"
echo -e " ██║ ███████║█████╔╝ ███████╗ ███████╗███████║███████║██║ █████╔╝ "
echo -e " ██║ ██╔══██║██╔═██╗ ╚════██║ ╚════██║██╔══██║██╔══██║██║ ██╔═██╗ "
echo -e " ██║ ██║ ██║██║ ██╗███████║ ███████║██║ ██║██║ ██║╚██████╗██║ ██╗"
echo -e " ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝${NC}"
echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
# Redesigned YouTube Icon
echo -e " ${R} ▄▄██████████████████▄▄"
echo -e " ████████████████████████"
echo -e " ██████████${W}█${R}█████████████"
echo -e " ██████████${W}███${R}███████████"
echo -e " ██████████${W}█████${R}█████████"
echo -e " ██████████${W}███${R}███████████"
echo -e " ██████████${W}█${R}█████████████"
echo -e " ████████████████████████"
echo -e " ▀▀██████████████████▀▀${NC}"
echo ""
# Rose Pink DOWNLOADER Header
echo -e "${P} ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗ "
echo -e " ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██║ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗"
echo -e " ██║ ██║██║ ██║██║ █╗ ██║██╔██╗ ██║██║ ██║ ██║███████║██║ ██║█████╗ ██████╔╝"
echo -e " ██║ ██║██║ ██║██║███╗██║██║╚██╗██║██║ ██║ ██║██╔══██║██║ ██║██╔══╝ ██╔══██╗"
echo -e " ██████╔╝╚██████╔╝╚███╔███╔╝██║ ╚████║███████╗╚██████╔╝██║ ██║██████╔╝███████╗██║ ██╗"
echo -e " ╚═════╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝${NC}"
echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
echo -e " ${W}Media Engine${NC} | TAKsShack.com"
echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
# Status Indicators
if [ -f "$CONFIG_FILE" ]; then
echo -e " ${G}●${NC} AUTH: ${W}$(cat "$CONFIG_FILE")${NC}"
else
echo -e " ${R}○${NC} AUTH: ${B}Anonymous${NC}"
fi
if [ -f "$LOC_CONFIG" ]; then
echo -e " ${G}●${NC} PATH: ${W}$(cat "$LOC_CONFIG")${NC}"
else
echo -e " ${R}○${NC} PATH: ${B}Not Configured${NC}"
fi
echo ""
# Menu Options
echo -e " [${P}1${NC}] Stream Video [${P}4${NC}] Run Playlist File"
echo -e " [${P}2${NC}] Download & Play [${P}5${NC}] Silent Batch Download"
echo -e " [${P}3${NC}] Multi-Link Process [${P}c${NC}] Reset / Update Core"
echo -e " [${P}6${NC}] ${R}Exit Terminal${NC}"
echo -e " ${B}─────────────────────────────────────────────────────────────────────────────${NC}"
echo -n " SELECT ACTION: "
read CHOICE
case $CHOICE in
1) process_media "STREAM" ;;
2) process_media "DOWNLOAD" ;;
3) read -p " Paste links: " MUL; for L in $MUL; do process_media "DOWNLOAD" "$L"; done ;;
4) [ -f "$PLAYLIST_FILE" ] && while read -r L; do process_media "STREAM" "$L"; done < "$PLAYLIST_FILE" ;;
5)
read -p " Paste links: " B_URLS
B_DEST=$(get_save_directory)
if [ -d "$B_DEST" ]; then
for L in $B_URLS; do
process_media "SILENT" "$L"
F=$(ls ${OUTPUT_BASENAME}.* 2>/dev/null | head -n 1)
[ -f "$F" ] && mv "$F" "$B_DEST/"
done
fi ;;
c|C)
echo -e " Clear [${P}A${NC}]uth or [${P}L${NC}]ocation?"
read CLEAR_MODE
[[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
[[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
;;
6) rm "$YTDLP_BIN" 2>/dev/null; clear; break ;;
esac
done
