1. 程式人生 > >python接口自動化-Cookie_繞過驗證碼登錄

python接口自動化-Cookie_繞過驗證碼登錄

短信驗證碼 長時間 安全 發現 update htm info 繞過 als

前言

有些登錄的接口會有驗證碼,例如:短信驗證碼,圖形驗證碼等,這種登錄的驗證碼參數可以從後臺獲取(或者最直接的可查數據庫)

獲取不到也沒關系,可以通過添加Cookie的方式繞過驗證碼

前面在“python接口自動化-session_自動發文” 中其實已經用到,這裏再陳述一遍

一、Cookie介紹

1. cookie 特點

  • 1·保存在客戶端,一般由瀏覽器負責存儲在本地。
  • 2·通常是加密存儲的,不過由於存儲在本地,很難保證數據不被非法訪問,並不怎麽安全,所以cookies中不宜保存敏感信息,如密碼等。
  • 3·哪些信息需要保存作為cookie保存在客戶端本地,保存多長時間,一般是由服務器決定的,所以HTTP協議中通過服務器返回的響應報文頭中,有一個Set-Cookie域來指示瀏覽器或者其他客戶端,在本地保存cookie信息。
  • 4·cookie保存在客戶端本地的目的是為了下次訪問網站的時候可以直接取出來,上送服務器,所以HTTP協議中通過客戶端發送給服務器的請求報文頭中,有一個cookies域專門用於存放這個信息,以便客戶端將cookie信息發送給服務器。

2.抓取登錄cookie

登錄cookie = 登錄後的cookies - 登錄前的cookies

二、抓登錄cookie

1.獲取登錄前的cookie:先打開登錄首頁,刷新一下,fiddler抓包,獲取部分cookie

技術分享圖片

技術分享圖片

2.獲取登錄後的cookie:登錄成功後,再查看cookie變化,發現多了兩組參數,多的這兩組參數就是我們想要的

技術分享圖片

三、cookie組成結構

1.用抓包工具fidller只能看到cookie的name和value兩個參數,實際上cookie還有其它參數

2.以下是一個完整的cookie組成結構

cookie ={

u‘domain‘: u‘.cnblogs.com‘,
u‘name‘: u‘.CNBlogsCookie‘,
u‘value‘: u‘xxxx‘,
u‘expiry‘: 1491887887,
u‘path‘: u‘/‘,
u‘httpOnly‘: True,

u‘secure‘: False}

domain:服務器域名

name:cookie的名稱

value:cookie對應的值,動態生成的

expiry:cookie有效終止日期

path:path屬性定義了Web服務器上哪些路徑下的頁面可獲取服務器設置的cookie

httpOnly:防腳本攻擊

secure:在cookie中標記該變量,表明只有當瀏覽器和Web Server之間的通信協議為加密認證協議時,瀏覽器才向服務器提交相應的cookie。當前這種協議只有一種,即為HTTPS

四、添加cookie

1.往 session 裏面添加cookie可以用以下方式

2. set 裏面參數按括號裏面的參數格式

c = requests.cookies.RequestsCookieJar()

c.set(‘cookie-name‘, ‘cookie-value‘, path=‘/‘, domain=‘.xxx.com‘)

s.cookies.update(c)

3.於是添加登錄的cookie,把第一步 fiddler 抓到的內容填進去就可以了

c = requests.cookies.RequestsCookieJar()
c.set(‘.CNBlogsCookie‘, ‘xxx‘)
c.set(‘.Cnblogs.AspNetCore.Cookies‘,‘xxx‘)
s.cookies.update(c)
print(s.cookies)

五、代碼可參考上一篇文章

https://www.cnblogs.com/JodieRao/p/10589130.html

python接口自動化-Cookie_繞過驗證碼登錄