ICP备案信息查询API接口

[复制链接]
作者: Xidorn | 时间: 2023-10-9 10:49:21 | 编程开发|
19 1045

149

主题

556

回帖

4378

积分

管理员

积分
4378

论坛元老最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理

 楼主| 发表于 2023-10-14 23:17:24| 显示全部楼层
胖虎 发表于 2023-10-14 23:07
哈哈,我有时间的话,看看能不能把你的那个扩充一下,把其他几个查询都给列出来。 ...

好的,非常感谢!
网谋论坛 https://wm.lt
回复

使用道具 举报

149

主题

556

回帖

4378

积分

管理员

积分
4378

论坛元老最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理

 楼主| 发表于 2023-10-20 08:31:58| 显示全部楼层
胖虎 发表于 2023-10-14 23:07
哈哈,我有时间的话,看看能不能把你的那个扩充一下,把其他几个查询都给列出来。 ...

大佬,请问这个接口是否可以查询备案站点名称?谢谢!
网谋论坛 https://wm.lt
回复

使用道具 举报

1

主题

27

回帖

124

积分

新手上路

积分
124
发表于 2023-10-21 20:49:40| 显示全部楼层
Xidorn 发表于 2023-10-20 08:31
大佬,请问这个接口是否可以查询备案站点名称?谢谢!

下面是查询结果json,你可以看看需要啥值,直接拿
  1. {
  2.     "code": 200,
  3.     "msg": "操作成功",
  4.     "params": {
  5.         "endRow": 0,
  6.         "firstPage": 1,
  7.         "hasNextPage": false,
  8.         "hasPreviousPage": false,
  9.         "isFirstPage": true,
  10.         "isLastPage": true,
  11.         "lastPage": 1,
  12.         "list": [
  13.             {
  14.                 "contentTypeName": "宗教、宗教、出版、新闻、出版、出版、新闻、宗教、文化、宗教",
  15.                 "domain": "qq.com",
  16.                 "domainId": 190000203203,
  17.                 "leaderName": "",
  18.                 "limitAccess": "否",
  19.                 "mainId": 547280,
  20.                 "mainLicence": "粤B2-20090059",
  21.                 "natureName": "企业",
  22.                 "serviceId": 4134047,
  23.                 "serviceLicence": "粤B2-20090059-5",
  24.                 "unitName": "深圳市腾讯计算机系统有限公司",
  25.                 "updateRecordTime": "2023-10-18 10:27:25"
  26.             }
  27.         ],
  28.         "navigatePages": 8,
  29.         "navigatepageNums": [
  30.             1
  31.         ],
  32.         "nextPage": 1,
  33.         "pageNum": 1,
  34.         "pageSize": 10,
  35.         "pages": 1,
  36.         "prePage": 1,
  37.         "size": 1,
  38.         "startRow": 0,
  39.         "total": 1
  40.     },
  41.     "success": true
  42. }
复制代码
回复

使用道具 举报

1

主题

27

回帖

124

积分

新手上路

积分
124
发表于 2023-10-21 20:52:00| 显示全部楼层
可以参考baidu和qq的域名查询结果,应该可以猜出来各个字段的含义
  1. {
  2.     "code": 200,
  3.     "msg": "操作成功",
  4.     "params": {
  5.         "endRow": 0,
  6.         "firstPage": 1,
  7.         "hasNextPage": false,
  8.         "hasPreviousPage": false,
  9.         "isFirstPage": true,
  10.         "isLastPage": true,
  11.         "lastPage": 1,
  12.         "list": [
  13.             {
  14.                 "contentTypeName": "",
  15.                 "domain": "baidu.com",
  16.                 "domainId": 10000245113,
  17.                 "leaderName": "",
  18.                 "limitAccess": "否",
  19.                 "mainId": 282751,
  20.                 "mainLicence": "京ICP证030173号",
  21.                 "natureName": "企业",
  22.                 "serviceId": 282911,
  23.                 "serviceLicence": "京ICP证030173号-1",
  24.                 "unitName": "北京百度网讯科技有限公司",
  25.                 "updateRecordTime": "2023-08-15 11:32:09"
  26.             }
  27.         ],
  28.         "navigatePages": 8,
  29.         "navigatepageNums": [
  30.             1
  31.         ],
  32.         "nextPage": 1,
  33.         "pageNum": 1,
  34.         "pageSize": 10,
  35.         "pages": 1,
  36.         "prePage": 1,
  37.         "size": 1,
  38.         "startRow": 0,
  39.         "total": 1
  40.     },
  41.     "success": true
  42. }
