爬虫的话以前一直尝试使用re通过正则模块去提取信息的,但是有时候正则会遇到一些奇奇怪怪的问题,所以就很有必要来学习一下 Beautiful Soup 爬虫框架了。

模块

import os
import re
import time
import socket
import requests
import argparse
import progressbar
import prettytable as pt
from bs4 import BeautifulSoup

本脚本基于 Python3 编写,使用前得安装一下依赖的第三方模块:

pip3 install requests
pip3 install progressbar2
pip3 install prettytable
pip install beautifulsoup4

系统模块

模块 作用
os 程序中断
re 正则提取信息
time 倒计时延时使用
socket 域名解析对应IP
argparse 命令行下的参数模块

第三方模块

模块 作用
requests 发起一次基本的http请求
progressbar2 进度展示使用 提高使用体验
prettytable 终端下表格输出
BeautifulSoup4 BS4爬虫框架 用于信息提取清洗

接口

云溪接口

yunsee_url = 'http://www.yunsee.cn'
api_url = yunsee_url + '/home/getInfo'

web_info = '''type=webinfo&string=d879af585g54df45&url={domain}&_token=DsFJtsh8eUeH28GYRtklTSYzK00vovLoDxuDkWU1'''.format(domain=domain)

web_sub = '''type=websub&string=d879af585g54df45&url={domain}&_token=DsFJtsh8eUeH28GYRtklTSYzK00vovLoDxuDkWU1'''.format(domain=domain)

其中web_info接口是云溪自带的基础信息接口,web_sub是云溪的子域名查询接口,云溪接口的子域名查询很全,弊端就是普通用户的 API 查询频率不可以过快,经过测试大约在 45 秒左右可以查询一次。

# 基础信息正则
ip_pattern = re.compile(r'"ip":"(.*?)"')
ip = ip_pattern.findall(web_info_response.text)[0]

idc_pattern = re.compile(r'"idc":"(.*?)"')
idc = idc_pattern.findall(web_info_response.text)[0]

server_pattern = re.compile(r'"server":"(.*?)"')
server = server_pattern.findall(web_info_response.text)[0]

whois_dns_pattern = re.compile(r'"whois_dns":"(.*?)"')
whois_dns = whois_dns_pattern.findall(web_info_response.text)[0]

whois_mail_pattern = re.compile(r'"whois_mail":"(.*?)"')
whois_mail = whois_mail_pattern.findall(web_info_response.text)[0]

whois_isp_pattern  = re.compile(r'"whois_isp":"(.*?)"')
whois_isp = whois_isp_pattern.findall(web_info_response.text)[0]

title_pattern = re.compile(r'"title":"(.*?)"')
title = title_pattern.findall(web_info_response.text)[0]

cdn_pattern = re.compile(r'"cdn":"(.*?)"')
cdn = cdn_pattern.findall(web_info_response.text)[0]

cms_pattern = re.compile(r'"cms":"(.*?)"')
cms = cms_pattern.findall(web_info_response.text)[0]

waf_pattern = re.compile(r'"waf":"(.*?)"')
waf = waf_pattern.findall(web_info_response.text)[0]

# 子域名正则
subs_pattern = re.compile(r'{"domain":"(.*?)"')
subs = subs_pattern.findall(web_sub_response.text)

爱站接口

aizhan_url = "https://www.aizhan.com/seo/{domain}/".format(domain=domain)
aizhan_base = requests.get(url=aizhan_url,headers=aizhan_headers,timeout=6)

爱站的接口这里主要就爬取了 SEO 权重相关的信息

爬取规则如下:

# 百度权重
baidurank_pattern = re.compile(r'br/(.*?).png')
baidurank = baidurank_pattern.findall(aizhan_base.text)[0]

# 移动权重
baidurank_mbr_pattern = re.compile(r'mbr/(.*?).png')
baidurank_mbr = baidurank_mbr_pattern.findall(aizhan_base.text)[0]

#搜狗权重
sogou_pr_pattern = re.compile(r'sr/(.*?).png')
sogou_pr = sogou_pr_pattern.findall(aizhan_base.text)[0]

shodan 接口

shodan_url = "https://www.shodan.io/host/{ip}".format(ip=ip)
shodan_response = requests.get(url=shodan_url,headers=shodan_headers,timeout=15)

shodan 物联网搜索引擎,在端口探测这块信息还是比较专业的,这里提取了端口和漏洞检测信息的数据:

# bs4提取端口信息
shodan_soup = BeautifulSoup(shodan_response.text,'html.parser')
ports_soup = shodan_soup.select('.ports a')

# re正则提取漏洞信息
vuls_pattern = re.compile(r'min-width:100px">(.*?)<')
vuls = vuls_pattern.findall(shodan_response.text)

考虑到现在网站 SSL 开启的比较多,如果开启 SS L的话还可以利用 SSL 反查查询更多子域名相关信息,所以这里还添加了 SSL检测的判断:

ssl_soup = shodan_soup.select('.state')
flag = False
tb_ssl = pt.PrettyTable(["SSL是否启用"])
for ssl in ssl_soup:
  if "https" in ssl.string:
    flag = True
  if flag:
      tb_ssl.add_row(["是"])
    else:
        tb_ssl.add_row(["否"])

bs4 提取 http 相关信息,如果里面存在https相关字样的话,说明网站开启了 SSL

代码

import os
import re
import time
import socket
import requests
import argparse
import progressbar
import prettytable as pt
from bs4 import BeautifulSoup

def main():
    parser= argparse.ArgumentParser()
    parser.add_argument('-u','--url',dest='url',help="input site's domain")
    args = parser.parse_args()

    if args.url == None:
        parser.print_help()
        os._exit(0)

    return args.url

