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

158 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

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

⛳️ 实战场景

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

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

重新梳理一下需求:

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

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

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

ping meituan.com

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

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

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

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

# IP反查绑定域名的站点
site.ip138.com
ipchaxun.com
dns.aizhan.com

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

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

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

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

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

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

记录如下内容:

  • 接口地址:site.ip138.com/index/query…
  • 请求方式: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"},……]}

失败

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

成功与失败的返回结果差异在 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)

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

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

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

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