一、requests庫安裝
1.1 安裝
-
方法1
pip install requests 從國外網站下載庫安裝 -
方法2
pip installrequests -i 鏡像地址 鏡像地址網站: 豆瓣鏡像:https://pypi.douban.com/simple/ 清華:https://pypi.tuna.tsinghua.edu.cn/simple 阿里雲:http://mirrors.aliyun.com/pypi/simple/ 中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/ 華中理工大學:http://pypi.hustunique.com/ 山東理工大學:http://pypi.sdutlinux.org/
1.2 查驗
pip list 列表查看,能看到安裝的庫名,説明安裝成功
pip show 庫名 查詢庫的版本及其他相關信息。説明安裝成功
1.3 http請求方式
resp = requests.請求方法(url='URL地址', params={k:v}, headers={k:v},
data={k:v}, json={k:v}, cookies='cookie數據(如:令牌)')
請求方法:
get請求 - get方法
post請求 - post方法
put請求 - put方法
delete請求 - delete方法
url:要訪問的地址 - string類型
params:查詢參數 - 字典
headers:請求頭 - 字典
data:表單 格式請求體數據 - 字典 - tpshop商城項目
json:json 格式請求體數據 - 字典 - ihrm項目
cookies:用來傳遞cookies 【瞭解】
resp:代表響應結果。
二、 Cookie
- cookie 是工程師,針對 http協議 是無狀態這一特徵,設計的一種技術。
- cookie 將數據保存在瀏覽器端。默認存儲空間大小為 4k(可以修改)。
- cookie 中的數據,用户和隨意獲取,沒有安全性可言。
- cookie 中存放的數據類型,受瀏覽器限制。
- cookie 中大多存放於網絡通信相關的不敏感數據信息。提高訪問速度。如:用户名、登錄狀態等。
2.1 Cookie+Session認證方式
校驗用户身份的方法
- 令牌校驗
- cookie+session
eg:完整實現某商城登錄,並獲取 “我的訂單” 頁面數據。
# 導包
import requests
# 發送獲取驗證碼 get 請求,指定url, 獲取響應結果
resp1 = requests.get(url="http://xxxxxx/index.php?m=Home&c=user&a=verify")
# 從響應結果中,提取cookie值
my_cookie = resq1.cookies
# 發送登錄post請求,攜帶cookie值,獲取結果
resp2 = requests.post(url="http://xxxxxxxxx/index.php?m=Home&c=User&a=do_login",
data={
"username": "13812345678",
"password": "123456",
"verify_code": "8888"},
cookies=my_cookie
)
# 打印,查看登錄結果
print("登錄結果為:", resp2.json())
# 發送查看我的訂單get請求,攜帶cookie值,獲取結果
resp3 = requests.get(url="http://xxxxxxxx/Home/Order/order_list.html",
cookies=my_cookie)
# 打印,查看我的訂單頁面
print(“我的訂單頁面”, resp3.text)
三、 Session(會話)
3.1 概念
從客户端登錄服務器開始,直到客户端退出登錄,所產生的所有通信數據,保存在 session中
3.2 特徵
- **session 將數據存在服務器端**
- **session 使用服務器存儲空間,沒有大小限制。**
- **session 支持的數據類型,受服務器主機影響。幾乎支持所有數據類型。**
- **session 中的數據,大都採用 加密、轉碼存儲。安全性較高。**
3.3 結論
Session自動管理Cookie:原因,cookie中的數據,都是由 session 提供的。
3.4 案例
eg:用session 實現登錄商城
步驟:
1. 創建 session 實例。session = requests.Session()**
2. 使用 session 實例 發送 獲取驗證碼 get 請求。( 不需要提取 cookie )
3. 使用 同一個session 實例 發送 登錄 post 請求。( 不需要攜帶 cookie )
# 1. 導包
import requests
# 2. 創建 session 實例
session = requests.Session()
# 3. 藉助 session實例,發送 獲取驗證碼 get請求,指定url(不需要提取cookie)
session.get(url="http://xxxxxxxx/index.php?m=Home&c=User&a=verify")
# 4. 藉助 同一個session實例,發送 登錄 post請求,指定 url、請求頭、請求體(不需要攜帶cookie)
resp2 = session.post(url="http://xxxxxxxxxx/index.php?m=Home&c=User&a=do_login",
data={"username": "13812345678", "password": "123456", "verify_code": "8888"})
print("登錄結果:", resp2.json())
四、 Cookie 和 Session 區別
-
數據存儲位置:
- Cookie 存儲在 瀏覽器端
- Session 存儲在 服務器端
-
安全性:
- Cookie 直接存儲在瀏覽器,可以任意獲取,沒有安全性可言。
- Session 存儲在 服務器端,採用 加密、轉碼形式存儲數據,安全性較高。
-
數據類型
- Cookie 直接存儲在瀏覽器,支持測試數據類型受瀏覽器限制
- Session 存儲在 服務器端,服務器就是一台主機。因此幾乎支持所有的數據類型。
-
大小:
- Cookie 默認大小 4k(可調)
- Session 直接使用服務器存儲。沒有大小限制。