def yunsee(domain):
    headers = {
        'Host':'www.yunsee.cn',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
        'Cookie':'{这里填入你的云溪Cookie 你如果没有云溪账号的话 那就尴尬了}',
        'Content-Type': 'application/x-www-form-urlencoded;'
    }

    yunsee_url = 'http://www.yunsee.cn'
    api_url = yunsee_url + '/home/getInfo'
    web_info = '''type=webinfo&string=d879af585g54df45&url={domain}&_token=DsFJtsh8eUeH28GYRtklTSYzK00vovLoDxuDkWU1'''.format(domain=domain)
    web_sub = '''type=websub&string=d879af585g54df45&url={domain}&_token=DsFJtsh8eUeH28GYRtklTSYzK00vovLoDxuDkWU1'''.format(domain=domain)

    aizhan_headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36',
        'Content-Type': 'application/x-www-form-urlencoded',
    }

    # 爱站接口
    aizhan_url = "https://www.aizhan.com/seo/{domain}/".format(domain=domain)
    aizhan_base = requests.get(url=aizhan_url,headers=aizhan_headers,timeout=6)

    # 百度权重
    baidurank_pattern = re.compile(r'br/(.*?).png')
    baidurank = baidurank_pattern.findall(aizhan_base.text)[0]

    # 移动权重
    baidurank_mbr_pattern = re.compile(r'mbr/(.*?).png')
    baidurank_mbr = baidurank_mbr_pattern.findall(aizhan_base.text)[0]

    #搜狗权重
    sogou_pr_pattern = re.compile(r'sr/(.*?).png')
    sogou_pr = sogou_pr_pattern.findall(aizhan_base.text)[0]

    try:
        # 基本信息
        web_info_response = requests.post(url=api_url,headers=headers,data=web_info)

        # 子域名信息
        web_sub_response = requests.post(url=api_url,headers=headers,data=web_sub)

        # 基础信息正则
        ip_pattern = re.compile(r'"ip":"(.*?)"')
        ip = ip_pattern.findall(web_info_response.text)[0]

        idc_pattern = re.compile(r'"idc":"(.*?)"')
        idc = idc_pattern.findall(web_info_response.text)[0]

        server_pattern = re.compile(r'"server":"(.*?)"')
        server = server_pattern.findall(web_info_response.text)[0]

        whois_dns_pattern = re.compile(r'"whois_dns":"(.*?)"')
        whois_dns = whois_dns_pattern.findall(web_info_response.text)[0]

        whois_mail_pattern = re.compile(r'"whois_mail":"(.*?)"')
        whois_mail = whois_mail_pattern.findall(web_info_response.text)[0]

        whois_isp_pattern  = re.compile(r'"whois_isp":"(.*?)"')
        whois_isp = whois_isp_pattern.findall(web_info_response.text)[0]

        title_pattern = re.compile(r'"title":"(.*?)"')
        title = title_pattern.findall(web_info_response.text)[0]

        cdn_pattern = re.compile(r'"cdn":"(.*?)"')
        cdn = cdn_pattern.findall(web_info_response.text)[0]

        cms_pattern = re.compile(r'"cms":"(.*?)"')
        cms = cms_pattern.findall(web_info_response.text)[0]

        waf_pattern = re.compile(r'"waf":"(.*?)"')
        waf = waf_pattern.findall(web_info_response.text)[0]

        # 子域名正则
        subs_pattern = re.compile(r'{"domain":"(.*?)"')
        subs = subs_pattern.findall(web_sub_response.text)

        # shodan接口
        shodan_headers = {
            'Host':'www.shodan.io',
            'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36',
            'Content-Type': 'application/x-www-form-urlencoded',
        }
        shodan_url = "https://www.shodan.io/host/{ip}".format(ip=ip)
        shodan_response = requests.get(url=shodan_url,headers=shodan_headers,timeout=15)
        shodan_soup = BeautifulSoup(shodan_response.text,'html.parser')


        ports_soup = shodan_soup.select('.ports a')
        print("\033[0;31m 开放端口 \033[0m")
        for port in ports_soup:
            print("{port}".format(port=str(port.string)),end="\t")

        print("\n")
        print("\033[0;32m 漏洞检测 \033[0m")
        vuls_pattern = re.compile(r'min-width:100px">(.*?)<')
        vuls = vuls_pattern.findall(shodan_response.text)

        tb_vul = pt.PrettyTable(["编号"])
        if vuls:
            for vul in vuls:
                tb_vul.add_row([vul])
        else:
            tb_vul.add_row(["暂未发现漏洞"])

        print(tb_vul)
        print("\n")

        ssl_soup = shodan_soup.select('.state')
        flag = False
        tb_ssl = pt.PrettyTable(["SSL是否启用"])
        for ssl in ssl_soup:
            if "https" in ssl.string:
                flag = True
        if flag:
            tb_ssl.add_row(["是"])
        else:
            tb_ssl.add_row(["否"])

        print(tb_ssl)
        print("\n")

        tb_info = pt.PrettyTable(["域名","IP","IDC","指纹"])
        tb_info.add_row([domain,ip,idc,server])
        print("\033[0;35m 基础信息 \033[0m")
        print(tb_info)
        print("\n")

        tb_seo = pt.PrettyTable(["百度","移动","搜狗"])
        tb_seo.add_row([baidurank,baidurank_mbr,sogou_pr])
        print("\033[0;33m 权重信息 \033[0m")
        print(tb_seo)
        print("\n")

        tb_dns = pt.PrettyTable(["DNS","邮箱","ISP"])
        tb_dns.add_row([whois_dns,whois_mail,whois_isp])
        print("\033[0;34m DNS信息 \033[0m")
        print(tb_dns)
        print("\n")

        tb_sec = pt.PrettyTable(["标题","CDN","CMS","WAF"])
        tb_sec.add_row([title,cdn,cms,waf])
        print("\033[0;35m 进阶信息 \033[0m")
        print(tb_sec)
        print("\n")

        print("\033[0;32m 正在查询子域名相关信息,请稍等... \033[0m\n")
        tb_sub = pt.PrettyTable(["子域名","IP"])
        # 查询子域名IP和归属地
        for sub in subs:
            try:
                ip = socket.gethostbyname(sub)
                tb_sub.add_row([sub,ip])
            except Exception as e:
                tb_sub.add_row([sub,"域名解析异常"])

            progress = int(((subs.index(sub))/(len(subs)))*100)
            print("{progress}%  {subdomain}".format(progress=progress,subdomain=sub),end="\r")

        print(tb_sub)


    except Exception as e:
        print(e)
        print("\033[0;31m 查询频率过高,请过45秒后再查询 \033[0m")
        p = progressbar.ProgressBar()
        for i in p(range(45)):
            time.sleep(1)

