python 播放mkz_python接口自动化-session_自动发文

一、session简介

查看 requests.session() 帮助文档(只贴了一部分内容)

import requests

help(requests.session())

class Session(SessionRedirectMixin)

| A Requests session.

|

| Provides cookie persistence, connection-pooling, and configuration.

|

| Basic Usage::

|

| >>> import requests

| >>> s = requests.Session()

| >>> s.get('http://httpbin.org/get')

|

|

| Or as a context manager::

|

| >>> with requests.Session() as s:

| >>> s.get('http://httpbin.org/get')

|

二、使用session登录

博客园登录实操:

# coding:utf-8

import requests

'''

https的请求相对于http安全级别高,需要验证SSL证书

import urllib3 使用这个方法就OK了

urllib3.disable_warnings() 忽略警告

'''

import urllib3

urllib3.disable_warnings()

url = "https://passport.cnblogs.com/user/signin"

headers = {

"Accept": "application/json, text/javascript, */*; q=0.01",

"Content-Type": "application/json; charset=utf-8", #json格式

"X-Requested-With": "XMLHttpRequest",

"Referer": "https://passport.cnblogs.com/user/signin",

"Accept-Language": "zh-CN",

"Accept-Encoding": "gzip, deflate",

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",

"Connection": "Keep-Alive",

"Cookie": "_ga=GA1.2.2031405227.1553413697; _gid=GA1.2.1694843763.1553413697; "

"ASP.NET_SessionId=jw21lhtlzwfs14grozrtn5es; "

"SERVERID=4fea726178f35f0633c3d1a5c08ace19|1553430739|1553430738",

}

payload = {

"input1":"k2bbCom4IU6eUoLehhL1l+uvFscRoUS5V9ZXmiiRnls"

"jS1fhvbTbj+sVg46vjJ6n3hm2kTVfx7O+dJh9+s7Fv"

"sWbNg1boYxn+mF2QdOoLBT6Zx4debvK3ieMaolFvCZH"

"gggaP+lvB1boSxMvfbKjjhB0R1anz72zyN1OUhfuitU=",

"input2":"iK6m5phf0al626Sfn/mKzAunzXlmaY65X5WX4hha67"

"cp1iS81fUmp5TwP6y3XZt7SRHStQ147xR/jMeAcjPnD"

"H5nhnQeDispR6ZAgmEd8bjInoc81tAKycOmlqBGNeCOj"

"PweXlcR8pREJhm7iSPPHqmN8GJ4c7GGc5C/eZc4Uks=",

"remember":True

}

s = requests.session()

r = s.post(url, json=payload, headers=headers, verify=False)

print(r.json())

返回的结果:

48d1f60e18662d11a8e08dd362875c8d.png

Fiddler中的结果:

d0466599a1c6f14cedf8308bc3420234.png

三、自动发文,保存草稿博客

1.先打开登录首页,刷新一下,fiddler抓包,获取部分cookie

feb59c00ad8230cf8e6a4480eb76893f.png

7b6f662bdef77e2bf8913892b8db4bfe.png

代码:

# coding:utf-8

import requests

import urllib3

urllib3.disable_warnings()

# 先打开登录首页,刷新一下,fiddler抓包,获取部分cookie

url = "https://passport.cnblogs.com/user/signin"

headers = {

"Accept": "text/html, application/xhtml+xml, */*",

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",

"Accept-Encoding": "gzip, deflate",

"Connection": "Keep-Alive",

}

s = requests.session()

r = s.get(url, headers=headers, verify=False)

print("第一次打印")

print(s.cookies)

2.添加登录需要的两个cookie

2376bb07ce0e031dda09f6fb21e1cb86.png

代码:

c = requests.cookies.RequestsCookieJar()

c.set('.CNBlogsCookie', '25D6E068A4434E2532E9F553728ACDE1F94F18E8079E07660FA1'

'68C361D87E1A59533A6BA991A7B14091F6609057C32CDE3E4BEDFD'

'DEEA6684C7E5F96A98B77C106640480FA5B3A78EC4EEC76E9E2D5F60082CE6') # 填登录后的抓包内容

c.set('.Cnblogs.AspNetCore.Cookies', 'CfDJ8JcopKY7yQlPr3eegllP76PlTM6nN56TphTAQZU5'

'OFZAKIG6zQQZsZpvJ4y7IBNq4M87KdPYiThIpRzGCp0qaG'

'Q6s30ZdqMvlqDRI0dM2k_jUprCUQ-6FZsKkco_lYEz1v9QQ'

'I_NIl85NQgwqXbjgOmErQIMWUOqhp9_zd1lVQEctfJ8Dt7aa'

'UtO-YSPZ8glHRGQuvXghskz3MOk1IdDdnbUsytc15vJXTKtY'

'-b7HmN2KbsMkwnnF2MSWHztAOYNU8AIuZXS3mX-UrG9PEi0'

'2UTfjkaJltqX4RwddTjTk2DI') # 填登录后的抓包内容

c.set('AlwaysCreateItemsAsActive', "True")

c.set('AdminCookieAlwaysExpandAdvanced', "True")

s.cookies.update(c)

print("第二次打印")

print(s.cookies)

3.登录成功后访问编辑文章

r1 = s.get("https://i.cnblogs.com/EditPosts.aspx?opt=1", headers=headers, verify=False)

4.打开新随笔,输入内容后保存为草稿,用fiddler抓包

fcfbff7a813ee9171e20457d9bd80bd8.png

3ea7e35ade94cd535c9bd17fb545bbb3.png

从博客园处可以查看到:

6f6dfe1c5298a52819e2b4b7b1bb8d40.png

5.把 body 的参数内容写成字典格式,有几个空的参数不是必填项,可以去掉

