博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python接口自动化3-自动发帖(session)
阅读量:4361 次
发布时间:2019-06-07

本文共 2794 字,大约阅读时间需要 9 分钟。

前言

上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢?

 (由于博客园最近登录机制变了,登录全部走cookie登录)

一、session简介

1.查看帮助文档,贴了一部分,后面省略了

>>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')
 |    <Response [200]>
 |  
 |  Or as a context manager::
 |  
 |    >>> with requests.Session() as s:
 |    >>>     s.get('http://httpbin.org/get')
 |    <Response [200]>

 

二、使用session登录

1.使用session登录只需在上一篇基础上稍做修改

# coding:utf-8

import requests
url = "https://passport.cnblogs.com/user/signin"
headers = {
                  头部信息已省略

                   }

payload = {"input1":"xxx",
                "input2":"xxx",
                "remember":True}

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

# 修改后如下

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

三、保存编辑

1.先打开我的随笔,手动输入内容后,打开fiddler抓包

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

body = {"__VIEWSTATE": "",

        "__VIEWSTATEGENERATOR":"FE27D343",
        "Editor$Edit$txbTitle":"这是我的标题:上海-悠悠",
        "Editor$Edit$EditorBody":"<p>这里是中文内容:http://www.cnblogs.com/yoyoketang/</p>",
        "Editor$Edit$Advanced$ckbPublished":"on",
        "Editor$Edit$Advanced$chkDisplayHomePage":"on",
        "Editor$Edit$Advanced$chkComments":"on",
        "Editor$Edit$Advanced$chkMainSyndication":"on",
        "Editor$Edit$lkbDraft":"存为草稿",
         }

3.用上面的session继续发送post请求

4.执行后,查看我的草稿箱就多了一条新增的了

 

四、参考代码

 # coding:utf-8

import requests
# 先打开登录首页,获取部分cookie
url = "https://passport.cnblogs.com/user/signin"
headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
           }  
s = requests.session()
r = s.get(url, headers=headers,verify=False)
print s.cookies
# 添加登录需要的两个cookie
c = requests.cookies.RequestsCookieJar()
c.set('.CNBlogsCookie', '这里是抓到的')  # 填上面抓包内容
c.set('.Cnblogs.AspNetCore.Cookies','这里是抓到的')  # 填上面抓包内容
c.set('AlwaysCreateItemsAsActive',"True")
c.set('AdminCookieAlwaysExpandAdvanced',"True")
s.cookies.update(c)
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$txbTitle":"这是3111",
        "Editor$Edit$EditorBody":"<p>这里111:http://www.cnblogs.com/yoyoketang/</p>",
        "Editor$Edit$Advanced$ckbPublished":"on",
        "Editor$Edit$Advanced$chkDisplayHomePage":"on",
        "Editor$Edit$Advanced$chkComments":"on",
        "Editor$Edit$Advanced$chkMainSyndication":"on",
        "Editor$Edit$Advanced$txbEntryName":"",
        "Editor$Edit$Advanced$txbExcerpt":"",
        "Editor$Edit$Advanced$tbEnryPassword":"",
        "Editor$Edit$lkbDraft":"存为草稿",
         }
r2 = s.post(url2, data=body, verify=False)
print r.content

转载于:https://www.cnblogs.com/liunaixu/p/11077823.html

你可能感兴趣的文章
[慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定...
查看>>
liunx之Centos6.8杀毒软件的安装
查看>>
充实的日子里忙忙碌碌
查看>>
十三、oracle 数据字典和动态性能视图
查看>>
插件开发-UI插件开发
查看>>
[转] vim自定义配置 和 在ubnetu中安装vim
查看>>
Windows环境下安装、卸载Apache
查看>>
HTTPS协议在Tomcat中启用的配置
查看>>
Collections.sort的使用
查看>>
圆形坠落模拟算法设计
查看>>
vi @-function
查看>>
2018年各大互联网前端面试题五(今日头条)
查看>>
Vue.js开发环境搭建的介绍
查看>>
python之路-SQLAlchemy
查看>>
python学习(九) 网络编程学习--简易网站服务器
查看>>
经典MapReduce作业和Yarn上MapReduce作业运行机制
查看>>
大话设计模式读书笔记--6.原型模式
查看>>
Linux Shell——函数的使用
查看>>
Shell脚本
查看>>
使用可视化工具redisclient连接redis
查看>>