diff --git a/check_tiktok .sh b/check_tiktok .sh new file mode 100644 index 0000000..b10225a --- /dev/null +++ b/check_tiktok .sh @@ -0,0 +1,98 @@ +#!/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 ""