复制代码





下面的这个是没有备案的,你可以参考,没有备案的域名怎么从返回值判断。
  1. {
  2.     "code": 200,
  3.     "msg": "操作成功",
  4.     "params": {
  5.         "endRow": 0,
  6.         "firstPage": 1,
  7.         "hasNextPage": true,
  8.         "hasPreviousPage": false,
  9.         "isFirstPage": true,
  10.         "isLastPage": false,
  11.         "lastPage": 0,
  12.         "list": [],
  13.         "navigatePages": 8,
  14.         "navigatepageNums": [],
  15.         "nextPage": 1,
  16.         "pageNum": 1,
  17.         "pageSize": 10,
  18.         "pages": 0,
  19.         "prePage": 1,
  20.         "size": 0,
  21.         "startRow": 0,
  22.         "total": 0
  23.     },
  24.     "success": true
  25. }
复制代码
回复

使用道具 举报

1

主题

27

回帖

124

积分

新手上路

积分
124
发表于 2023-10-21 20:53:42| 显示全部楼层
total 这个字段应该是查询到的条数,你可以判断条数为0则没有备案,大于0就是有备案,因为他可以通过icp备案号查询域名,所以当用icp查询的时候,可能有多条数据
回复

使用道具 举报

1

主题

27

回帖

124

积分

新手上路

