<?php
$file = 'counter.dat';

// 读取并自增
$counter = (int)@file_get_contents($file);
$counter++;

// 使用 LOCK_EX 防止并发写入冲突
file_put_contents($file, $counter, LOCK_EX); 
?>
<?php
/**
 * ICP备案查询API
 * 支持通过域名查询网站的ICP备案信息
 */

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');

// 获取请求参数
$domain = isset($_GET['domain']) ? trim($_GET['domain']) : '';
$type = isset($_GET['type']) ? trim($_GET['type']) : 'json';

// 验证域名参数
if (empty($domain)) {
    http_response_code(400);
    echo json_encode([
        'status' => 'error',
        'code' => 400,
        'message' => '缺少必要参数: domain',
        'example' => '/api/icp/index.php?domain=example.com'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 清理域名格式（移除http://或https://）
$domain = preg_replace('/^https?:\/\//i', '', $domain);
$domain = preg_replace('/\/.*$/', '', $domain);
$domain = strtolower(trim($domain));

// 验证域名格式
if (!preg_match('/^([a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i', $domain)) {
    http_response_code(400);
    echo json_encode([
        'status' => 'error',
        'code' => 400,
        'message' => '无效的域名格式',
        'domain' => $domain
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

// 查询ICP信息
$result = queryICP($domain);

// 根据type参数返回不同格式
if ($type === 'text') {
    header('Content-Type: text/plain; charset=utf-8');
    if ($result['status'] === 'success') {
        echo "域名: " . $result['data']['domain'] . "\n";
        echo "主办单位: " . $result['data']['owner'] . "\n";
        echo "ICP编号: " . $result['data']['icp'] . "\n";
        echo "审核时间: " . $result['data']['checkDate'] . "\n";
        echo "网站名称: " . $result['data']['siteName'] . "\n";
    } else {
        echo "查询失败: " . $result['message'];
    }
} else {
    echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
}

/**
 * 查询ICP信息
 * @param string $domain 域名
 * @return array 返回结果数组
 */
function queryICP($domain) {
    $result = [
        'status' => 'error',
        'code' => 500,
        'message' => '查询失败',
        'domain' => $domain,
        'data' => null
    ];

    try {
        // 方法1: 使用国家互联网应急中心API
        $apiurl = "https://icp.aizhan.com/index.php?domain=" . urlencode($domain);
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $apiurl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 8);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode === 200 && !empty($response)) {
            // 解析HTML获取ICP信息
            $parsedData = parseICPData($response, $domain);
            if ($parsedData) {
                $result['status'] = 'success';
                $result['code'] = 200;
                $result['message'] = '查询成功';
                $result['data'] = $parsedData;
                return $result;
            }
        }

        // 方法2: 备用API - ICP查询
        $backupUrl = "https://www.beianx.com/search/?q=" . urlencode($domain);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $backupUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 8);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        
        $backupResponse = curl_exec($ch);
        $backupHttpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($backupHttpCode === 200 && !empty($backupResponse)) {
            $backupData = parseBeianxData($backupResponse, $domain);
            if ($backupData) {
                $result['status'] = 'success';
                $result['code'] = 200;
                $result['message'] = '查询成功';
                $result['data'] = $backupData;
                return $result;
            }
        }

        // 如果都失败，返回默认的未备案状态
        $result['status'] = 'not_found';
        $result['code'] = 404;
        $result['message'] = '未找到ICP备案信息（该域名可能未在中国备案）';
        
    } catch (Exception $e) {
        $result['message'] = '查询异常: ' . $e->getMessage();
    }

    return $result;
}

/**
 * 解析aizhan.com返回的ICP数据
 */
function parseICPData($html, $domain) {
    // 移除脚本和样式
    $html = preg_replace('/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/i', '', $html);
    $html = preg_replace('/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/i', '', $html);
    
    // 提取ICP编号
    $icpPattern = '/[\d\u4e00-\u9fa5]+-ICP-\d{8}/iu';
    $icpMatches = [];
    if (preg_match_all($icpPattern, $html, $icpMatches)) {
        $icp = $icpMatches[0][0] ?? '';
    } else {
        $icp = '';
    }

    // 提取主办单位
    $ownerPattern = '/主办单位.*?<td[^>]*>([^<]+)<\/td>/is';
    $ownerMatches = [];
    if (preg_match_all($ownerPattern, $html, $ownerMatches)) {
        $owner = trim($ownerMatches[1][0] ?? '');
    } else {
        $owner = '';
    }

    // 提取网站名称
    $sitePattern = '/网站名称.*?<td[^>]*>([^<]+)<\/td>/is';
    $siteMatches = [];
    if (preg_match_all($sitePattern, $html, $siteMatches)) {
        $siteName = trim($siteMatches[1][0] ?? '');
    } else {
        $siteName = '';
    }

    // 提取审核时间
    $datePattern = '/审核时间.*?<td[^>]*>([^<]+)<\/td>/is';
    $dateMatches = [];
    if (preg_match_all($datePattern, $html, $dateMatches)) {
        $checkDate = trim($dateMatches[1][0] ?? '');
    } else {
        $checkDate = '';
    }

    if (!empty($icp) || !empty($owner) || !empty($siteName)) {
        return [
            'domain' => $domain,
            'icp' => $icp ?: 'N/A',
            'owner' => $owner ?: 'N/A',
            'siteName' => $siteName ?: 'N/A',
            'checkDate' => $checkDate ?: 'N/A',
            'source' => 'aizhan.com'
        ];
    }

    return null;
}

/**
 * 解析beianx.com返回的数据
 */
function parseBeianxData($html, $domain) {
    $html = preg_replace('/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/i', '', $html);
    $html = preg_replace('/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/i', '', $html);
    
    // 提取ICP编号
    $icpPattern = '/[\d\u4e00-\u9fa5]+-ICP-\d{8}/iu';
    $icpMatches = [];
    preg_match_all($icpPattern, $html, $icpMatches);
    $icp = $icpMatches[0][0] ?? '';

    // 从表格中提取信息
    $owner = extractTableValue($html, '主办单位');
    $siteName = extractTableValue($html, '网站名称');
    $checkDate = extractTableValue($html, '审核时间');

    if (!empty($icp) || !empty($owner) || !empty($siteName)) {
        return [
            'domain' => $domain,
            'icp' => $icp ?: 'N/A',
            'owner' => $owner ?: 'N/A',
            'siteName' => $siteName ?: 'N/A',
            'checkDate' => $checkDate ?: 'N/A',
            'source' => 'beianx.com'
        ];
    }

    return null;
}

/**
 * 从HTML表格中提取指定标签的值
 */
function extractTableValue($html, $label) {
    $pattern = '/' . preg_quote($label) . '[^<]*?<[^>]*>([^<]+)<[^>]*>/is';
    if (preg_match($pattern, $html, $matches)) {
        return trim($matches[1]);
    }
    return '';
}

