通过接口在CSDN上发布博客文章

1、首先通过fiddler来抓包,主要抓登录前的接口,登录后的接口(登录后的抓发布博客的接口),并对比登录前,登录后的cookies,把登录后的cookies不同的Key,value取出来。


上图为我们需要抓取的三个使用接口,前两个对比取cookies

注意:使用fiddler在火狐浏览器上面抓包时有可能提示连接不安全,解决方法是可以在fiddler里面导出证书到桌面,然后在火狐浏览器中导入该证书即可,具体怎么导入请谷歌或百度。

2、提取cookies:


提取登录前、后的cookies,放在文件比较工具中比较差异,差异部分提取出来,这部分应当就是我们的登录cookies了,通过requests库去发请求完成我们要完成的工作(发博客)

贴上代码:

@software: PyCharm
@file: postscdn.py
@time: 2018/3/12 14:42
"""
import requests
import json

#定义一个浏览器
s = requests.session()
c = requests.cookies.RequestsCookieJar()
print(c)
#添加登录cookies到浏览器,考虑到个人安全,这部分cookies做了替代处理。。。。
c.set("UserName","**************")
c.set("UserInfo","**************")
c.set("UserNick","*************")
c.set("AU","********")
c.set("Hm_lpvt_6bcd52f51e9b3dce32be************","*******")
c.set("dc_tos","******")

#更新下cookies
s.cookies.update(c)
print(s.cookies)
url2 = "http://mp.blog.csdn.net/postedit"
h2 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36"}
#点击写博客
re2 = s.get(url2,headers=h2)
print(re2.status_code)
print(re2.text)

url3 = "http://mp.blog.csdn.net/postedit/saveArticle"
#写博客要传入的参数
payload = {"titl":"good",
           "typ":"1",
           "cont":"sfdsfsfsfsfsdfsfdfsfsds",
           "categories":"Python",
           "chnl":16,
           "level":0,
           "tag2":"",
           "artid":0,
           "private":"false",
           "stat":"draft"}
#写一篇博客把它存为草稿
re3 = s.post(url3,data=payload)
print(re3.status_code)

#数据中的unicode字符转中文
print(re3.content.decode("unicode-escape"))
content3 = re3.content.decode("unicode-escape")
print(type(content3))

content3_dict = json.loads(content3)
content = content3_dict["content"]

print("-----取字典中的content对应value------")
if content == "保存成功。":
    print("success")
else:
    print("登录失败!")

#把文章发布出去
url4 = "http://mp.blog.csdn.net/postedit/saveArticle?isPub=1"
payload_fabiao = payload = {"titl":"goodfs",
           "typ":"1",
           "cont":"sfdsfsfsfsfsdfsfdfsfs",
           "categories":"Python",
           "chnl":16,
           "level":0,
           "tag2":"",
           "artid":0,
           "private":"false",
           "stat":"publish"}
re_fabiao = s.post(url4,data=payload_fabiao)
print(re_fabiao.content.decode("unicode-escape"))
note_url = json.loads(re_fabiao.content.decode("unicode-escape"))["data"]
print("发表的文章地址:" + note_url)

运行后结果:




猜你喜欢

转载自blog.csdn.net/maybe_frank/article/details/79588915