• 【妙】IP,域名,爬虫,这三个关键词之间的微关系


    你在编程的学习过程中,碰到问题了么?来看看这篇博客能否解决吧!

    ⛳️ 实战场景

    在公司编写代码的时候,会碰到这样的情况,需要检查某域名解析的目标服务器 IP,即通过域名查询其服务器地址。
    在此基础上,还需要查询对应 IP 是否绑定其它站点。

    为了便于分析,我们需要将解析到目标服务器的域名采集到本地。

    重新梳理一下需求:

    1. 通过域名获取服务器 IP,使用 ping 直接实现;
    2. 通过服务器 IP 获取解析到该 IP 的站点域名,通过第三方站点实现;
    3. 下载域名保存到本地,通过 requests 模块实现。

    ⛳️ 第一步:通过域名获取 IP

    该步骤非常简单,使用控制台即可实现,命令如下所示:

    ping meituan.com
    
    • 1

    命令运行结果如下,记录该 IP 值。

    【妙】IP,域名,爬虫,这三个关键词之间的微关系

    ⛳️ 第二步:查询 IP 绑定哪些域名

    本步骤需要用到第三方工具,常用的站点有如下三个:

    # IP反查绑定域名的站点
    site.ip138.com
    ipchaxun.com
    dns.aizhan.com
    
    • 1
    • 2
    • 3
    • 4

    参考下图输入前文得到的 IP 信息,可以查询到本 IP 绑定过的域名清单。

    【妙】IP,域名,爬虫,这三个关键词之间的微关系

    接下来的任务就进入编码环节了,使用 requests 模块请求站点,并采集数据。

    ⛳️ 第三步:采集域名清单

    模块安装不做过多说明,直接进行编码实践,对目标页面进行简单分析,尝试获取接口。
    多次测试找到如下接口信息。

    【妙】IP,域名,爬虫,这三个关键词之间的微关系

    记录如下内容:

    • 接口地址:https://site.ip138.com/index/querybyip/
    • 请求方式:GET
    • 请求参数:ip=101.236.12.4&page=2&token=token 值,其中 ippagetoken 为核心值。

    循环终止的条件通过对比数据得出。
    成功

    {"status":true,"code":21000,"msg":"\u8fd4\u56de\u6210\u529f","data":[{"domain":"bazhong.meituan.com","addtime":"20190814","uptime":"20220716"},……]}
    
    • 1

    失败

    {"status":true,"code":21000,"msg":"\u8fd4\u56de\u6210\u529f"}
    
    • 1

    成功与失败的返回结果差异在 data 参数值中。

    基于上述整理,编码如下:

    import time
    
    import requests
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
        "Host": "site.ip138.com",
        "Referer": "https://site.ip138.com/101.236.12.4/"}
    
    
    def get_domain(url):
        res = requests.get(url, headers=headers)
        print(res.text)
        return res.json()
    
    
    if __name__ == '__main__':
        page = 0
        while True:
            page += 1
            base_url = f'https://site.ip138.com/index/querybyip/?ip=101.236.12.4&page={page}&token=可以直接复制接口中的数据'
            print("正在采集",base_url)
            data = get_domain(base_url)
            if "data" not in data:
                break
            time.sleep(3)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    代码运行之后,即可获取最终结果。

    【妙】IP,域名,爬虫,这三个关键词之间的微关系

    接下来的事情就交给大家独立完成了,需要将采集的 JSON 数据通过 Python 对应模块,保存到数据库或者本地文件中。

    📢📢📢📢📢📢
    💗 你正在阅读 【梦想橡皮擦】 的博客
    👍 阅读完毕,可以点点小手赞一下
    🌻 发现错误,直接评论区中指正吧
    📆 橡皮擦的第 734 篇原创博客

    从订购之日起,案例 5 年内保证更新

  • 相关阅读:
    【网络通信三要素】TCP与UDP快速入门
    波奇学C++:继承
    天猫精灵、Blinker 控制esp32自带灯熄灭---Micropython版本
    30分钟入门前端容器化
    《深入理解Spark RDD缓存机制》(第4天)
    腾讯云数据库公有云市场稳居TOP 2!
    thinkphp csv格式导入导出
    【鸿蒙(HarmonyOS)】List列表、ArkUI资源组数据类型
    FL Studio21水果编曲软件如何切换成官方中文版
    Web跨域问题
  • 原文地址:https://blog.csdn.net/hihell/article/details/127441920