diff --git a/api/icp/index.php b/api/icp/index.php deleted file mode 100644 index 8b11b6b..0000000 --- a/api/icp/index.php +++ /dev/null @@ -1,293 +0,0 @@ - '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://api.vat.tools/query?domain=" . urlencode($domain); - $data = callApi($apiurl); - if ($data && is_array($data)) { - if (isset($data['icp']) && !empty($data['icp']) && $data['icp'] !== 'N/A') { - $result['status'] = 'success'; - $result['code'] = 200; - $result['message'] = '查询成功'; - $result['data'] = [ - 'domain' => $domain, - 'icp' => $data['icp'], - 'owner' => $data['organizer'] ?? $data['owner'] ?? 'N/A', - 'siteName' => $data['website_name'] ?? $data['name'] ?? 'N/A', - 'checkDate' => $data['check_date'] ?? $data['approve_date'] ?? 'N/A', - 'siteNature' => $data['site_nature'] ?? 'N/A', - 'source' => 'vat.tools' - ]; - return $result; - } - } - - // 方法2: 使用爱站网API - $apiurl2 = "https://tools.zhuaxia.com/icp?domain=" . urlencode($domain); - $data2 = callApi($apiurl2); - if ($data2 && is_array($data2) && isset($data2['data'])) { - $icpData = $data2['data']; - $icp = $icpData['icp'] ?? ''; - if (!empty($icp) && $icp !== 'N/A') { - $result['status'] = 'success'; - $result['code'] = 200; - $result['message'] = '查询成功'; - $result['data'] = [ - 'domain' => $domain, - 'icp' => $icp, - 'owner' => $icpData['unitname'] ?? $icpData['owner'] ?? 'N/A', - 'siteName' => $icpData['sitename'] ?? $icpData['name'] ?? 'N/A', - 'checkDate' => $icpData['checkdate'] ?? $icpData['time'] ?? 'N/A', - 'source' => 'zhuaxia' - ]; - return $result; - } - } - - // 方法3: 使用网格API (chaxun) - $apiurl3 = "https://www.chaxun.15600.net/service.php?domain=" . urlencode($domain); - $data3 = callApi($apiurl3); - if ($data3 && is_array($data3)) { - $icpNum = $data3['ICP'] ?? $data3['icp'] ?? ''; - if (!empty($icpNum) && $icpNum !== 'N/A') { - $result['status'] = 'success'; - $result['code'] = 200; - $result['message'] = '查询成功'; - $result['data'] = [ - 'domain' => $domain, - 'icp' => $icpNum, - 'owner' => $data3['company'] ?? $data3['owner'] ?? 'N/A', - 'siteName' => $data3['websitename'] ?? $data3['name'] ?? 'N/A', - 'checkDate' => $data3['checkTime'] ?? $data3['time'] ?? 'N/A', - 'source' => 'chaxun' - ]; - return $result; - } - } - - // 方法4: 使用AllOrigins代理通过爱站网查询 - $proxyUrl = "https://api.allorigins.win/get?url=" . urlencode("http://icp.aizhan.com/index.php?domain=" . urlencode($domain)); - $data4 = callApi($proxyUrl); - if ($data4 && isset($data4['contents'])) { - $htmlData = $data4['contents']; - $parsedData = parseICPFromHTML($htmlData, $domain); - if ($parsedData && isset($parsedData['icp']) && $parsedData['icp'] !== 'N/A') { - return [ - 'status' => 'success', - 'code' => 200, - 'message' => '查询成功', - 'domain' => $domain, - 'data' => $parsedData - ]; - } - } - - // 方法5: 直接查询爱站网 (HTTP) - $apiurl5 = "http://icp.aizhan.com/index.php?domain=" . urlencode($domain); - $htmlData = callApi($apiurl5, false); - if ($htmlData && strlen($htmlData) > 100) { - $parsedData = parseICPFromHTML($htmlData, $domain); - if ($parsedData && isset($parsedData['icp']) && $parsedData['icp'] !== 'N/A') { - return [ - 'status' => 'success', - 'code' => 200, - 'message' => '查询成功', - 'domain' => $domain, - 'data' => $parsedData - ]; - } - } - - // 都失败返回未备案 - $result['status'] = 'not_found'; - $result['code'] = 404; - $result['message'] = '未找到ICP备案信息(该域名可能未在中国备案)'; - - } catch (Exception $e) { - $result['status'] = 'error'; - $result['code'] = 500; - $result['message'] = 'API异常: ' . $e->getMessage(); - } - -} - -/** - * 通用HTTP调用函数 - */ -function callApi($url, $isJson = true) { - try { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 8); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4); - 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, 2); - curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); - - $response = curl_exec($ch); - $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - - if ($httpCode !== 200 || empty($response)) { - return null; - } - - if ($isJson) { - return json_decode($response, true); - } - - return $response; - } catch (Exception $e) { - return null; - } -} - -/** - * 从HTML中提取指定字段的值 - */ -function extractFromHTML($html, $label) { - $patterns = [ - '/' . preg_quote($label) . '[^>]*>([^<]+)', - '/