'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>/i', '', $html); $html = preg_replace('/)<[^<]*)*<\/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>/is'; $ownerMatches = []; if (preg_match_all($ownerPattern, $html, $ownerMatches)) { $owner = trim($ownerMatches[1][0] ?? ''); } else { $owner = ''; } // 提取网站名称 $sitePattern = '/网站名称.*?]*>([^<]+)<\/td>/is'; $siteMatches = []; if (preg_match_all($sitePattern, $html, $siteMatches)) { $siteName = trim($siteMatches[1][0] ?? ''); } else { $siteName = ''; } // 提取审核时间 $datePattern = '/审核时间.*?]*>([^<]+)<\/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>/i', '', $html); $html = preg_replace('/)<[^<]*)*<\/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 ''; }