AC2100/check_tiktok.sh

99 lines
3.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# ============================================================
# TikTok 可访问性 & 区域检测脚本 v2.0
# 检测原理: 请求 TikTok 主站,解析响应中的 "region" 字段
# 适用系统: Debian / Ubuntu VPS
# ============================================================
Font_Red="\033[31m"
Font_Green="\033[32m"
Font_Yellow="\033[33m"
Font_SkyBlue="\033[36m"
Font_Suffix="\033[0m"
Font_Bold="\033[1m"
UA_Browser="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
print_banner() {
echo ""
echo -e "${Font_SkyBlue}${Font_Bold}╔══════════════════════════════════════════════╗${Font_Suffix}"
echo -e "${Font_SkyBlue}${Font_Bold}║ TikTok 区域检测脚本 v2.0 ║${Font_Suffix}"
echo -e "${Font_SkyBlue}${Font_Bold}╚══════════════════════════════════════════════╝${Font_Suffix}"
echo -e " 测试时间: $(date)"
echo ""
}
get_ip_info() {
local ip
ip=$(curl -4 -s --max-time 8 https://api64.ipify.org 2>/dev/null)
local isp
isp=$(curl -s -4 --max-time 8 "https://api.ip.sb/geoip/${ip}" 2>/dev/null | grep '"organization"' | cut -f4 -d'"')
local ip_mask
ip_mask=$(awk -F"." '{print $1"."$2".*.*"}' <<<"${ip}")
echo -e " ${Font_SkyBlue}出口网络: ${isp} (${ip_mask})${Font_Suffix}"
echo ""
}
check_tiktok() {
echo -n -e " TikTok 区域检测中...\r"
# 第一次请求(不带 gzip直接拿原始内容
local result1
result1=$(curl --user-agent "${UA_Browser}" \
-s --max-time 10 \
"https://www.tiktok.com/" 2>/dev/null)
# 检查是否网络完全不通
if [[ "$result1" == "curl"* ]] || [ -z "$result1" ]; then
echo -e " TikTok Region:\t${Font_Red}❌ 网络连接失败 (无法访问 TikTok)${Font_Suffix}"
return 1
fi
# 从响应中提取 region 字段
local region1
region1=$(echo "$result1" | grep -o '"region":"[^"]*"' | head -1 | cut -f4 -d'"')
if [ -n "$region1" ]; then
echo -e " TikTok Region:\t${Font_Green}✅ 【${region1}】 可正常访问${Font_Suffix}"
return 0
fi
# 第二次请求(带 Accept-Encoding: gzip解压后提取
local result2
result2=$(curl --user-agent "${UA_Browser}" \
-sL --max-time 10 \
-H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
-H "Accept-Encoding: gzip" \
-H "Accept-Language: en-US,en;q=0.9" \
"https://www.tiktok.com" 2>/dev/null | gunzip 2>/dev/null)
local region2
region2=$(echo "$result2" | grep -o '"region":"[^"]*"' | head -1 | cut -f4 -d'"')
if [ -n "$region2" ]; then
echo -e " TikTok Region:\t${Font_Yellow}⚠️ 【${region2}】 可访问 (可能为 IDC IP功能受限)${Font_Suffix}"
return 0
fi
# 检查是否被重定向到封锁页面
local blocked
blocked=$(echo "$result1" | grep -i "not available\|unavailable\|blocked" | head -1)
if [ -n "$blocked" ]; then
echo -e " TikTok Region:\t${Font_Red}❌ 该地区已被 TikTok 封锁${Font_Suffix}"
return 1
fi
echo -e " TikTok Region:\t${Font_Red}❌ 检测失败 (无法获取区域信息)${Font_Suffix}"
return 1
}
print_banner
get_ip_info
check_tiktok
echo ""
echo -e "${Font_SkyBlue}${Font_Bold}══════════════════════════════════════════════════${Font_Suffix}"
echo ""