奇安信攻防社区文章转换工具
字数 1170 2025-08-07 08:22:15

奇安信攻防社区文章转换工具使用教程

工具概述

奇安信攻防社区文章转换工具是一个Python脚本,旨在解决在奇安信攻防社区编写文章时上传本地图片的繁琐问题。该工具能够自动将本地Markdown文件中的图片上传至社区图床,并生成包含正确图片链接的新Markdown文件。

工具特点

  1. 解决在线编辑框图片上传后自动定位到文章开头的问题
  2. 支持批量处理多个Markdown文件
  3. 自动识别并上传本地图片到社区图床
  4. 生成可直接复制到社区编辑器的Markdown文件

适用人群

  • 喜欢在本地使用Typora等Markdown编辑器写作的安全研究人员
  • 需要频繁在奇安信攻防社区发布技术文章的用户
  • 希望提高写作效率的安全从业者

工具结构

工具包含以下文件和目录:

├── old_file/          # 存放原始Markdown文件
├── new_file/          # 存放转换后的Markdown文件
├── config.ini         # 配置文件
└── convert.py         # 主脚本文件

配置方法

  1. config.ini文件中填写账号信息:

    [settings]
    X-CSRF-TOKEN = your_csrf_token
    cookie = your_cookie
    
  2. 注意事项:

    • 如果cookie中包含URL编码字符,需要先进行URL解码再填写
    • 可以通过浏览器开发者工具获取这些信息

使用步骤

1. 准备Markdown文件

  1. 将本地编写的Markdown文件放入old_file目录
  2. 确保Typora的图片设置符合以下规则:
    • 使用相对路径
    • 图片保存在与Markdown文件同名的.assets目录下
    • 例如:filename.md的图片应保存在filename.assets/目录中

2. 运行脚本

执行主脚本:

python convert.py

3. 获取转换结果

转换后的Markdown文件将生成在new_file目录中,可直接复制内容到奇安信攻防社区编辑器发布。

技术实现原理

1. 文件读取

def old_file_read(file_name):
    file = open("./old_file/"+file_name, 'r', encoding="utf-8").read()
    file = urllib.parse.unquote(file)
    return file
  • 读取原始Markdown文件内容
  • 对文件内容进行URL解码

2. 图片路径提取

def get_image(file_name):
    short_file_name = file_name.split(".")[0]
    file_content = old_file_read(file_name)
    img_pattern = r'(!
$$
.*?
$$
${0}\.assets/image-.*?.png$)'.format(short_file_name)
    image_list = re.findall(img_pattern, file_content)
    return image_list
  • 使用正则表达式匹配Markdown中的图片语法
  • 提取所有本地图片路径

3. 图片上传

def upload_img(file_name):
    # 获取图片列表
    img_list = get_image(file_name)
    
    # 准备请求头
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0)...",
        "Host": "forum.butian.net",
        "X-CSRF-TOKEN": config['settings']['X-CSRF-TOKEN'],
        "Cookie": config['settings']['cookie']
    }
    
    # 上传每张图片
    for i in dir_list:
        res = requests.post(url="https://forum.butian.net/image/uploadS3", 
                          headers=headers, 
                          files={"file": open(real_file,"rb")}, 
                          verify=False)
        img_url = res.text
        # 构造新的Markdown图片语法
        img_path = f""
  • 使用requests库上传图片到社区图床
  • 从响应中获取图片URL
  • 构造新的Markdown图片语法

4. 内容替换

def custom_make_translation(text, translation):
    regex = re.compile('|'.join(map(re.escape, translation)))
    return regex.sub(lambda match: translation[match.group(0)], text)

def create_file(file_name):
    # 读取原始内容
    content = old_file_read(file_name)
    
    # 如果有图片则进行替换
    if img_list:
        dicts = dict()
        for i,j in zip(img_list,path_list):
            dicts[i]=j
        content = custom_make_translation(content, dicts)
    
    # 写入新文件
    new_file = open("./new_file/"+file_name, 'w')
    new_file.write(content)
  • 使用字典建立原始图片语法和新图片语法的映射关系
  • 使用正则表达式进行批量替换
  • 生成转换后的Markdown文件

常见问题解决

  1. cookie无效

    • 检查cookie是否过期
    • 确保cookie已进行URL解码
  2. 图片上传失败

    • 检查网络连接
    • 确认X-CSRF-TOKEN和cookie配置正确
    • 确保图片路径符合要求
  3. 脚本不工作

    • 检查Python环境是否安装正确
    • 确保依赖库(requests, re, configparser等)已安装

项目地址

工具已开源在GitHub:https://github.com/dota-st/QaxArticle

总结

该工具通过自动化图片上传和链接替换过程,显著提高了在奇安信攻防社区发布文章的效率和体验。其设计思路也可作为开发类似工具的参考,展示了如何通过Python脚本解决实际工作中的痛点问题。

奇安信攻防社区文章转换工具使用教程 工具概述 奇安信攻防社区文章转换工具是一个Python脚本,旨在解决在奇安信攻防社区编写文章时上传本地图片的繁琐问题。该工具能够自动将本地Markdown文件中的图片上传至社区图床,并生成包含正确图片链接的新Markdown文件。 工具特点 解决在线编辑框图片上传后自动定位到文章开头的问题 支持批量处理多个Markdown文件 自动识别并上传本地图片到社区图床 生成可直接复制到社区编辑器的Markdown文件 适用人群 喜欢在本地使用Typora等Markdown编辑器写作的安全研究人员 需要频繁在奇安信攻防社区发布技术文章的用户 希望提高写作效率的安全从业者 工具结构 工具包含以下文件和目录: 配置方法 在 config.ini 文件中填写账号信息: 注意事项: 如果cookie中包含URL编码字符,需要先进行URL解码再填写 可以通过浏览器开发者工具获取这些信息 使用步骤 1. 准备Markdown文件 将本地编写的Markdown文件放入 old_file 目录 确保Typora的图片设置符合以下规则: 使用相对路径 图片保存在与Markdown文件同名的 .assets 目录下 例如: filename.md 的图片应保存在 filename.assets/ 目录中 2. 运行脚本 执行主脚本: 3. 获取转换结果 转换后的Markdown文件将生成在 new_file 目录中,可直接复制内容到奇安信攻防社区编辑器发布。 技术实现原理 1. 文件读取 读取原始Markdown文件内容 对文件内容进行URL解码 2. 图片路径提取 使用正则表达式匹配Markdown中的图片语法 提取所有本地图片路径 3. 图片上传 使用requests库上传图片到社区图床 从响应中获取图片URL 构造新的Markdown图片语法 4. 内容替换 使用字典建立原始图片语法和新图片语法的映射关系 使用正则表达式进行批量替换 生成转换后的Markdown文件 常见问题解决 cookie无效 : 检查cookie是否过期 确保cookie已进行URL解码 图片上传失败 : 检查网络连接 确认X-CSRF-TOKEN和cookie配置正确 确保图片路径符合要求 脚本不工作 : 检查Python环境是否安装正确 确保依赖库(requests, re, configparser等)已安装 项目地址 工具已开源在GitHub: https://github.com/dota-st/QaxArticle 总结 该工具通过自动化图片上传和链接替换过程,显著提高了在奇安信攻防社区发布文章的效率和体验。其设计思路也可作为开发类似工具的参考,展示了如何通过Python脚本解决实际工作中的痛点问题。