积分
124
发表于 2023-10-21 20:55:45| 显示全部楼层
下面是通过百度的icp号查询到的备案域名有那些。你也可以扩展搜索。比如搜索一个域名,怎么去把他的同一个备案下所有域名查出。


  1. {
  2.     "code": 200,
  3.     "msg": "操作成功",
  4.     "params": {
  5.         "endRow": 9,
  6.         "firstPage": 1,
  7.         "hasNextPage": true,
  8.         "hasPreviousPage": false,
  9.         "isFirstPage": true,
  10.         "isLastPage": false,
  11.         "lastPage": 27,
  12.         "list": [
  13.             {
  14.                 "contentTypeName": "",
  15.                 "domain": "baidu.com",
  16.                 "domainId": 10000245113,
  17.                 "leaderName": "",
  18.                 "limitAccess": "否",
  19.                 "mainId": 282751,
  20.                 "mainLicence": "京ICP证030173号",
  21.                 "natureName": "企业",
  22.                 "serviceId": 282911,
  23.                 "serviceLicence": "京ICP证030173号-1",
  24.                 "unitName": "北京百度网讯科技有限公司",
  25.                 "updateRecordTime": "2023-08-15 11:32:09"
  26.             },
  27.             {
  28.                 "contentTypeName": "",
  29.                 "domain": "yjs-cdn3.com",
  30.                 "domainId": 10004879371,
  31.                 "leaderName": "",
  32.                 "limitAccess": "否",
  33.                 "mainId": 282751,
  34.                 "mainLicence": "京ICP证030173号",
  35.                 "natureName": "企业",
  36.                 "serviceId": 10001868696,
  37.                 "serviceLicence": "京ICP证030173号-102",
  38.                 "unitName": "北京百度网讯科技有限公司",
  39.                 "updateRecordTime": "2023-08-15 11:32:09"
  40.             },
  41.             {
  42.                 "contentTypeName": "",
  43.                 "domain": "yunjiasu-cdn.net",
  44.                 "domainId": 10005348493,
  45.                 "leaderName": "",
  46.                 "limitAccess": "否",
  47.                 "mainId": 282751,
  48.                 "mainLicence": "京ICP证030173号",
  49.                 "natureName": "企业",
  50.                 "serviceId": 10002200516,
  51.                 "serviceLicence": "京ICP证030173号-120",
  52.                 "unitName": "北京百度网讯科技有限公司",
  53.                 "updateRecordTime": "2023-08-15 11:32:10"
  54.             },
  55.             {
  56.                 "contentTypeName": "",
  57.                 "domain": "yunjiasu.com",
  58.                 "domainId": 10005348497,
  59.                 "leaderName": "",
  60.                 "limitAccess": "否",
  61.                 "mainId": 282751,
  62.                 "mainLicence": "京ICP证030173号",
  63.                 "natureName": "企业",
  64.                 "serviceId": 10002200520,
  65.                 "serviceLicence": "京ICP证030173号-124",
  66.                 "unitName": "北京百度网讯科技有限公司",
  67.                 "updateRecordTime": "2023-08-15 11:32:10"
  68.             },
  69.             {
  70.                 "contentTypeName": "",
  71.                 "domain": "dushifen.com",
  72.                 "domainId": 10005348485,
  73.                 "leaderName": "",
  74.                 "limitAccess": "否",
  75.                 "mainId": 282751,
  76.                 "mainLicence": "京ICP证030173号",
  77.                 "natureName": "企业",
  78.                 "serviceId": 10002200508,
  79.                 "serviceLicence": "京ICP证030173号-131",
  80.                 "unitName": "北京百度网讯科技有限公司",
  81.                 "updateRecordTime": "2023-08-15 11:32:10"
  82.             },
  83.             {
  84.                 "contentTypeName": "",
  85.                 "domain": "videomind.net",
  86.                 "domainId": 10005421452,
  87.                 "leaderName": "",
  88.                 "limitAccess": "否",
  89.                 "mainId": 282751,
  90.                 "mainLicence": "京ICP证030173号",
  91.                 "natureName": "企业",
  92.                 "serviceId": 10002273118,
  93.                 "serviceLicence": "京ICP证030173号-139",
  94.                 "unitName": "北京百度网讯科技有限公司",
  95.                 "updateRecordTime": "2023-08-15 11:32:10"
  96.             },
  97.             {
  98.                 "contentTypeName": "",
  99.                 "domain": "yoojia.com",
  100.                 "domainId": 990000676563,
  101.                 "leaderName": "",
  102.                 "limitAccess": "否",
  103.                 "mainId": 282751,
  104.                 "mainLicence": "京ICP证030173号",
  105.                 "natureName": "企业",
  106.                 "serviceId": 990000677061,
  107.                 "serviceLicence": "京ICP证030173号-167",
  108.                 "unitName": "北京百度网讯科技有限公司",
  109.                 "updateRecordTime": "2023-08-15 11:32:11"
  110.             },
  111.             {
  112.                 "contentTypeName": "",
  113.                 "domain": "baidu.com.cn",
  114.                 "domainId": 10000441535,
  115.                 "leaderName": "",
  116.                 "limitAccess": "否",
  117.                 "mainId": 282751,
  118.                 "mainLicence": "京ICP证030173号",
  119.                 "natureName": "企业",
  120.                 "serviceId": 10000264823,
  121.                 "serviceLicence": "京ICP证030173号-17",
  122.                 "unitName": "北京百度网讯科技有限公司",
  123.                 "updateRecordTime": "2023-08-15 11:32:12"
  124.             },
  125.             {
  126.                 "contentTypeName": "",
  127.                 "domain": "17swan.com",
  128.                 "domainId": 10002983984,
  129.                 "leaderName": "",
  130.                 "limitAccess": "否",
  131.                 "mainId": 282751,
  132.                 "mainLicence": "京ICP证030173号",
  133.                 "natureName": "企业",
  134.                 "serviceId": 10000512823,
  135.                 "serviceLicence": "京ICP证030173号-26",
  136.                 "unitName": "北京百度网讯科技有限公司",
  137.                 "updateRecordTime": "2023-08-15 11:32:14"
  138.             },
  139.             {
  140.                 "contentTypeName": "",
  141.                 "domain": "eyoubaidu.com",
  142.                 "domainId": 10003061407,
  143.                 "leaderName": "",
  144.                 "limitAccess": "否",
  145.                 "mainId": 282751,
  146.                 "mainLicence": "京ICP证030173号",
  147.                 "natureName": "企业",
  148.                 "serviceId": 10000567969,
  149.                 "serviceLicence": "京ICP证030173号-28",
  150.                 "unitName": "北京百度网讯科技有限公司",
  151.                 "updateRecordTime": "2023-08-15 11:32:14"
  152.             }
  153.         ],
  154.         "navigatePages": 8,
  155.         "navigatepageNums": [
  156.             1,
  157.             2,
  158.             3,
  159.             4,
  160.             5,
  161.             6,
  162.             7,
  163.             8
  164.         ],
  165.         "nextPage": 2,
  166.         "pageNum": 1,
  167.         "pageSize": 10,
  168.         "pages": 27,
  169.         "prePage": 1,
  170.         "size": 10,
  171.         "startRow": 0,
  172.         "total": 264
  173.     },
  174.     "success": true
  175. }
复制代码
回复

使用道具 举报

1

主题

27

回帖

124

积分

新手上路

积分
124
发表于 2023-10-21 20:59:03| 显示全部楼层
请求的参数中,可以把下面的两个参数带值,第一个参数是第几页,正常1,第二个参数是一次返回的数据有多少行(个)可以写多点,把同一个icp备案下的所有备案域名都查出来。
  1. pageNum: 1
  2. pageSize: 40
复制代码

点评

好的,感谢大佬。  详情 回复 发表于 2023-10-21 22:48
回复

使用道具 举报

149

主题

556

回帖

4378

积分

管理员

积分
4378

论坛元老最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理

 楼主| 发表于 2023-10-21 22:48:33| 显示全部楼层
胖虎 发表于 2023-10-21 20:59
请求的参数中,可以把下面的两个参数带值,第一个参数是第几页,正常1,第二个参数是一次返回的数据有多少 ...

好的,感谢大佬。
网谋论坛 https://wm.lt
回复

使用道具 举报

0

主题

1

回帖

6

积分

新手上路

积分
6
发表于 2023-10-23 15:18:10| 显示全部楼层
用python改写了个版本
from flask import Flask, jsonify, request
import requests
import json
import random
import hashlib
from urllib.parse import urlparse
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

app = Flask(__name__)


def curl_post(url, data, content_type, token=None):
    ip = f"101.{random.randint(1, 255)}.{random.randint(1, 255)}.{random.randint(1, 255)}"
    headers = {
        "Content-Type": content_type,
        "Origin": "https://beian.miit.gov.cn/",
        "Referer": "https://beian.miit.gov.cn/",
        "User-Agent": ("Mozilla/5.0 (Windows NT 10.0; WOW64) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"),
        "CLIENT-IP": ip,
        "X-FORWARDED-FOR": ip
    }

    if token:
        headers["token"] = token

    response = requests.post(
        f"https://hlwicpfwc.miit.gov.cn/icpproject_query/api/{url}",
        data=data,
        headers=headers,
        verify=False,
        timeout=10
    )

    return response.content


def get_top_host(url):
    if "http" not in url:
        url = "http://" + url

    url = url.lower()
    parsed_url = urlparse(url)
    host = parsed_url.netloc
    data = host.split('.')
    n = len(data)

    domain_cn_patterns = ['com.cn', 'net.cn', 'org.cn', 'gov.cn', 'edu.cn']
    ip_pattern = (r'((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}')

    if n > 2 and any(pattern in host for pattern in domain_cn_patterns):
        host = f"{data[n-3]}.{data[n-2]}.{data[n-1]}"
    elif any(pattern in host for pattern in [ip_pattern]):
        pass
    else:
        host = f"{data[n-2]}.{data[n-1]}"

    return host


@app.route('/get-domain-info', methods=['GET'])
def get_domain_info():
    domain = request.args.get('domain')
    if not domain:
        return jsonify({"error": "缺少参数"}), 400

    domain = get_top_host(domain)
    time_stamp = str(int(requests.get('https://api.ipify.org?format=json').json()['ip'].split('.')[0]))
    auth_key = hashlib.md5(("testtest" + time_stamp).encode()).hexdigest()

    token_response = json.loads(curl_post(
        "auth", f"authKey={auth_key}&timeStamp={time_stamp}", "application/x-www-form-urlencoded;charset=UTF-8"))

    token = token_response["params"]["bussiness"]

    query_response = json.loads(curl_post(
        "icpAbbreviateInfo/queryByCondition",
        json.dumps({"pageNum": "", "pageSize": "", "serviceType": "1", "unitName": domain}),
        "application/json;charset=UTF-8",
        token
    ))

    query = query_response["params"]["list"][0]

    icp = query["serviceLicence"]
    unit_name = query["unitName"]
    nature_name = query["natureName"]

    if not token:
        icp = "服务器请求频率过高,请稍后再试"
        msg = "查询失败"
        code = "0"
    elif not icp:
        icp = "未备案"
        msg = "查询成功"
        code = "1"
    else:
        msg = "查询成功"
        code = "1"

    result = {
        'icp': icp,
        'unitName': unit_name,
        'natureName': nature_name,
        'msg': msg,
        'result': code
    }

    return app.response_class(
        response=json.dumps(result, ensure_ascii=False),
        status=200,
        mimetype='application/json'
    )



if __name__ == '__main__':
    app.run(debug=True)

评分

参与人数 1金币 +666 收起 理由
Xidorn + 666 很给力!

查看全部评分

回复

使用道具 举报

149

主题

556

回帖

4378

积分

管理员

积分
4378

论坛元老最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理

 楼主| 发表于 2023-10-23 20:44:04| 显示全部楼层
rocky 发表于 2023-10-23 15:18
用python改写了个版本
from flask import Flask, jsonify, request
import requests

感谢分享!
网谋论坛 https://wm.lt
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回顶部