当前位置:首页 > 运维技术 > 正文

域名端口怎么检测?网站端口扫描工具最全推荐

import socket import concurrent.futures import time def resolve_domain(domain): """解析域名获取IP地址""" try: ip = socket.gethostbyname(domain) return ip except socket.gaierror: print(f"域名解析失败: {domain}") return None def scan_port(ip, port, timeout=1.5): """检测指定IP的单个端口状态""" try: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.settimeout(timeout) result = s.connect_ex((ip, port)) return port, result == 0 # 返回端口号及状态(True=开放) except Exception as e: return port, False def port_scanner(domain, ports, timeout=1.5, max_threads=100): """执行端口扫描主函数""" # 域名解析 ip = resolve_domain(domain) if not ip: return print(f"开始扫描 {domain} ({ip})") open_ports = [] start_time = time.time() # 使用线程池并发扫描 with concurrent.futures.ThreadPoolExecutor(max_workers=max_threads) as executor: futures = {executor.submit(scan_port, ip, port, timeout): port for port in ports} for future in concurrent.futures.as_completed(futures): port, is_open = future.result() if is_open: print(f"端口 {port} [开放]") open_ports.append(port) # 扫描结果摘要 print(f"n扫描完成! 耗时: {time.time()-start_time:.2f}秒") print(f"开放端口总数: {len(open_ports)}") print("开放端口列表:", sorted(open_ports)) if __name__ == "__main__": # 配置参数 TARGET_DOMAIN = "example.com" # 目标域名 COMMON_PORTS = [21, 22, 23, 25, 53, 80, 110, 143, 443, 465, 587, 993, 995, 3306, 3389, 8080] # 常见端口列表 TIMEOUT = 1 # 连接超时(秒) THREADS = 200 # 最大并发线程数 # 执行扫描 port_scanner(TARGET_DOMAIN, COMMON_PORTS, TIMEOUT, THREADS)

功能说明:

  1. 域名解析

    • 使用socket.gethostbyname()将域名转换为IP地址
    • 自动处理解析失败情况
  2. 端口扫描

    • TCP连接扫描(全连接)
    • 可自定义超时时间(默认1.5秒)
    • 支持批量端口检测
  3. 并发处理

    • 使用线程池实现高速扫描
    • 可配置最大并发数(默认100线程)
  4. 结果输出

    域名端口怎么检测?网站端口扫描工具最全推荐 第1张

    域名端口怎么检测?网站端口扫描工具最全推荐 第2张

    • 实时显示开放端口
    • 扫描结束后统计开放端口列表
    • 显示总耗时

使用示例:

# 扫描百度的常见端口 port_scanner("www.baidu.com", [80, 443, 8080, 8888]) # 扫描自定义端口范围 port_scanner("example.com", range(1, 1024))

注意事项:

  1. 合法性

    • 仅扫描自己拥有或获得书面授权的目标
    • 未经授权的端口扫描可能违反法律
  2. 防火墙影响

    • 结果可能受本地/目标防火墙影响
    • 实际开放端口可能被安全设备拦截
  3. 性能调节

    • 增加线程数可提高速度(但可能被目标封禁)
    • 减少超时时间可加速扫描(但可能增加误报)
  4. 替代方案

    # 使用Nmap命令行工具 nmap -p 1-65535 example.com

提示:对于专业级扫描需求,推荐使用成熟的网络安全工具如Nmap,其提供更全面的检测技术(SYN扫描、服务识别、漏洞检测等)。

域名端口怎么检测?网站端口扫描工具最全推荐 第3张

0