cookie
Cookie 是指某些網站伺服器為了辨識使用者身份和進行Session跟蹤,而儲存在使用者浏覽器上的文本檔案,Cookie可以保持登入資訊到使用者下次與伺服器的會話。/p>
cookie如何工作
當你第一次通路某個網站的時候,伺服器會給你頒發一個特定的cookie,之後你每次通路這個站點,你發送的請求頭裡都會帶上相應的cookie,這樣伺服器便知道這倆請求是同一個客戶發送的。
白話:登入後服務會生成一個cookie每次通路這個網站時浏覽器都會帶上這個cookie,就會自動登入賬号
示例網站:https://www.douban.com/
方法一
登入
使用浏覽器的抓包找到豆瓣網的登入接口,利用requests子產品post送出參數

擷取登入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

session方法
方法三
使用selenium包中webdriver(網頁自動化測試)登入輸入賬号密碼,登入後擷取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儲存到檔案裡