if __name__ == "__main__":
    domain = main()

    logo = '''\033[0;32m
                   _        ___      
                  (_)      / __)     
 _ _ _ _ _ _ _ _ _ _ ____ | |__ ___  
| | | | | | | | | | |  _ \|  __) _ \ 
| | | | | | | | | | | | | | | | |_| |
 \____|\____|\____|_|_| |_|_|  \___/ 

    \033[0m'''
    print(logo)
    print("正在查询 {domain} 相关信息,请稍等\n".format(domain=domain))
    yunsee(domain)

用法

此脚本用了云溪的接口,所以你得有云溪账号才可以愉快地使用,用之前替换好自己的 Cookie 即可:

def yunsee(domain):
    headers = {
        'Host':'www.yunsee.cn',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
        'Cookie':'{这里填入你的云溪Cookie 你如果没有云溪账号的话 那就尴尬了}',
        'Content-Type': 'application/x-www-form-urlencoded;'
    }

把上面的Cookie换成自己的 Cookie 即可,用法很简单:

$ python3 yunsee.py --help
usage: yunsee.py [-h] [-u URL]

optional arguments:
  -h, --help         show this help message and exit
  -u URL, --url URL  input site's domain

效果

云溪在爬取子域名这块还是很强大的,下面的具体的查询效果:

正在查询子域名相关信息,请稍等...

