1 # coding=utf-8
2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
3
4 #2.注释:包括记录创建时间,创建人,项目名称。
5 '''
6 Created on 2019-5-13
7 @author: 000
8 Project:学习和使用封装与调用--函数和参数化
9 '''
10 #3.导入模块
11 import requests
12 # # 先打开登录首页,获取部分cookie
13 # url = "https://passport.cnblogs.com/user/signin"
14 # # 登录成功后保存编辑内容
15 # url2= "https://i.cnblogs.com/EditPosts.aspx?opt=1"
16 # s = requests.session() #s参数作为全局变量
17 #-------------由于博客园的登录机制改变这部分代码仅作为参考start-------
18 '''
19 def login(s, url, payload):
20
21 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
22
23 "Accept": "application/json, text/javascript, */*; q=0.01",
24 "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
25 "Accept-Encoding": "gzip, deflate, br",
26 "Content-Type": "application/json; charset=utf-8",
27 "X-Requested-With": "XMLHttpRequest",
28 "Content-Length": "385",
29 "Cookie": "xxx 已省略",
30 "Connection": "keep-alive"
31 }
32 r = s.post(url, jsnotallow=payload, headers=headers, verify=False)
33 result = r.json()
34 print (result)
35 return result['success'] # 返回 True 或 False
36 '''
37 # -------------由于博客园的登录机制改变这部分代码仅作为参考end-------
38 def save_box(s, url2, title, body_data):
39 '''# 获取报存之后 url 地址'''
40 body = {"__VIEWSTATE": "",
41 "__VIEWSTATEGENERATOR": "FE27D343",
42 "Editor$Edit$txbTitle": title,
43 "Editor$Edit$EditorBody": "<p>"+body_data+"</p>",
44 "Editor$Edit$Advanced$ckbPublished": "on",
45 "Editor$Edit$Advanced$chkDisplayHomePage": "on",
46 "Editor$Edit$Advanced$chkComments": "on",
47 "Editor$Edit$Advanced$chkMainSyndication": "on",
48 "Editor$Edit$lkbDraft": "存为草稿",
49 }
50 r2 = s.post(url2, data=body, verify=False)
51 print(r2.url)
52 return r2.url
53 def get_postid(u):
54 '''正则提取 postid'''
55 import re
56 postid = re.findall(r"postid=(.+?)&", u)
57 print (postid) # 这里是 list
58 if len(postid) < 1:
59 return ''
60 else:
61 return postid[0]
62 def delete_box(s,url3, postid):
63 '''删除草稿箱'''
64 json3 = {"postId": postid}
65 r3 = s.post(url3, jsnotallow=json3, verify=False)
66 print (r3.json())
67 if __name__ == "__main__":
68 #-------------由于博客园的登录机制改变这部分代码仅作为参考start-------
69 '''
70 #登录url
71 url = "https://passport.cnblogs.com/user/signin"
72 payload = {
73 "input1": "xxx",
74 "input2": "xxx",
75 "remember": True
76 }
77 s = requests.session()
78 login(s, url, payload)
79 '''
80 # -------------由于博客园的登录机制改变这部分代码仅作为参考end-------
81 url = "https://passport.cnblogs.com/user/signin"
82 headers = {
83 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
84 } # get方法其它加个ser-Agent就可以了
85 s = requests.session()
86 r = s.get(url, headers=headers, verify=False)
87 print(s.cookies)
88 # 添加登录需要的两个cookie
89 c = requests.cookies.RequestsCookieJar()
90 c.set('.CNBlogsCookie',
91 'XXX') # 填上面抓包内容 具体查看前边的cookie登录,这里不赘述
92 c.set('.Cnblogs.AspNetCore.Cookies',
93 'XXX') # 填上面抓包内容 具体查看前边cookie登录,这里不赘述
94 c.set('AlwaysCreateItemsAsActive', "True")
95 c.set('AdminCookieAlwaysExpandAdvanced', "True")
96 s.cookies.update(c)
97 print(s.cookies)
98 result = r.content
99
100 #编辑随笔url
101 url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
102 u = save_box(s, url2, "北京-宏哥学习和使用封装与调用--函数和参数化", "1、学习和使用封装与调用--函数和参数化")
103 postid = get_postid(u)
104 # 删除随笔url
105 url3 = "https://i.cnblogs.com/post/delete"
106 delete_box(s, url3, postid)