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
February 27, 2026 at 10:20 am
#8425
Moderator
Updated bash script
#!/bin/bash
# --- 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" # New file to remember your save folder
# --- LOCATION HELPER ---
get_save_directory() {
local SAVED_DIR=""
[ -f "$LOC_CONFIG" ] && SAVED_DIR=$(cat "$LOC_CONFIG")
if [ -d "$SAVED_DIR" ]; then
read -p "Use saved location: $SAVED_DIR? (y/n): " USE_SAVED
if [[ "$USE_SAVED" =~ ^[Yy]$ ]]; then
echo "$SAVED_DIR"
return 0
fi
fi
read -p "Enter Full Path to Save Folder: " NEW_DIR
if [ -d "$NEW_DIR" ]; then
echo "$NEW_DIR" > "$LOC_CONFIG"
echo "$NEW_DIR"
else
echo "" # Return empty if invalid
fi
}
# --- AUTHENTICATION & UPDATE HELPER ---
get_failure_fix() {
echo -e "\n[!] DOWNLOAD FAILED: YouTube may have updated their site or blocked the request."
echo "---------------------------------------------------------------"
echo " [U] CHECK FOR UPDATES (Fixes 'signature' & 'bot' errors)"
echo " [F] Link a cookies.txt file (Manual Path)"
echo " [B] Extract from Browser (Select from list)"
echo " [N] Cancel and return to menu"
echo "---------------------------------------------------------------"
read -p "Select a fix [U/F/B/N]: " FIX_CHOICE
case $FIX_CHOICE in
[uU]*)
echo "Checking for yt-dlp updates..."
if "$YTDLP_BIN" -U; then
echo "Update check complete."
else
echo "Self-update failed. Re-downloading latest binary..."
curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
fi
return 0 ;;
[fF]*)
read -p "Enter path to cookies.txt: " USER_FILE
[ -f "$USER_FILE" ] && echo "--cookies $USER_FILE" > "$CONFIG_FILE" && return 0 ;;
[bB]*)
echo -e "\n1) Chrome 2) Firefox 3) Brave 4) Edge 5) Opera 6) Vivaldi 7) Tor"
read -p "Select browser [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
echo "--cookies-from-browser $B" > "$CONFIG_FILE" && return 0 ;;
*) return 1 ;;
esac
}
# --- CORE FUNCTIONS ---
run_yt_dlp() {
local URL=$1
SAVED_AUTH=$(cat "$CONFIG_FILE" 2>/dev/null)
"$YTDLP_BIN" $SAVED_AUTH -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)
read -p "Enter Link (or press Enter to use clipboard: $CLIP): " 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" ]]; then
read -p "Download complete. Save? (y/n): " KEEP
if [[ "$KEEP" =~ ^[Yy]$ ]]; then
DEST=$(get_save_directory)
if [ -d "$DEST" ]; then
SA=$(cat "$CONFIG_FILE" 2>/dev/null)
TITLE=$("$YTDLP_BIN" $SA --get-title "$URL" | tr -dc '[:alnum:]\n\r ' | tr ' ' '_')
mv "$FILE" "$DEST/${TITLE}.mp4"
echo "Saved to $DEST"
fi
fi
fi
[ -f "$FILE" ] && rm "$FILE"
fi
else
if get_failure_fix; then
read -p "Fix applied. Retry link now? (y/n): " REA
[[ ! "$REA" =~ ^[Yy]$ ]] && RETRY=false
else
RETRY=false
read -p "Press Enter to return to menu..."
fi
fi
done
}
# --- DASHBOARD ---
[ ! -f "$YTDLP_BIN" ] && curl -L "$YTDLP_URL" -o "$YTDLP_BIN" && chmod +x "$YTDLP_BIN"
while true; do
clear
echo "==========================================================================================="
echo "| TAKS SHACK | YouTube Player & Downloader | Created by Thumbtak at http://TAKsShack.com |"
echo "==========================================================================================="
[ -f "$CONFIG_FILE" ] && echo " Auth Mode: $(cat "$CONFIG_FILE")" || echo " Auth Mode: NONE"
[ -f "$LOC_CONFIG" ] && echo " Default Save: $(cat "$LOC_CONFIG")" || echo " Default Save: NOT SET"
echo "-------------------------------------------------------------------------------------------"
echo " [1] Stream SINGLE Video [4] Run PLAYLIST File"
echo " [2] Download & Play SINGLE [5] Silent Batch DOWNLOAD"
echo " [3] Download & Play MULTIPLE [c] Reset Auth / Update"
echo " [6] EXIT AND CLEANUP"
echo "==========================================================================================="
read -p "SELECT OPTION: " 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)
read -p "Clear [A]uth or [L]ocation? " CLEAR_MODE
[[ "$CLEAR_MODE" =~ ^[Aa]$ ]] && rm "$CONFIG_FILE" 2>/dev/null
[[ "$CLEAR_MODE" =~ ^[Ll]$ ]] && rm "$LOC_CONFIG" 2>/dev/null
;;
6) break ;;
esac
done
rm "$YTDLP_BIN" 2>/dev/null
-
This reply was modified 1 week, 6 days ago by
thumbtak. Reason: Minor update