+---------------------------+-----------------+
|           子域名          |        IP       |
+---------------------------+-----------------+
|     metc.njupt.edu.cn     | 202.119.224.202 |
|     skie.njupt.edu.cn     |   域名解析异常  |
|    ciciot.njupt.edu.cn    | 202.119.224.202 |
|      ip.njupt.edu.cn      | 202.119.224.202 |
|  faculty.cs.njupt.edu.cn  |  180.209.64.45  |
|     bwcsn.njupt.edu.cn    | 202.119.224.202 |
|      lib.njupt.edu.cn     | 202.119.224.202 |
|      bc.njupt.edu.cn      | 202.119.224.202 |
|    nerccn.njupt.edu.cn    | 202.119.224.202 |
|     zcgs.njupt.edu.cn     | 202.119.224.202 |
|      edu.njupt.edu.cn     | 202.119.224.202 |
|      yjs.njupt.edu.cn     | 202.119.226.177 |
|      cm.njupt.edu.cn      | 202.119.224.202 |
|      3s.njupt.edu.cn      | 202.119.224.202 |
|     youth.njupt.edu.cn    | 202.119.224.202 |
|     xq70.njupt.edu.cn     | 202.119.224.202 |
|     jgdw.njupt.edu.cn     | 202.119.224.202 |
|     solab.njupt.edu.cn    | 202.119.224.202 |
|      dwb.njupt.edu.cn     |   域名解析异常  |
|     rflab.njupt.edu.cn    |  180.209.64.25  |
|     jsfz.njupt.edu.cn     | 202.119.224.202 |
|      pay.njupt.edu.cn     | 202.119.226.204 |
|     nysk.njupt.edu.cn     |  180.209.98.38  |
| cybersec2017.njupt.edu.cn |   域名解析异常  |
|      zbb.njupt.edu.cn     |  180.209.98.61  |
|      stu.njupt.edu.cn     |  180.209.97.28  |
|     sast.njupt.edu.cn     |  180.209.98.77  |
|      zs.njupt.edu.cn      | 202.119.224.202 |
|      xcb.njupt.edu.cn     | 202.119.224.202 |
|      xsc.njupt.edu.cn     | 202.119.224.202 |
|    xsswzx.njupt.edu.cn    |   域名解析异常  |
|      kyy.njupt.edu.cn     | 202.119.224.202 |
|   idssrv01.njupt.edu.cn   |  202.119.226.99 |
|      jwc.njupt.edu.cn     | 202.119.224.202 |
|      rs.njupt.edu.cn      | 202.119.226.177 |
|     nyzr.njupt.edu.cn     |  180.209.98.46  |
|     jxcg.njupt.edu.cn     | 202.119.224.202 |
|     fzghc.njupt.edu.cn    | 202.119.224.202 |
|     xsgl.njupt.edu.cn     |  180.209.97.28  |
|      ipr.njupt.edu.cn     | 202.119.224.202 |
|      ict.njupt.edu.cn     | 202.119.224.202 |
|     nykjy.njupt.edu.cn    | 202.119.224.202 |
|      shs.njupt.edu.cn     | 202.119.224.202 |
|     paxy.njupt.edu.cn     |   域名解析异常  |
|    mirrors.njupt.edu.cn   |  180.209.98.28  |
|      mba.njupt.edu.cn     | 202.119.224.202 |
|   shijiuda.njupt.edu.cn   | 202.119.224.202 |
|      xb.njupt.edu.cn      | 202.119.224.202 |
|     cicic.njupt.edu.cn    | 202.119.224.202 |
|    gonghui.njupt.edu.cn   | 202.119.224.202 |
|      su.njupt.edu.cn      | 202.119.224.202 |
|     xjjs.njupt.edu.cn     | 202.119.224.202 |
|     ciot.njupt.edu.cn     | 202.119.224.202 |
|   overseas.njupt.edu.cn   | 202.119.224.202 |
|      gjs.njupt.edu.cn     | 202.119.224.202 |
|      zx.njupt.edu.cn      |  180.209.98.77  |
|     mdis.njupt.edu.cn     | 202.119.224.202 |
|      tu.njupt.edu.cn      | 202.119.224.202 |
|      bis.njupt.edu.cn     |   域名解析异常  |
|       c.njupt.edu.cn      |  180.209.98.122 |
|     lrme.njupt.edu.cn     | 202.119.224.202 |
|    iotlab.njupt.edu.cn    | 202.119.224.202 |
|      ky.njupt.edu.cn      |   域名解析异常  |
|   main.jjy.njupt.edu.cn   |   域名解析异常  |
|      rsc.njupt.edu.cn     | 202.119.224.202 |
|     news.njupt.edu.cn     | 202.119.224.202 |
|      my.njupt.edu.cn      | 202.119.226.237 |
|      job.njupt.edu.cn     |   域名解析异常  |
|      ygb.njupt.edu.cn     | 202.119.224.202 |
|     blog.njupt.edu.cn     |   域名解析异常  |
|      au.njupt.edu.cn      |   域名解析异常  |
|   rima-lab.njupt.edu.cn   |  180.209.64.59  |
|     gdgc.njupt.edu.cn     | 202.119.224.202 |
|     cclab.njupt.edu.cn    |   180.209.64.7  |
|     jxzx.njupt.edu.cn     | 202.119.224.202 |
|      qh.njupt.edu.cn      |   域名解析异常  |
|     lhbgs.njupt.edu.cn    | 202.119.224.202 |
|      cwc.njupt.edu.cn     | 202.119.224.202 |
|      bbs.njupt.edu.cn     |  202.119.224.80 |
|      xl.njupt.edu.cn      | 202.119.224.202 |
|     iids.njupt.edu.cn     | 202.119.224.202 |
|     syssh.njupt.edu.cn    | 202.119.224.202 |
|     jwxt.njupt.edu.cn     |  202.119.225.34 |
|      dag.njupt.edu.cn     | 202.119.224.202 |
|    edulab.njupt.edu.cn    | 202.119.224.202 |
|      acm.njupt.edu.cn     |  180.209.96.50  |
|    coalab.njupt.edu.cn    |  180.209.64.17  |
|     ids6.njupt.edu.cn     | 202.119.226.204 |
|     zscx.njupt.edu.cn     | 202.119.224.101 |
|      iam.njupt.edu.cn     | 202.119.224.202 |
|     jjxy.njupt.edu.cn     | 202.119.224.202 |
|     mydzz.njupt.edu.cn    | 202.119.224.202 |
|      eoe.njupt.edu.cn     | 202.119.224.202 |
|    jjycjcx.njupt.edu.cn   |  202.119.236.90 |
|     eelab.njupt.edu.cn    | 202.119.224.202 |
|     jfiot.njupt.edu.cn    |   域名解析异常  |
|      kj.njupt.edu.cn      | 202.119.226.204 |
|    gdgcsys.njupt.edu.cn   | 202.119.224.202 |
|      yzb.njupt.edu.cn     | 202.119.224.202 |
|      lxy.njupt.edu.cn     | 202.119.224.202 |
|     pigai.njupt.edu.cn    |  180.209.64.13  |
|      wcd.njupt.edu.cn     | 202.119.224.202 |
|      txg.njupt.edu.cn     | 202.119.224.202 |
|    eselab.njupt.edu.cn    |  180.209.64.25  |
|      bwc.njupt.edu.cn     | 202.119.224.202 |
|    kaoyan.njupt.edu.cn    | 202.119.236.119 |
|      skc.njupt.edu.cn     |   域名解析异常  |
|     jwc1.njupt.edu.cn     |   域名解析异常  |
|     dzkx.njupt.edu.cn     | 202.119.224.202 |
|     simp.njupt.edu.cn     | 202.119.224.202 |
|     ladzz.njupt.edu.cn    | 202.119.224.202 |
|      xxb.njupt.edu.cn     | 202.119.224.202 |
|      jnb.njupt.edu.cn     | 202.119.224.202 |
|      fld.njupt.edu.cn     | 202.119.224.202 |
|      lab.njupt.edu.cn     | 202.119.224.202 |
|     ntyjy.njupt.edu.cn    | 202.119.224.202 |
|     sxsy.njupt.edu.cn     |  180.209.64.29  |
|      dx.njupt.edu.cn      | 202.119.224.202 |
|     ydxy.njupt.edu.cn     |  202.119.225.55 |
|    pgyouth.njupt.edu.cn   | 202.119.224.202 |
|   iske2017.njupt.edu.cn   |   域名解析异常  |
|     wicom.njupt.edu.cn    | 202.119.224.202 |
|      iot.njupt.edu.cn     | 202.119.224.202 |
|      ccs.njupt.edu.cn     |   域名解析异常  |
|     bdsip.njupt.edu.cn    | 202.119.224.202 |
|     cwcxx.njupt.edu.cn    | 202.119.226.204 |
|      sjc.njupt.edu.cn     | 202.119.224.202 |
|      hqc.njupt.edu.cn     | 202.119.224.202 |
|      www.njupt.edu.cn     | 202.119.224.201 |
|     oelab.njupt.edu.cn    | 202.119.224.202 |
|      ac.njupt.edu.cn      | 202.119.224.202 |
|      pg.njupt.edu.cn      | 202.119.224.202 |
|      lx.njupt.edu.cn      |   域名解析异常  |
|     ctie.njupt.edu.cn     | 202.119.224.202 |
|     tdxy.njupt.edu.cn     |   域名解析异常  |
|      zzb.njupt.edu.cn     | 202.119.224.202 |
|      cs.njupt.edu.cn      | 202.119.224.202 |
|     class.njupt.edu.cn    | 202.119.226.204 |
|      xyh.njupt.edu.cn     | 202.119.224.202 |
|      gfs.njupt.edu.cn     | 202.119.224.202 |
|     bclab.njupt.edu.cn    | 202.119.224.202 |
|      rwy.njupt.edu.cn     | 202.119.224.202 |
|  ciot.wicom.njupt.edu.cn  | 202.119.224.202 |
|     email.njupt.edu.cn    |  202.119.224.11 |
|     pgrc.njupt.edu.cn     | 202.119.224.202 |
|   idssrv02.njupt.edu.cn   | 202.119.226.100 |
|     xyzd.njupt.edu.cn     | 202.119.224.202 |
|    marxism.njupt.edu.cn   | 202.119.224.202 |
|      kjc.njupt.edu.cn     |   域名解析异常  |
|     mail.njupt.edu.cn     |  202.119.224.11 |
|      coa.njupt.edu.cn     | 202.119.224.202 |
|      qks.njupt.edu.cn     | 202.119.224.202 |
|      tzb.njupt.edu.cn     | 202.119.224.202 |
|      mcm.njupt.edu.cn     | 202.119.224.202 |
|    sicoeid.njupt.edu.cn   | 202.119.224.202 |
|      jjy.njupt.edu.cn     | 202.119.224.202 |
|   ycbigdata.njupt.edu.cn  | 202.119.224.202 |
|     txlab.njupt.edu.cn    | 202.119.224.202 |
|   zccx.tyb.njupt.edu.cn   | 202.119.224.193 |
|      jw.njupt.edu.cn      | 202.119.224.202 |
|      em.njupt.edu.cn      |  202.119.224.11 |
|      dns.njupt.edu.cn     |  202.119.230.8  |
|      vpn.njupt.edu.cn     |  218.2.103.165  |
| autodiscover.njupt.edu.cn |  42.159.161.152 |
|     ddh3.njupt.edu.cn     | 202.119.224.202 |
|      sip.njupt.edu.cn     |   42.159.34.46  |
|      ns.njupt.edu.cn      |  202.119.230.10 |
|      yw.njupt.edu.cn      |   10.22.190.9   |
|    portal.njupt.edu.cn    | 202.119.226.177 |
|    summer.njupt.edu.cn    |  180.209.98.40  |
|     tour.njupt.edu.cn     |  180.209.98.69  |
|      cc.njupt.edu.cn      | 202.119.224.202 |
|     data.njupt.edu.cn     | 202.119.226.204 |
|      ykt.njupt.edu.cn     |  202.119.226.89 |
|     admin.njupt.edu.cn    |  202.119.224.70 |
|    wechat.njupt.edu.cn    |  180.209.97.92  |
|     xcbgs.njupt.edu.cn    | 202.119.224.202 |
|     msoid.njupt.edu.cn    |  42.159.233.91  |
|    campus.njupt.edu.cn    |   180.209.64.8  |
|    ctielab.njupt.edu.cn   |  180.209.96.19  |
|     zcyjs.njupt.edu.cn    |   域名解析异常  |
|     cloud.njupt.edu.cn    |   10.22.242.2   |
|     home.njupt.edu.cn     |  180.209.97.41  |
| lyncdiscover.njupt.edu.cn |   42.159.34.45  |
|     airb.njupt.edu.cn     | 202.119.224.202 |
|   software.njupt.edu.cn   |  202.119.224.18 |
|    kloeid.njupt.edu.cn    | 202.119.224.202 |
+---------------------------+-----------------+

支持一下

本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

微信
支付宝

没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光