zoukankan      html  css  js  c++  java
  • python接口自动化3-自动发帖(session)

    前言

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

     (敲黑板!!!由于博客园最近登录机制变了,登录全部走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

    (备注:别使用太频繁了哦,小心封号!!!)

    ---------------------------------python接口自动化完整版-------------------------

    全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695


    作者:上海-悠悠 QQ交流群:588402570

    也可以关注下我的个人公众号:


  • 相关阅读:
    线程池参数设置技巧
    线程池的七个参数
    bug篇——Windows启动redis报错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
    总结篇——git本地仓库上传更新到github
    实例篇——springboot自定义拦截器
    总结篇——从零搭建maven多模块springboot+mybatis项目
    bug篇——MySQL的时区问题
    工具类篇——时间处理Calendar类
    安装篇——nginx安装ssl模块转发https请求
    总结篇——nginx代理服务器
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/6833355.html
Copyright © 2011-2022 走看看