关于CSDN发布博客接口的研究
前言
其实我之前就有一个想法,实现用 python 代码来发布博客, 因为我个人做了一个发布到 github 博客软件(其实就是实现 git 命令集成,还有markdown的渲染的软件), 如果我弄明白了 csdn 上发布博客的接口,我就可以发布到github上的同时有发布到csdn上,这样就实现了一个简单的同步,或者爬取一些网站上的文章,然后利用这个接口直接在发布到 csdn 个人博客上上(这可能涉及到侵权,我当然不会这么做)
方法
抓包我用的是 charles 软件, 或者用浏览器的 F12 调试工具, 这个接口确实让我难受了很久,因为我一直用的是表单发送的数据,但其实博客的接口接受的不是表单数据,而是一种 content-type: multipart/form-data; boundary=----WebKitFormBoundarypxPm5bUFaA8CHOHo 接受是这种类型,我不会构建,直到我看到了这篇文章
参考文章
实现代码
import requests
from requests_toolbelt import MultipartEncoder
import urllib.parse
fields = {
'title':'test', #标题字段
'markdowncontent':"""# 一级标题""", #markdown字段,也就是你编辑你自己文章的内容包含
'content':'''<h1><a id="_0"></a>一级标题</h1>
<h2><a id="_1"></a>二级标题</h2>
<h3><a id="_2"></a>三级标题</h3>''', # 文章的主体内容,也就是渲染完成markdown形成的html
'id':'',
'private':'',
'tags':'',
'status':'0',
'categories':'linux', #分类
'channel': '31',
'type':'original',
'articleedittype':'1',
'Description':'',
'csrf_token':'',
}
m = MultipartEncoder(fields, boundary='------WebKitFormBoundarynTBa3OWoSMrcVf0F')
headers = {
'cookie':' ', #这里的cookie换成你自己登录的cookie就可以了
'Content-Type': m.content_type,
}
url = 'https://mp.csdn.net/mdeditor/saveArticle'
res = requests.post(url, headers=headers, data=m.to_string())
print(res.text)
注意
我用到是markdown编辑器 而不是 富文本编辑器
所以这里有地方要注意区别
markdowncontent:这个字段是你发布完文章后,编辑的时候显示的内容
content 这个是你查看文章显示的内容
所以上面的代码如果你运行后,会出现 发布文章后显示文章的内容有
一级标题
二级标题
三级标题
而你编辑的时候会发现 markdown 编辑器里面只有
# 一级标题
关于CSDN发布博客接口的研究的更多相关文章
- 接口登录CSDN发布博客---封装方法,使用unittest框架
一个简单的跑接口流程:登录后发表带图片的博客.这里涉及到的知识点: 1.登录时通过cookies去保持登录状态,把cookies添加到一个session中,这样可以保持长时间登录状态: 2.我们通过爬 ...
- 【转】如何使用离线博客发布工具发布CSDN的博客文章
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- Windows Live Writer发布CSDN离线博客教程及测试
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- 【更新】用word文档来发布到csdn等博客上边免去一张张上传图片的烦恼
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- 在CSDN开通博客专栏后如何发布文章(图文)
今天打开电脑登上CSDN发现自己授予了专栏勋章,有必要了解如何在专栏发布文章. 很感谢已经有前辈给出了图文教程,此文章转载自博客:http://blog.csdn.net/upi2u/article/ ...
- 为了发布博客方便,现从CSDN的naedzq整体迁移到cnblogs
为了发布博客方便,现从CSDN的naedzq整体迁移到cnblogs
- 开发记录_自学Python写爬虫程序爬取csdn个人博客信息
每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...
- csdn的博客上传word图片
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- 测试用Word2007发布博客文章
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- 用WORD2007发布博客文章
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
随机推荐
- STL再回顾(非常见知识点)
目录 为人熟知的pair类型 再谈STL 迭代器的使用 常用的STL容器 顺序容器 vector(向量) 构造方式 拥有的常用的成员函数(java人称方法) string 构造方式 成员函数 dequ ...
- Pod原理
Pod 是 Kubernetes 集群中最基本的调度单元,我们平时在集群中部署的应用都是以 Pod 为单位的,而并不是我们熟知的容器,这样设计的目的是什么呢?为何不直接使用容器呢? 为什么需要 Pod ...
- Fluentd直接传输日志给MongoDB (standalone)
官方文档地址:https://docs.fluentd.org/output/mongo td-agent版本默认没有包含out_mongo插件,需要安装这个插件才能使用 使用的是td-agent,安 ...
- Multi-View Intent Disentangle Graph Networks for Bundle Recommendation解读
简要论述 bundle recommendation 的目的是向user推荐一个整体的bundle package about items.以前的模型捕获了user对item and item关联的偏 ...
- 文心ERNIE-ViLG,你的免费插图画师
你是否想拥有一个专属画师,免费为你的优美文字插上几幅优美的插图?如今依然实现 最近AI作画确实很火,在DALL-E和Imagen崭露头角之后,ERNIE-ViLG.Stable-Diffusion(S ...
- Apache Dolphin Scheduler 3.0.1 发布,对核心及UI相关进行优化
点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 版本发布 感谢本次的 Release Manager -- ...
- 我的Vue之旅 06 超详细、仿 itch.io 主页设计(Mobile)
第二期 · 使用 Vue 3.1 + TypeScript + Router + Tailwind.css 仿 itch.io 平台主页. 我的主题 HapiGames 是仿 itch.io 的 in ...
- Redis 常见问题-缓存穿透
问题描述: * 针对 DB 中不存在的数据源,每次请求缓存和数据库都不存在 造成后果: * 应用服务器压力变大 * Redis 命中率大幅度降低 * `数据库压力巨增甚至 down 掉`* 该现象对于 ...
- Java并发编程 | Synchronized原理与使用
Java提供了多种机制实现多线程之间有需要同步执行的场景需求.其中最基本的是Synchronized ,实现上使用对象监视器( Monitor ). Java中的每个对象都是与线程可以锁定或解锁的对象 ...
- 三十四、kubernetes证书介绍
Kubernetes 证书介绍 一.证书机制说明 Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务.API Server 是集群内部各个组件通信的中介,也是外部控 ...