body = {"__VIEWSTATE": "",

"__VIEWSTATEGENERATOR": "FE27D343",

"Editor$Edit$Advanced$chkComments": "on",

"Editor$Edit$Advanced$chkDisplayHomePage": "on",

"Editor$Edit$Advanced$chkMainSyndication": "on",

"Editor$Edit$Advanced$ckbPublished": "on",

"Editor$Edit$APOptions$Advancedpanel1$cklCategories$2": "1426593",

"Editor$Edit$EditorBody": "

jjjjjjjjjjjjjjjjjjjjjjjjjj"

"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"

"jjjjjjrrrrrrrrrrrrrrrrrrrrrrrrr"

"rrrrrrrrrrrrrrrrrr

",

"Editor$Edit$lkbDraft": "存为草稿",

"Editor$Edit$txbTitle": "testinggggggggg",

}

6.用上面的 session 继续发送 post 请求,对参数稍作修改

url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"

body = {"__VIEWSTATE": "",

"__VIEWSTATEGENERATOR": "FE27D343",

"Editor$Edit$Advanced$chkComments": "on",

"Editor$Edit$Advanced$chkDisplayHomePage": "on",

"Editor$Edit$Advanced$chkMainSyndication": "on",

"Editor$Edit$Advanced$ckbPublished": "on",

"Editor$Edit$APOptions$Advancedpanel1$cklCategories$2": "1426593",

"Editor$Edit$EditorBody": "

222222222222jjjjjjjjjjjjjjjjjjjjjjjjjj"

"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"

"jjjjjjrrrrrrrrrrrrrrrrrrrrrrrrr"

"rrrrrrrrrrrrrrrrrr

",

"Editor$Edit$lkbDraft": "存为草稿",

"Editor$Edit$txbTitle": "testinggggggggg2222222222",

}

r2 = s.post(url2, data=body, verify=False)

print("第三次打印")

print(r.content.decode("utf-8"))

7.执行后,查看我的博客,就新增了一条草稿内容

37af7c9e6e391666c299b647155d6fda.png

详细内容:

6822096e36854533fa63ea4bc17b2e8e.png

到这里整体的自动发文就完成了

四、全部代码参考

# coding:utf-8

import requests

import urllib3

urllib3.disable_warnings()

# 先打开登录首页,刷新一下,fiddler抓包,获取部分cookie

url = "https://passport.cnblogs.com/user/signin"

headers = {

"Accept": "text/html, application/xhtml+xml, */*",

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko",

"Accept-Encoding": "gzip, deflate",

"Connection": "Keep-Alive",

}

s = requests.session()

r = s.get(url, headers=headers, verify=False)

print("第一次打印")

print(s.cookies)

# 添加登录需要的两个cookie

c = requests.cookies.RequestsCookieJar()

c.set('.CNBlogsCookie', '25D6E068A4434E2532E9F553728ACDE1F94F18E8079E07660FA1'

'68C361D87E1A59533A6BA991A7B14091F6609057C32CDE3E4BEDFD'

'DEEA6684C7E5F96A98B77C106640480FA5B3A78EC4EEC76E9E2D5F60082CE6') # 填登录后的抓包内容

c.set('.Cnblogs.AspNetCore.Cookies', 'CfDJ8JcopKY7yQlPr3eegllP76PlTM6nN56TphTAQZU5'

'OFZAKIG6zQQZsZpvJ4y7IBNq4M87KdPYiThIpRzGCp0qaG'

'Q6s30ZdqMvlqDRI0dM2k_jUprCUQ-6FZsKkco_lYEz1v9QQ'

'I_NIl85NQgwqXbjgOmErQIMWUOqhp9_zd1lVQEctfJ8Dt7aa'

'UtO-YSPZ8glHRGQuvXghskz3MOk1IdDdnbUsytc15vJXTKtY'

'-b7HmN2KbsMkwnnF2MSWHztAOYNU8AIuZXS3mX-UrG9PEi0'

'2UTfjkaJltqX4RwddTjTk2DI') # 填登录后的抓包内容

c.set('AlwaysCreateItemsAsActive', "True")

c.set('AdminCookieAlwaysExpandAdvanced', "True")

s.cookies.update(c)

print("第二次打印")

print(s.cookies)

# 登录成功后访问编辑文章

r1 = s.get("https://i.cnblogs.com/EditPosts.aspx?opt=1", headers=headers, verify=False)

# 保存草稿箱

url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"

body = {"__VIEWSTATE": "",

"__VIEWSTATEGENERATOR": "FE27D343",

"Editor$Edit$Advanced$chkComments": "on",

"Editor$Edit$Advanced$chkDisplayHomePage": "on",

"Editor$Edit$Advanced$chkMainSyndication": "on",

"Editor$Edit$Advanced$ckbPublished": "on",

"Editor$Edit$APOptions$Advancedpanel1$cklCategories$2": "1426593",

"Editor$Edit$EditorBody": "

222222222222jjjjjjjjjjjjjjjjjjjjjjjjjj"

"jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"

"jjjjjjrrrrrrrrrrrrrrrrrrrrrrrrr"

"rrrrrrrrrrrrrrrrrr

",

"Editor$Edit$lkbDraft": "存为草稿",

"Editor$Edit$txbTitle": "testinggggggggg2222222222",

}

r2 = s.post(url2, data=body, verify=False)

print("第三次打印")

print(r.content.decode("utf-8"))

运行后返回的结果:

F:\test-req-py\venv\Scripts\python.exe F:/test-req-py/day2/t4.py

第一次打印

, , ]>

第二次打印

, , , , , , ]>

第三次打印

用户登录 - 博客园

...内容太多,省略...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值