freebuf快速同步语雀文章

2024-12-07 58 0

1. 背景

日常笔记使用语雀记录文章,想要快速同步内容至freebuf,寻找已有工具无果,遂写了个工具方便快速同步文章。

2. 工具

# coding=gbk
import re
import requests
from urllib.parse import urlparse, parse_qs
import os
import urllib3
import time

# 禁用所有 SSL 相关的警告
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


def uploadImg(imgFile):
    upUrl = 'https://www.freebuf.com/fapi/frontend/upload/image'
    #配置auth认真
    auth = "Bearer eyY2FiMGMyMmJhMyIsInVpZCI6Mzc2Nzk1g2Wlw"
    headers = {
        "Accept":"application/json, text/plain, */*",
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.0 Safari/537.36",
        "X-Client-Type":"web",
        "Origin":"https://www.freebuf.com",
        "Sec-Fetch-Site": "same-origin",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Dest": "empty",
        "Referer": "https://www.freebuf.com/write",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "zh-CN,zh;q=0.9"
        # "Authorization" :auth
        }
    headers['Authorization'] = auth
    # 配置上传流量到burp
    # proxies = {"http":"http://127.0.0.1:8080","https":"http://127.0.0.1:8080"}
    files = {'file':open(imgFile,'rb')}
    rep = requests.post(upUrl, headers=headers,verify=False,files=files)
    # rep = requests.post(upUrl, headers=headers,proxies=proxies,verify=False,files=files)
    print(f"已完成图片{imgFile}的上传")
    return(rep.json().get('data').get('url'))

def replaceImg(imgUrl):
    rep = requests.get(imgUrl)
    fileName = getFileName(imgUrl)
    fileAllName = "./files/"+fileName
    with open(fileAllName, 'wb') as file:
        for chunk in rep.iter_content(chunk_size=8192):  # 每次读取 8 KB 数据
            file.write(chunk)
    print(f"文件{fileAllName}已完成下载")
    return(uploadImg(fileAllName))

def getFileName(imgUrl):
    parsed_url = urlparse(imgUrl)
    path = parsed_url.path
    filename = os.path.basename(path)
    return filename


def replaceMd(mdFile):
    f = open(mdFile,'r',encoding='utf-8')
    content = f.read()
    urls = re.findall(r'https://cdn.nlark.com/yuque[\w/-]+.png', content)
    for url in urls:
    #配置延时避免速率太快被拦截
        time.sleep(1)
        replaceUrl = replaceImg(url)
        content = re.sub(url,replaceUrl,content)
    fo = open(mdFile+'_modify.md',"w")
    fo.write(content)
    fo.close()
    f.close()
    print(f"已完成图片上传,复制新md内容至freebuf即可{mdFile+'_modify.md'}")

#配置markdown名
replaceMd('upload.md')

3.开发思路

1.对语雀到处markdown文件进行分析,发现语雀文档内容缓存在cdn.nlark.com。直接粘贴至freebuf的markdown编辑器不解析图片。于是怀疑对域名做了过滤。

2.因此想的是,只需要把链接替换成freebuf地址或者其他存储桐即可。这里由于存储桶需要另外花钱,因此pass。于是开始分析freebuf上传接口。任意上传一张图片并且抓包

功能点:

请求包:

3.经过分析得出,上传认证只需要Authorization即可,利用该接口即可把本地图片传到云端。故而脚本开发流程如下:

  • 正则匹配md内语雀资源url获取url列表
  • 依次下载url资源至本地并且命名不变
  • 使用freebuf上传接口依次上传图片,并且抓取返回的新url(这里暂时叫做new_url)
  • 依次替换md中的url为new_url并且报错内容为xx_modify.md。

4.使用过程

1.语雀选择文章,点击导出Markdown格式

2.生产后把md文件放到freebuf.py同一个目录。并且本地创建一个files目录

3.配置py脚本,需要配置

auth="Bearer" #登录freebuf后,F12打开浏览器NETWORK并刷新,点击请求包即可获取请求头部参数。
replaceMd('upload.md')

4.python3 freebuf.py生成新的xx_modify.md文件,并且把新生成的md文件粘贴复制进入freebuf markdown编辑器即可。

备注

有的人可能文档资源在本地,也可以在该脚本基础上删除下载资源函数,并且修改正则匹配方法,即可获得本地上传脚本,这里就不多赘述了。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

MACOBOX:一款针对硬件安全的多合一渗透测试工具箱
Matildapp:针对Web 3.0环境的网络安全与渗透测试框架
Jumpserver_decrypto: 解密 Jumpserver ssh配置的开源工具
向日葵远程控制软件远程代码执行漏洞复现(CNVD-2022-10270, CNVD-2022-03672)
Kafka UI三大RCE高危漏洞分析
PbootCMS V3.2.9前台SQL注入漏洞(上)

发布评论