您的位置:首页 > 编程语言 > Python开发

python接口自动化3-自动发帖(session)

2017-12-07 16:28 543 查看
一、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"

           }  # get方法其它加个ser-Agent就可以了

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: