1. 程式人生 > >python學習--利用session進行博客園登陸並且自動發貼

python學習--利用session進行博客園登陸並且自動發貼

兩個 agen sts published wow64 set 發現 https stat

1、首先手動登陸,打開fiddler抓包,將登陸前後的cookie進行對比,找出其中不同的記錄

2、登陸代碼如下所示

import requests
import logging
logging.captureWarnings(True)
# 先打開登錄首頁,獲取部分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"
           }
#開啟一個session會話
s = requests.session()
r = s.get(url=url,headers=headers,verify=False)
print(s.cookies)

#創建一個cookie對象
c = requests.cookies.RequestsCookieJar()
#添加登陸中需要的兩個cookie
c.set(‘.CNBlogsCookie‘, ‘E03F2436FA60A1D4DC98D0F772C86D8235401909810EAF6CB131808AE341D1A4044F70C2D8FC245D088D26A6D9D0CABC08118B4771FF57EBB9EAF90C6DA075C49B010FBC0BB6CE80EB0D9D2F4570C6D5283B0C17‘)  # 填上面抓包內容
c.set(‘.Cnblogs.AspNetCore.Cookies‘,‘CfDJ8FHXRRtkJWRFtU30nh_M9mChys2Bw8ClXXDqlqmNnXSJxmN5OJsmWovHs0DiVq1DxTy6LsEwU9x-Zc_oy0upWNl1PRyCpoMkfIChuLuxXI7xfaFEetn5v26kzJoUGARYhf5X23edoR56fLtBV8vLipWGoNU4-ZEQBnPGwHfpyYUZQE7bl9H41FW00bZv0izForvwwUDHtptG5W0wSI7H77rxdBOvrSUNe04NnKkp46dKhSSqhfJ3D5_zct8IfJNMvRyK-4BdOkOrLUy69QhTzVpf0Vda2FCyW0Sesy_xeH1UIgeqK-jQW2tzDbUq_m0XxQ‘)  # 填上面抓包內容
c.set(‘AlwaysCreateItemsAsActive‘,‘True‘)
c.set(‘AdminCookieAlwaysExpandAdvanced‘,"True")
#更新保存的cookie信息
s.cookies.update(c)
print(s.cookies)

3、登陸之後進入到發帖頁面,首先手動點擊,進入該頁面,找到該頁面的網址,然後在手動輸入要填寫的內容點擊提交之後,抓包看其中提交的數據,將其中的數據寫成字典格式,最後利用post請求提交內容,代碼如下所示:

#登陸成功之後保存編輯內容
r1 = s.get(‘https://i.cnblogs.com/EditPosts.aspx?opt=1‘,headers = headers,verify=False)

#保存草稿內容
url1 = ‘https://i.cnblogs.com/EditPosts.aspx?opt=1‘
body = {
    ‘__VIEWSTATE‘:‘‘,
    ‘__VIEWSTATEGENERATOR‘:‘FE27D343‘,
    ‘Editor$Edit$txbTitle‘:‘這是滿滿01‘,
    ‘Editor$Edit$EditorBody‘:‘<p>滿滿測試</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$txbTag‘:‘‘,
    ‘Editor$Edit$Advanced$tbEnryPassword‘:‘‘,
    ‘Editor$Edit$lkbDraft‘:‘存為草稿‘
}
r2 = s.post(url1,data=body)
print(r.status_code)

4、提交成功之後,手動進入博客園,打開草稿箱,會發現我們提交的內容已經顯示在草稿箱中

python學習--利用session進行博客園登陸並且自動發貼