Upload files to "/"

This commit is contained in:
mike 2026-04-27 11:28:38 +08:00
parent a8041d3491
commit e5b9193d8f
1 changed files with 165 additions and 0 deletions

165
tiktok_real_check.sh Normal file
View File

@ -0,0 +1,165 @@
#!/bin/bash
# ============================================================
# TikTok 真实可访问性检测脚本 v1.0
# 检测原理: 先通过美国 VPS DNS 解析 TikTok 域名,
# 再用解析到的 IP 发起实际 HTTP 请求,
# 模拟手机/设备的真实访问行为
# ============================================================
Font_Red="\033[31m"
Font_Green="\033[32m"
Font_Yellow="\033[33m"
Font_SkyBlue="\033[36m"
Font_Suffix="\033[0m"
Font_Bold="\033[1m"
# 美国 VPS DNS 服务器
US_DNS="142.171.202.195"
UA_Browser="Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1"
print_banner() {
echo ""
echo -e "${Font_SkyBlue}${Font_Bold}╔══════════════════════════════════════════════╗${Font_Suffix}"
echo -e "${Font_SkyBlue}${Font_Bold}║ TikTok 真实访问检测脚本 v1.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 ip_mask
ip_mask=$(awk -F"." '{print $1"."$2".*.*"}' <<<"${ip}")
local isp
isp=$(curl -s -4 --max-time 8 "https://api.ip.sb/geoip/${ip}" 2>/dev/null | grep '"organization"' | cut -f4 -d'"')
echo -e " ${Font_SkyBlue}本机出口: ${isp:-未知} (${ip_mask})${Font_Suffix}"
echo -e " ${Font_SkyBlue}使用 DNS: ${US_DNS} (美国 VPS)${Font_Suffix}"
echo ""
}
check_dns_resolution() {
echo -n -e " [1/3] DNS 解析测试..."
local resolved_ip
resolved_ip=$(dig +short @"$US_DNS" www.tiktok.com A 2>/dev/null | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
if [ -n "$resolved_ip" ]; then
echo -e "\r [1/3] DNS 解析测试 ${Font_Green}✅ 成功${Font_Suffix}${Font_SkyBlue}${resolved_ip}${Font_Suffix}"
echo "$resolved_ip"
return 0
else
echo -e "\r [1/3] DNS 解析测试 ${Font_Red}❌ 失败(无法通过美国 DNS 解析)${Font_Suffix}"
return 1
fi
}
check_tcp_connect() {
local ip=$1
echo -n -e " [2/3] TCP 连接测试..."
if timeout 8 bash -c "echo >/dev/tcp/${ip}/443" 2>/dev/null; then
echo -e "\r [2/3] TCP 连接测试 ${Font_Green}✅ 成功${Font_Suffix}${Font_SkyBlue}${ip}:443 可达${Font_Suffix}"
return 0
else
echo -e "\r [2/3] TCP 连接测试 ${Font_Red}❌ 失败(${ip}:443 不可达)${Font_Suffix}"
return 1
fi
}
check_http_access() {
local ip=$1
echo -n -e " [3/3] HTTP 访问测试..."
# 用解析到的 IP 直接请求,通过 Host 头指定域名(模拟设备真实访问)
local result
result=$(curl \
--resolve "www.tiktok.com:443:${ip}" \
--user-agent "${UA_Browser}" \
-sL --max-time 15 \
-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 region
region=$(echo "$result" | grep -o '"region":"[^"]*"' | head -1 | cut -f4 -d'"')
if [ -n "$region" ]; then
echo -e "\r [3/3] HTTP 访问测试 ${Font_Green}✅ 成功${Font_Suffix} → TikTok Region: ${Font_Green}${region}${Font_Suffix}"
return 0
fi
# 尝试不带 gzip
local result2
result2=$(curl \
--resolve "www.tiktok.com:443:${ip}" \
--user-agent "${UA_Browser}" \
-s --max-time 15 \
-H "Accept-Language: en-US,en;q=0.9" \
"https://www.tiktok.com/" 2>/dev/null)
local region2
region2=$(echo "$result2" | grep -o '"region":"[^"]*"' | head -1 | cut -f4 -d'"')
if [ -n "$region2" ]; then
echo -e "\r [3/3] HTTP 访问测试 ${Font_Green}✅ 成功${Font_Suffix} → TikTok Region: ${Font_Green}${region2}${Font_Suffix}"
return 0
fi
local http_code
http_code=$(curl \
--resolve "www.tiktok.com:443:${ip}" \
--user-agent "${UA_Browser}" \
-s -o /dev/null -w "%{http_code}" \
--max-time 10 \
"https://www.tiktok.com/" 2>/dev/null)
if [[ "$http_code" =~ ^(200|301|302)$ ]]; then
echo -e "\r [3/3] HTTP 访问测试 ${Font_Yellow}⚠️ 可连接${Font_Suffix}HTTP ${http_code},未获取到 region可能为 IDC IP"
return 0
else
echo -e "\r [3/3] HTTP 访问测试 ${Font_Red}❌ 失败${Font_Suffix}HTTP ${http_code:-超时}"
return 1
fi
}
print_summary() {
local result=$1
echo ""
if [ "$result" -eq 0 ]; then
echo -e " ${Font_Green}${Font_Bold}══════════════════════════════════════════${Font_Suffix}"
echo -e " ${Font_Green}${Font_Bold} ✅ 结论:设备通过此 DNS 可正常访问 TikTok${Font_Suffix}"
echo -e " ${Font_Green}${Font_Bold}══════════════════════════════════════════${Font_Suffix}"
else
echo -e " ${Font_Red}${Font_Bold}══════════════════════════════════════════${Font_Suffix}"
echo -e " ${Font_Red}${Font_Bold} ❌ 结论:设备通过此 DNS 无法访问 TikTok${Font_Suffix}"
echo -e " ${Font_Red}${Font_Bold}══════════════════════════════════════════${Font_Suffix}"
fi
echo ""
}
# ── 主流程 ──────────────────────────────────────
print_banner
get_ip_info
resolved_ip=$(check_dns_resolution)
dns_ok=$?
if [ $dns_ok -ne 0 ]; then
print_summary 1
exit 1
fi
check_tcp_connect "$resolved_ip"
tcp_ok=$?
if [ $tcp_ok -ne 0 ]; then
print_summary 1
exit 1
fi
check_http_access "$resolved_ip"
http_ok=$?
print_summary $http_ok