博客 / 詳情

返回

requests庫

一、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
    image.png

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 區別

  1. 數據存儲位置:

    • Cookie 存儲在 瀏覽器端
    • Session 存儲在 服務器端
  2. 安全性:

    • Cookie 直接存儲在瀏覽器,可以任意獲取,沒有安全性可言。
    • Session 存儲在 服務器端,採用 加密、轉碼形式存儲數據,安全性較高。
  3. 數據類型

    • Cookie 直接存儲在瀏覽器,支持測試數據類型受瀏覽器限制
    • Session 存儲在 服務器端,服務器就是一台主機。因此幾乎支持所有的數據類型。
  4. 大小:

    • Cookie 默認大小 4k(可調)
    • Session 直接使用服務器存儲。沒有大小限制。
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.