记得首先要安装对应的模块。
import requests
import whois
import socket
import sys
import os
url = "www.xiaodi8.com"
ip = socket.gethostbyname(url) # 获取IP
print(ip)
cdn_data = os.popen('nslookup www.xiaodi8.com') # 判断是否存在CDN
cdn_datas = cdn_data.read()
print(cdn_datas)
c = cdn_datas.count('.')
if c > 10:
print('存在CDN')
else:
print('不存在CDN')
data_who = whois.whois('www.xiaodi8.com') # whois 查询
print (data_who)
# 端口扫描
ports = {'21','22','25','80','443','8080','8888','3306'}
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建一个TCP/IP套接字对象
for port in ports:
data_ip = server.connect_ex((ip,int(port)))
if data_ip == 0:
print(ip + ":" + port + "|open")
else:
print(ip + ":" + port + "|close")
因为自己也是第一次用这个,所以这里对server.connect_ex方法做一个简单介绍:
server.connect_ex(address)是一个套接字对象的方法,用于尝试与指定的地址进行连接。它与server.connect(address)方法类似,但是不同的是,如果连接成功,它会返回0,如果连接失败,它会返回一个错误码。这个方法通常用于非阻塞的套接字连接操作,可以通过检查返回值来判断连接是否成功。
另外!这个判断CDN的方法一点都不准确(我也不知道这个命令是视频里教的),建议友友们还是用超级ping来判断吧!
下面的是我把其代码封装在函数里了,可以给友友们做个参考。
import requests
import whois
import socket
import sys
import os
def find_ip(url): # 查询ip
ip = socket.gethostbyname(url)
print(ip)
def whois_ip(url): # whois查询
ip_whois = whois.whois(url)
print(ip_whois)
def ports_find(url): # 端口扫描
ip = socket.gethostbyname(url)
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
for port in range(1,65536):
data_ip = server.connect_ex((ip,port))
if data_ip == 0:
print(ip + ":" + str(port) + "|open")
else:
print(ip + ":" + str(port) + "|close")
url = "www.xiaodi8.com"
find_ip(url)
whois_ip(url)
ports_find(url)