在requests如何添加Cookie參數


首先啥是cookie呢

上面這段話來自於:Python的Cookie詳解

看懂了嗎? 我反正沒看懂。簡單說cookie就是客戶端向服務器端保持狀態的,它可以辨別用戶的身份,大部分是加密的。我們可以用的就是模擬登陸,在需要輸入登陸賬號和密碼的網站就可以利用Cookie來獲取數據,比如csdn。

一般攜帶Cookie請求有三種方式:

三種Cookie請求方式:

第一種:cookie放在headers中

這里以請求我自己的博客首頁為例:
這里寫圖片描述

 

 首先找到登陸之后的Cookie和User-Agent,然后將User-Agent和Cookie復制到程序里面,如下:

import requests

url = "https://blog.csdn.net/williamgavin"

headers = {"User_Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
"Cookie" : "這個還是算了吧,用你們自己的博客試 ^-^ "
}
response = requests.get(url, headers = headers )
with open("csdn.html", "w", encoding="utf-8") as f:
f.write(response.content.decode());

 

這樣就將這個頁面的數據返回到了csdn.html這個文件里面,打開看一下,如下圖:
這里寫圖片描述
和我自己的博客主頁是一樣的,而且超鏈接都保留了。

 

第二種:cookie字典傳給cookies參數

這里以請求人人網為例:
這里寫圖片描述

找到對應的cookie和User-Agent

這里寫圖片描述

 

import requests

url = "http://www.renren.com/967272361/profile"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36",
}

# 不帶上Cookie就訪問不了這個頁面
cookie = "anonymid=jk63khrk-y97r4p; _r01_=1; ln_uact=mr_mao_hacker@163.com; ln_hurl=http://hdn.xnimg.cn/photos/hdn421/20180720/1740/main_JAWQ_0aa000000ceb195a.jpg; _ga=GA1.2.273332130.1532825428; depovince=HUN; JSESSIONID=abcE5k0CiAJDc9ESVEcuw; ick_login=026ba348-e4e9-4871-9ce3-5868b95cfdd3; first_login_flag=1; loginfrom=syshome; wp_fold=0; BAIDU_SSP_lcr=https://www.baidu.com/link?url=VRx_HKUd53I5rYWZHvrQ9VVLotqST6-jtaZDlscFYCO&wd=&eqid=e957aec400037928000000065b64fcab; ick=64518f30-9a22-47df-b3c3-4114f185c3c6; t=8fcf47068763c279eea2620b51b7a3311; societyguester=8fcf47068763c279eea2620b51b7a3311; id=967272361; xnsid=fd736c63; jebecookies=3f9a3853-3371-4857-8268-308d663ca146|||||; jebe_key=19041c4e-4d38-4dc1-bfb9-124b81afae61%7C33b1d8f602cf6dd5a9834fe6f2bf97f2%7C1533346094265%7C1%7C1533346099750"

# 將上面哪個cookie轉化成字典類型
cookie_dict = {i.split("=")[0]:i.split("=")[-1] for i in cookie.split("; ")}
response = requests.get(url, headers = headers, cookies = cookie_dict)

with open("renren2.html", "w", encoding="utf-8") as f:
f.write(response.content.decode())

 

結果如下:
這里寫圖片描述

 

第三種 先發送post請求,獲取cookie,帶上cookie請求登陸之后的頁面

這里要用到一個seesion類,seesion 實例具有的方法和requests一樣,但是 seesion具有保持功能, 就類似瀏覽器輸入一次密碼之后,會自動保留cookie

seesion = requests.seesion()
seesion.post(url, data, headers) # 服務器設置在本地的cookie會保存在本地
seesion.get(url) # 會帶上之前保存在seesion中的cookie,能夠請求成功
這種方法要先提交自己的賬號密碼,並且要找到提交的地址。那么如何找到提交地址呢?


第一種方式:找form表單的action屬性

這里寫圖片描述

import requests

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"}

seesion = requests.session()

# 因為人人網有from表單,所以可以直接找地址:http://www.renren.com/PLogin.do
# 如果沒有的就要抓包了

post_url = "http://www.renren.com/PLogin.do" # form表單里面直接找到的
#post_url = "http://www.renren.com/ajaxLogin/login?
# 用戶名作為鍵, 真正的密碼作為值 模擬登陸
post_data = {"email":"xxxx", "password":"xxxx"}
seesion.post(post_url, headers = headers, data = post_data)

url = "再次請求登陸的url"

response = seesion.get(url, headers = headers)

with open("renren3.html", "w", encoding="utf-8") as f:
f.write(response.content.decode())

 

第二種方式抓包獲取url
這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM