大连设计网站公司,台州手机网站制作,网络营销资讯网站,自贡 网站建设sock.connect_ex
使用socket模块的connect_ex来判断端口是否打开#xff0c;如果返回值是0表示连接成功#xff0c;端口打开#xff0c;否则端口关闭。
import socketdef check_port(ip, port): sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeo…sock.connect_ex
使用socket模块的connect_ex来判断端口是否打开如果返回值是0表示连接成功端口打开否则端口关闭。
import socketdef check_port(ip, port): sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) try: result sock.connect_ex((ip, port)) if result 0: return Trueelse: return Falseexcept Exception as e: print(f错误: {str(e)}) finally: sock.close()host localhost
port 80
if check_port(host, port):print(fThe port {port} on {host} is open.)
else:print(fThe port {port} on {host} is closed.)sock.connect
使用socket模块的connect来判断端口是否打开如果未发生异常表示连接成功端口打开否则端口关闭。
import socketdef check_port(host, port):try:sock socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(1)sock.connect((host, port))sock.close()return Trueexcept:return Falsefinally: sock.close()telnet命令
调用telnet命令来判断端口是否打开。 使用telnet命令在大多数操作系统中telnet命令可以用于测试端口是否开放。你可以在命令行中输入telnet IP地址 端口如果端口是开放的则telnet会连接成功并返回一些信息。否则它将返回一个错误消息。
import os def check_port(ip, port): result os.system(ftelnet {ip} {port} /dev/null 21) if result 0: print(f端口 {port} 是开放的) else: print(f端口 {port} 是关闭的)nc命令
使用nc命令也称为netcatnc命令是一个强大的工具可以用于测试端口是否开放。你可以在命令行中输入nc -zv IP地址 端口如果端口是开放的则nc会连接成功并返回一些信息。否则它将返回一个错误消息。
import os def check_port(ip, port): result os.system(fnc -zv {ip} {port} /dev/null 21) if result 0: print(f端口 {port} 是开放的) else: print(f端口 {port} 是关闭的)ping命令
使用ping命令ping命令可以用于测试网络连接是否畅通也可以用于检查端口是否开放。在命令行中输入ping IP地址 -n 端口如果端口是开放的则ping会返回一些信息。否则它将返回一个错误消息。
import os def check_port(ip, port): result os.system(fping {ip} -n {port} /dev/null 21) if result 0: print(f端口 {port} 是开放的) else: print(f端口 {port} 是关闭的)注意如果目标服务器禁用ping就无法判断出来了。
requests检查http端口
requests库是Python的一个HTTP库可以用来发送所有类型的HTTP请求包括GET、POST、PUT、DELETE等。它也可以用来处理cookies、会话、重定向等。
要检查一个端口是否开放我们通常会使用requests库来尝试向该端口发送HTTP请求并查看是否能够成功连接。以下是一个简单的示例
import requests def check_port(ip, port): try: response requests.get(fhttp://{ip}:{port}) if response.status_code 200: print(f端口 {port} 是开放的) else: print(f端口 {port} 是关闭的) except requests.exceptions.ConnectionError: print(f端口 {port} 是关闭的)在上述代码中我们使用requests.get方法向指定的IP地址和端口发送GET请求。如果请求成功并且返回的状态码为200则表示该端口是开放的。如果发生requests.exceptions.ConnectionError异常则表示该端口是关闭的。requests检查端口方法仅适用于HTTP和HTTPS端口。
Scapy
Scapy是一个强大的Python库用于创建、解析、发送、接收并解析网络数据包。使用Scapy来检查端口是否开放。
from scapy.all import * def check_port(ip, port): # 构造一个ICMP数据包并发送到目标IP地址和端口 packet IP(dstip) / ICMP() / Raw(loadstr(port)) # 发送数据包并获取响应 response sr1(packet, timeout1) # 检查响应是否为ICMP错误类型 if response is None or response.type ! ICMP.DEST_UNREACH: print(f端口 {port} 是开放的) else: print(f端口 {port} 是关闭的) # 测试函数
check_port(127.0.0.1, 80)我们使用Scapy构造了一个ICMP数据包并将目标端口作为负载包含在其中。然后我们发送该数据包并等待响应。如果响应是ICMP错误类型目的地不可达则表示端口是关闭的。否则表示端口是开放的。这种方法只适用于ICMP端口扫描。对于其他类型的端口扫描如TCP或UDP端口扫描需要使用不同的协议和字段。