# monitorPython **Repository Path**: brookrivulet/monitor-python ## Basic Information - **Project Name**: monitorPython - **Description**: 一个集成我所有python学习内容的框架 - **Primary Language**: Python - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-07-22 - **Last Updated**: 2024-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 采集程序 ### 项目结构 + api: 存放api接口 + db: 采集程序中所有数据源的存放位置 - mongo_db:存放mongodb数据源操作语句 - mysql_db:存放mysql数据源操作语句 - redis_db:存放redis_db数据源操作语句 - sqlite_db:存放sqllite_db数据源操作语句 + extra_file: 存放所有需要用到的外部文件 - db_back:存放数据源备份相关文件 - keyword_file:存放关键词词典文件 - mitmproxy:存放mitmproxy网页文件 - application.yml:系统配置文件 - sqlite.db:sqlite数据库文件 - stealth.min.js:pyppeteer篡改网页文件 - *.json:数据表结构文件 + helper: 存放配置及启动文件 - flask_apscheduler:flask挂载定时任务配置 - flask_rabbitmq:flask挂载rabbitmq所需文件 - config.py:系统配置文件读取中转 - launcher.py:关联系统功能文件 + other_file:其他系统非必须文件 + script: 功能模块代码存放位置 - abandoned_station:废弃脚本文件存储位置 - mitm_server:mitmproxy中间人脚本存放位置 - smartTool: 小工具包,收录一些单独运行的小工具 - test:测试脚本存放位置 + utils: 工具类存放位置 + .ico: 项目打包后的程序图标 + monitorApp.py: 程序入口 + Pipfile: 包管理文件 + Pipfile.lock: 包详细信息管理,类似vue依赖管理 ### 项目启动 ```bash 检查是否使用国内镜像,已使用可直接跳过 未使用可在C:\Users\Administrator 下建立pip文件夹 将other_file下的pip.ini文件复制过去,即可永久使用国内镜像 # 查看内置服务 python monitorApp.py --help # 初始化项目 # 创建虚拟环境,进入虚拟环境 python monitorApp.py init # 进入虚拟环境,不使用环境变量中的python环境 # 系统python环境必须先安装pipenv库 pipenv shell # 进入api服务 python monitorApp.py server # 打开中间人代理服务 python monitorApp.py mitmdump ``` #### Windows环境 ```bash # 未打包 python monitorApp.py server 启动api服务 # 打包后 monitorApp server 启动api服务 ``` #### Linux环境 ```bash # 未打包 python monitorApp.py server 启动api服务 # 打包后 sh ./crawler.sh start 启动 sh ./crawler.sh restart 重启 sh ./crawler.sh stop 停止 ``` ### 依赖包管理 ```bash # 安装 库包管理工具 pip install pipenv # 指定python版本 pipenv --python <版本号> # 在项目根路径下创建.venv文件夹,使用如下指令后会将虚拟环境置于该目录下 # 如果项目根路径下存在requirements.txt文件,则自动导入库 # 在virtualenv内启动一个shell,进入虚拟环境 pipenv shell # 为项目安装所有依赖项,同npm install pipenv install <--dev> # 将已安装的依赖项显示为图表 pipenv graph # 安装指定库 pipenv install <依赖库名> # 卸载指定库 pipenv uninstall <依赖库名> # 更新指定库 pipenv update <依赖库名> # 将pipfile和pipfile.lock中的内容导出为requirements.txt pip freeze >requirements.txt ``` ### 程序打包 #### 安装程序打包依赖 ```bash pip install pyinstaller ``` ##### windows环境 ```bash pyinstaller -D monitorApp.py -i a.ico --add-data="./extra_file;./extra_file" --add-data="./extra_file/mitmproxy;./mitmproxy" --add-data="./extra_file/keyword_file/dict.txt;./jieba" ``` ##### linux环境 ```bash pyinstaller -D monitorApp.py -i a.ico --add-data="./extra_file:./extra_file" --add-data="./extra_file/mitmproxy:./mitmproxy" --add-data="./extra_file/keyword_file/dict.txt:./jieba" --add-data="./crawler.sh:./" ``` ```bash #说明:首次启动完均会生成.spec文件,可在文件内修改配置,之后打包可直接输入 pyinstaller webApi.spec 进行打包,无需再输入过多的参数指令 ``` ``` ###读取新创建的配置 ```python from helper.config import Config # 第一个值为分类,第二个值为配置 Config.get('config', 'myconfig') ``` ### 工具类介绍 > 概述 + utils 工具包为本人经过多次版本迭代,统合之前项目中所使用到的工具及方法,抽解核心代码形成工具类, 工具类中使用注解实现开包即用,无需再进行实例化。 + 后期将会不断迭代,添加更多好用的方法以更好的实现功能需求。 + 目前包含: - 数据处理工具类 - 文件处理工具类 - 日志工具类 - MySQL数据库工具类 - 自动化工具类 - redis 工具类 - 请求工具类 - 时间工具类 - 系统代理修改工具类 - 中间人工具类 - 进程管理工具类 - 加密解密工具类 - SQLite工具类 - mongodb工具类 - rabbitmq工具类 - elasticsearch工具类 > 工具类详情 + 数据处理工具类 - 字符串去空格及特殊字符(removeEmpty) - 字符串去首空格(removeLeftNull) - 字符串去尾空格(removeRightNull) - 字符串去首尾空格(removeAllNull) - 根据规则切割字符串(splitStr) - 网页内链接补全(assembleUrl) - 获取一个字符在字符串中出现的次数(getCharCount) - 从字符串中提取日期时间(getDateByCharacter) - 根据正则表达式获取值(getReChar) (内置手机号、邮箱、身份证正则表达式) - 将json字符串转为python对象(parseObjectByStr) - 将python对象转为json字符串(parseJsonByObject) - 将python类型的数据以json形式存入json文件(storeJsonFileByObject) - 获取json文件中的内容(getStoreJsonFile) - 比较两个字符串是否相等(equals) - 带元组的列表去重,支持根据下标选择对元组中的某一个值进行去重(repeListByTuple) - 列表去重(repeList) - 随机生成指定位数字符串(randomStr) - 自动识别byte编码格式并返回解码后的字符串(byteTranChar) - UUID生成(formatUUID) + 文件处理工具类 - 基类(Base) * 提取某个目录下包含子目录的所有指定文件(getAllFile) * 提取某个目录下所有指定类型文件路径(支持多个文件类型)(getAllFileBySuffixs) * 提取某个目录下所有指定类型文件路径,包含上级目录的名称 * 删除某个目录及目录下所有文件(deleteAllFile) * 校验文件路径是否存在(verifyPath) - 文本文件处理(TextFileHandleUtil) * 文本文件写入 (setTextContent) * 文本文件读取 (getTextContent) * 获取文件编码格式(getFileEncode) - excel文件处理(ExcelFileHandleUtil) * 写入excel文件(setExcelContent) * 读取excel文件(getExcelContent) * excel文件转csv文件(excelToCsv) - pdf文件处理(PDFFileHandleUtil) * pdf转图片(pdfToImg) * 图片转pdf(imgToPdf) * 合并多个pdf文件(mergePdf) * 多张图片合并到一个pdf中(imgsToPdf) * pdf转word(pdfToWord) - word文件处理(WordFileHandleUtil) * word添加图片(addImg) * word添加文字(addText) * 保存word文档(save) + 日志工具类 - 提供日志文件管理 + MySQL工具类(以数据库连接池为基础,提供相应服务) - 新增一条数据(insert_one_data) - 新增多条数据(insert_many_data) - 条件查询(find) - 查询所有(find_all) - 删除数据(del_data) - 修改数据(update_data) - 批量修改数据(update_many_data_list) - 创建表(create_table) - 获取表字段注释(get_comment) - 执行sql文件(batch_exe_sql) - 获取库内所有表名(get_table_name) - 获取表详细信息(get_table_info) + 自动化工具类 - 启动浏览器(startBrowser) - 修改页面js(appendPageConfig) - 跳转页面(goto) + redis工具类 - 字符串 * 创建键值(setCacheObject) * 根据键获取值(getCacheObject) - 列表 * 创建列表(setCacheList) * 获取列表(getCacheList) * 删除列表中所有值(delCacheList) * 从列表最左边删除一个值并返回该值(popCacheList) * 从列表最左边删除一个值并返回该值(等待列表中有值)(popWaitCacheList) * 获取列表长度(listCount) - 字典 * 创建字典(setCacheMap) * 获取字典(getCacheMap) - 无序集合 * 创建无序集合(setCacheSet) * 获取无序集合(getCacheSet) * 随机从无序集合中获取值(getCacheRandBySet) * 判断无序集合中是否存在某个值(isExistBySet) * 从无序集合中剔除一个值并返回该值(popCacheSet) * 求多个无序集合的差集(diffCacheSet) * 求多个无序集合的交集(sinCacheSet) * 求多个无序集合的并集(sunCacheSet) - 有序集合 * 创建有序集合(setCacheZSet) * 获取有序集合(getCacheZSet) * 给有序集合中某个值加分(addCacheZSetScore) * 删除有序集合中某个或多个值(delCacheZSetValue) * 根据下标删除有序集合值(delCacheZSetByIndex) * 根据分数删除有序集合值(delCacheZSetByScore) - 通用 * 设置键过期时间(expire) * 删除一个或多个键(delAll) * 重命名键(reKeyName) * 获取键类型(type) * 获取库内所有键(keys) + 请求工具类(可指定是否使用代理,默认关闭) - Get请求(get_proxy_G) - Post请求(get_proxy_P) - 上传文件(uploadFile) - 下载文件(downloadFile) - text属性:返回请求结果的文本内容 - tree属性:返回请求结果的树形结构 - json属性:返回请求结果的json - desc属性:返回请求过程产生的描述 - code属性:返回请求码 + 时间工具类 - 获取今日日期(YYYY-MM-DD)(today) - 获取今日日期(YYYYMMDD)(todaystr) - 获取当前日期时间(YYYY-MM-DD HH:MM:SS)(datetime) - 获取当前日期时间(YYYYMMDDHHMMSS)(datetimestr) - 获取n天后日期(YYYY-MM-DD)(get_day_of_day) - 获取某月天数(get_days_of_month) - 获取某月第一天(YYYY-MM-DD)(get_firstday_of_month) - 获取某月最后一天(YYYY-MM-DD)(get_lastday_of_month) - 获取当前日期前后n月的日期(YYYY-MM-DD)(get_today_month) - 获取当前日期前后n月最后一天的日期((y, m, d))(getyearandmonth) - 获取当前日期前后n月第一天的日期(YYYY-MM-DD)(get_firstday_month) - 将日期转为时间戳(get_timestamp_by_date) - 将日期时间转为时间戳(get_timestamp_by_datetime) - 获取当前时间戳(getTimestamp) - 将时间戳转日期(get_date_timestamp) - 将时间转为日期时间(get_date_time_timestamp) - 比较两个字符串时间的大小(compare_timestamp) - 数据库查询时间转换(parseTime) - 根据当前时间获取n年、月、日、时、分前的日期时间(getTime) - 比较两个日期相隔的天数(get_day_by_date) + 多线程工具类 - 将所需要进行多线程操作的工作传入工具类 + 系统代理服务器配置 - 修改系统代理服务器(system_proxy) + 中间人代理工具类 - 带web界面版(MitmWebWraper) - 纯控制台版(MitmDumpWraper) + 进程管理工具类 - 启动一个新进程(命令、程序、批处理脚本、shell脚本)(startProce) - 关闭一个进程(stopProce) + 加密解密工具类 - BASE64加密解密 - MD5加密比较 - DES加密解密 - AES加密解密 - RSA加密解密 + SQLite工具类 - 创建表(create_table) - 新增|修改|删除一条数据(cud_one_data) - 新增|修改|删除多条数据(cud_many_data) - 查询(find) - 执行sql脚本(run_script) - 获取表结构信息(get_table_info) + mongodb工具类 - 查询所有数据库 - 查询所有表 - 新增一条数据 - 新增多条数据 - 修改数据 - 查询一条数据 - 查询多条数据 + rabbitmq工具类 - 推送消息到队列 - 创建消费者 + elasticsearch工具类 - 创建索引(create_index) - 删除索引(delete_index) - 重建索引(re_index) - 添加一条数据(insert_one_data) - 批量操作数据(cud_many_data) * 填充数据列表(fill_many_update_data) - 修改一条数据(update_one_data) - 条件修改数据(update_data_query) * 链式方法起始(构建修改脚本字典)(startScript) * 链式方法结束(endScript) * 添加待修改字段(script_update_field) - 删除一条数据(delete_one_data) - 条件删除数据(delete_data_query) - 查询数据(find) * 链式方法起始(构建查询条件字典)(startQuery) * 链式方法结束(endQuery) * 分页(limit) * 排序(sort) * 查询全部数据(query_all) * 复合查询(bool) * 范围查询(range) * 等于查询(单个值)(term) * 等于查询(多个值)(terms) * 包含查询(单字段单个值)(match) * 包含查询(多字段单个值)(multi_match) * 通配符查询(wildcard) ### 版本更新 + 2023-12-13 添加定时任务管理界面 + 2023-12-10 flask集成apscheduler定时任务 + 2023-12-05 ini配置文件修改为yml配置文件 + 2023-8-12 数据库结构调整 + 2023-6-2 flask集成rabbitmq + 2023-5-24 添加elasticSearch操作工具类