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

也可以關注下我的個人公眾號:


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM