# 易语言网站扫描程序 ```e .版本 2 .程序集 网站扫描工具 .程序集变量 扫描结果, 文本型, , "0" // 存储扫描结果 .程序集变量 线程句柄, 整数型 // 线程控制 .程序集变量 扫描状态, 逻辑型 // 是否正在扫描 .子程序 _启动子程序, 整数型 .局部变量 主窗口, 窗口 主窗口.创建 (, "网站扫描工具", , , 600, 400) 主窗口.置颜色 (#白色) 创建控件(主窗口) 返回 (0) .子程序 创建控件 .参数 父窗口, 窗口 .局部变量 地址输入框, 编辑框 .局部变量 开始按钮, 按钮 .局部变量 停止按钮, 按钮 .局部变量 结果列表框, 列表框 .局部变量 进度标签, 标签 地址输入框.创建 (父窗口, "输入要扫描的网址(如:http://example.com)", 10, 10, 400, 25) 开始按钮.创建 (父窗口, "开始扫描", 420, 10, 80, 25) 停止按钮.创建 (父窗口, "停止", 510, 10, 80, 25) 结果列表框.创建 (父窗口, "", 10, 50, 580, 300) 进度标签.创建 (父窗口, "就绪", 10, 360, 580, 20) 开始按钮.绑定事件 (&开始扫描, #单击事件) 停止按钮.绑定事件 (&停止扫描, #单击事件) 停止按钮.禁用 () .子程序 开始扫描 .局部变量 目标网址, 文本型 .局部变量 线程ID, 整数型 目标网址 = 取窗口组件 ("编辑框1").内容 如果 (目标网址 = "") 信息框 ("请输入要扫描的网址", 0, "提示") 返回 () 结束 如果 扫描状态 = 真 取窗口组件 ("按钮1").禁用 () 取窗口组件 ("按钮2").启用 () 清除数组 (扫描结果) 取窗口组件 ("列表框1").清空 () 线程句柄 = 线程_启动 (&扫描线程, 目标网址, 线程ID) 进度标签.置 ("扫描中...") .子程序 停止扫描 扫描状态 = 假 线程_关闭 (线程句柄) 取窗口组件 ("按钮1").启用 () 取窗口组件 ("按钮2").禁用 () 进度标签.置 ("扫描已停止") .子程序 扫描线程, 整数型 .参数 目标网址, 文本型 .局部变量 HTTP, 网络操作类 .局部变量 端口数组, 整数型, , "0" .局部变量 i, 整数型 .局部变量 当前端口, 整数型 .局部变量 响应, 文本型 端口数组 = {80, 443, 8080, 8000, 8888} // 常见web端口 计次循环首 (取数组成员数 (端口数组), i 如果 (扫描状态 = 假) 跳出循环 () 结束 如果 当前端口 = 端口数组 [i] HTTP.初始化 () HTTP.置超时 (3000) // 3秒超时 如果 (HTTP.访问 (目标网址 + ":" + 到文本 (当前端口), "GET", , , , , 响应)) 加入成员 (扫描结果, 目标网址 + ":" + 到文本 (当前端口) + " 开放") 列表框.加入项目 (扫描结果 [取数组成员数 (扫描结果)], ) 否则 加入成员 (扫描结果, 目标网址 + ":" + 到文本 (当前端口) + " 关闭") 结束 如果 进度标签.置 ("正在扫描端口: " + 到文本 (当前端口)) 处理事件 () 计次循环尾 () 扫描状态 = 假 线程_关闭 (线程句柄) 调用子程序 (&扫描完成) 返回 (0) .子程序 扫描完成 取窗口组件 ("按钮1").启用 () 取窗口组件 ("按钮2").禁用 () 进度标签.置 ("扫描完成,共发现 " + 到文本 (取数组成员数 (扫描结果)) + " 个结果" ``` ## 代码说明 1. 这个易语言程序创建了一个简单的网站端口扫描工具,可以检测目标网站的常见web端口是否开放。 2. 主要功能: - 输入目标网址进行扫描 - 扫描常见web端口(80,443,8080等) - 显示扫描结果 - 支持停止扫描 3. 程序使用了多线程技术,避免界面卡顿。 ## 注意事项 1. 端口扫描可能被视为网络攻击行为,请确保只在你有权限的网站上使用。 2. 实际应用中应该增加异常处理,特别是网络连接超时的情况。 3. 可以根据需要扩展端口列表或添加更复杂的扫描策略。 [2025-05-17 16:29:50 | AI写代码神器 | 1093点数解答]