天天看點

登入cookies

cookie

Cookie 是指某些網站伺服器為了辨識使用者身份和進行Session跟蹤,而儲存在使用者浏覽器上的文本檔案,Cookie可以保持登入資訊到使用者下次與伺服器的會話。/p>

cookie如何工作

當你第一次通路某個網站的時候,伺服器會給你頒發一個特定的cookie,之後你每次通路這個站點,你發送的請求頭裡都會帶上相應的cookie,這樣伺服器便知道這倆請求是同一個客戶發送的。

白話:登入後服務會生成一個cookie每次通路這個網站時浏覽器都會帶上這個cookie,就會自動登入賬号

示例網站:https://www.douban.com/

方法一

登入

使用浏覽器的抓包找到豆瓣網的登入接口,利用requests子產品post送出參數

登入cookies

擷取登入cookies

使用cookies登入豆瓣網

登入cookies
登入cookies
import requests
from requests.cookies import RequestsCookieJar

#豆瓣登入位址
url2 = \'https://www.douban.com\'
url = \'https://accounts.douban.com/j/mobile/login/basic\'

data = {
    #未知
    \'ck\': \'\',
    #賬号
    \'name\': \'185********\',
    #密碼
    \'password\': \'*********\',
    #是否下次自動登入
    \'remember\': True,
    #未知
    \'ticket\': \'\'
}
r = requests.post(url, data=data)
#登入cookie
c = r.cookies.get_dict()
r2 = requests.get(url2, cookies=c)
#列印登入後的網頁,如顯示自己的使用者名才登陸成功
print(r2.text)      

使用cookies擷取登入後的界面

方法二

使用requests裡的session對象,這個方法能夠幫我們在跨請求中保持一些參數,而且所有請求之間保持一個cookies

登入cookies

session方法

方法三

使用selenium包中webdriver(網頁自動化測試)登入輸入賬号密碼,登入後擷取cookies

登入cookies
登入cookies
import requests
from selenium import webdriver

#豆瓣登入位址
# url_address = \'https://accounts.douban.com/j/mobile/login/basic\'
url = \'https://www.douban.com\'

chrome = webdriver.Chrome(\'F:/Program Files (x86)/webdriver/chromedriver.exe\')
chrome.get(url)
#切換到登入界面的html
chrome.switch_to.frame(0)
#使用xpath擷取到賬号密碼登入并點選
chrome.find_element_by_xpath(\'//li[@class="account-tab-account"]\').click()
#使用xpath擷取到賬号輸入框并輸入賬号
chrome.find_element_by_xpath(\'//input[@id="username"]\').send_keys(\'185********\')
#使用xpath擷取密碼輸入框并輸入密碼
chrome.find_element_by_xpath(\'//input[@id="password"]\').send_keys(\'********\')
#點選登入按鈕
chrome.find_element_by_xpath(\'//div[@class="account-form-field-submit "]\').click()
#接收cookies并列印
cookies = chrome.get_cookies()
print(cookies)      

webdriver

selenium

三種擷取利用cookies登入方式

1. 前兩種需要分析登入接口,比較麻煩,第三種擷取登入cookies比較簡單

2. 能擷取到登入cookies之後盡量少調試,調試多了賬号容易被鎖定,這裡就可以把一次登入的cookies儲存到檔案,就可以不用每次調試就重新擷取一次cookies

把擷取到的cookies儲存到檔案裡