记录一次无聊的爬虫练习
爬虫的话以前一直尝试使用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 重写了一个页面用以感谢支持我的朋友,详情请看 打赏列表 | 国光
评论



