Weeman为什么死守Python 2.7?手把手教你把它迁移到Python 3

📅 2026/8/24 8:35:08
Weeman为什么死守Python 2.7?手把手教你把它迁移到Python 3
Weeman为什么死守Python 2.7手把手教你把它迁移到Python 3【免费下载链接】weemanHTTP server for phishing in python项目地址: https://gitcode.com/gh_mirrors/we/weemanWeeman 是一个用 Python 2.7 编写的 HTTP 服务器工具用于克隆网页表单并监听请求1.7.1 是它的最终版本。因为项目发布在 Python 2.7 时代至今仍然只支持 Python 2.7 运行。本文带你搞清楚它为何死守Python 2.7并手把手把 Weeman 迁移到 Python 3。一、Weeman 是什么一个跑在 Python 2.7 上的 HTTP 服务器Weeman 的工作方式很简单输入目标网页 URL它把页面完整克隆到本地index.html把所有表单的提交地址改写成本地重定向页redirect.html在本地端口默认 8080启动 HTTP 服务器接收并记录提交的数据。它提供交互式命令行支持 Tab 补全、profile 配置文件加载、以及可扩展的模块框架支持 Linux 和 Mac。下面是 Weeman 在 Python 2.7 下的经典运行界面⚠️ 说明Weeman 属于安全研究类工具请仅在你的授权环境和合法授权范围内使用。二、为什么死守 Python 2.7四个绑住项目的原因1. 启动即拦截版本检查直接拒绝 Python 3入口文件 weeman.py 里的tests_pyver()一开场就检查版本号发现是 Python 3 直接报错退出Weeman has no support for Python 3.2. 核心代码大量使用 Python 2 专属模块主服务器文件 core/httpd.py 直接导入SimpleHTTPServer、SocketServer、urllib2——这三个模块在 Python 3 中全部被重命名或删除。此外core/shell.py 使用 Python 3 已移除的raw_input()weeman.py 使用在 Python 3 中被标记弃用的optparse。3. 内置的 BeautifulSoup 是 Python 2 时代的旧版本项目没有依赖外部 bs4而是内置了一份旧版 lib/bs4/其中大量except ImportError, e:这类 Python 2 独占的异常语法例如 lib/bs4/diagnose.py在 Python 3 中属于语法错误。4. Python 2.7 已于 2020 年 1 月停止维护现代 Linux/macOS 发行版默认只装 Python 3Weeman 在干净系统上开箱即坏。迁移到 Python 3 是当前唯一让它重新跑起来的路。三、迁移前准备获取代码与核对文件先获取代码如无需下载可跳过git clone https://gitcode.com/gh_mirrors/we/weeman需要修改的文件一共 6 处核心 4 个模块文件涉及内容weeman.py版本检查、shebang、optparsecore/httpd.py三大 Python 2 模块、字节/字符串core/shell.pyraw_inputcore/config.py文件读写编码core/misc.py缺少import os的隐患modules/各模块的urllib2四、手把手迁移6 步把 Weeman 搬到 Python 3第 1 步模块重命名最关键对照 core/httpd.py 做如下替换Python 2.7Python 3import SimpleHTTPServerfrom http.server import HTTPServer, SimpleHTTPRequestHandlerimport SocketServerimport socketserverimport urllib2import urllib.request注意urllib2.build_opener()对应urllib.request.build_opener()opener.open(...).read()在 Python 3 返回字节需加.decode(utf-8)再交给 bs4。第 2 步替换输入函数把 core/shell.py 中的raw_input(weeman )改为input(weeman )全项目仅此一处。第 3 步处理字符串与字节core/httpd.py 中index.write(data.prettify().encode(utf-8))把字节写进文本模式文件Python 3 会抛TypeError。改为以wb模式打开文件或直接写str并指定encodingutf-8即可。同理检查 core/shell.py 与 core/config.py 中所有open()调用补上encodingutf-8参数。第 4 步替换内置 bs4删除旧的 lib/bs4/ 目录改用官方最新版pip3 install beautifulsoup4然后把 core/httpd.py 的from lib.bs4 import BeautifulSoup as bs改为from bs4 import BeautifulSoup as bs。第 5 步optparse 换成 argparseweeman.py 的optparse.OptionParser()在 Python 3 中会触发弃用警告等价替换为argparse并顺手把第一行 shebang 改为#!/usr/bin/env python3。第 6 步放开版本检查修改 weeman.py 的tests_pyver()让sys.version_info[0] 3时正常通过Python 2 反而报错。五、迁移后验证用 profile 一键启动修改完成后用项目自带的 profile 做回归测试见 profiles/localhost.profilepython3 weeman.py -p profiles/localhost.profile进入交互界面后依次输入show查看配置、run启动服务对应 core/shell.py 的运行分支浏览器访问http://localhost:8080能看到克隆页面即迁移成功最后quit退出。六、Weeman Python 3 迁移清单速查✅ 重命名SimpleHTTPServer/SocketServer/urllib2三模块✅raw_input()→input()✅open()补编码、字节写入改二进制模式✅ 内置 bs4 换成 pip 最新版✅optparse→argparse✅tests_pyver()反转为拒绝 Python 2整个过程改动量很小核心工作量集中在 core/httpd.py 一个文件。Weeman 虽已停更但跟着这 6 步你就能让这个 Python 2.7 老项目在现代 Python 3 环境中重新跑起来。【免费下载链接】weemanHTTP server for phishing in python项目地址: https://gitcode.com/gh_mirrors/we/weeman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考