日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用urllib.request库获取cookie登录

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用urllib.request库获取cookie登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用urllib.request庫獲取cookie登錄

  • 一 、使用手動添加cookie的方式來獲取頁面
  • 二、使用 cookiejar 自動獲取登錄后獲得的cookie

一 、使用手動添加cookie的方式來獲取頁面

要獲取的是頁面 xxx.com/member/ 的內容,這個頁面是在登錄之后跳轉到一個新的頁面才得到。

用爬蟲爬取頁面A的內容時,所需要的cookie是在請求頁面A時請求頭【Request Headers】里面的cookie,用瀏覽器進行抓包時,如果頁面A是從其他頁面跳轉過來的,可以將頁面A進行刷新操作進行抓包

上圖就是 member 頁面進行抓包時獲取的請求頭里面的內容。請求頭里面的cookie就是登陸 member 頁面所需要的憑證,將該cookie添加到下面代碼中就可以抓取 member 頁面的內容。

import urllib.request url="http://www.yaozh.com/member/" headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36","Cookie":"http://www.yaozh.com/member/這個頁面請求頭里面的cookie" } #創建請求對象,改變請求頭 request=urllib.request.Request(url,headers=headers) #請求消息 response=urllib.request.urlopen(request) data=response.read() with open("cookie.html","wb") as f:f.write(data)

二、使用 cookiejar 自動獲取登錄后獲得的cookie

""" 獲取個人中心的頁面 1.代碼登錄 登錄成功 cookie(有效) 2.自動帶著cookie去請求個人中心 cookiejar自動保存cookie """ import urllib.request from http import cookiejar import urllib.parse# 添加cookie也要有cookie的處理器 # get:返回登錄頁面 # post:返回登錄后的結果,賬戶已經登錄進去了的頁面# 1.代碼登錄# 1.1 登錄的網址 login_url="https://www.yaozh.com/login"# 1.2 登錄的參數 # Form Data login_form_data={"username":"dong123456","pwd":"******","formhash":"892EF2A017","backurl":"https%253A%252F%252Fwww.yaozh.com%252F"} # 使用urllib.request時 post方法所攜帶的參數不能是字典形式 login_form_data_final=urllib.parse.urlencode(login_form_data)# 1.3 發送登錄請求POST,#自動保存cookie cook_jar=cookiejar.CookieJar()# 定義有添加 cookie功能的處理器 cook_handler=urllib.request.HTTPCookieProcessor(cook_jar)# 根據處理器生成opener opener=urllib.request.build_opener(cook_handler)# 帶著參數發送post請求,制作請求對象# 添加請求頭 headers={"Users-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}# 此時headers里面還沒有cookie,還沒有登錄 login_request=urllib.request.Request(login_url,headers=headers,data=login_form_data_final.encode("utf-8"))# 如果登錄成功。cookjar自動保存cookie,opener里面有cookjar,所以opener里有cookie#下面一步不需要返回數據,只要成功登陸就行 opener.open(login_request)# 2.代碼帶著cookie去訪問 個人中心 center_url="http://www.yaozh.com/member/" center_request=urllib.request.Request(center_url,headers=headers) response=opener.open(center_url) data=response.read()with open("cookie_02.html","wb") as f:f.write(data)

在用賬號、密碼登錄一個網站時,請求頭里面會帶著一些cookie文件去登錄,這些cookie是儲存在本地文件中的。登錄成功之后,response里面會返回 set-cookie ,這是服務器端返回給用戶端的 cookie 值,在之后訪問網站中的其他頁面時,請求就會帶著 set-cookie 中的 cookie 和部分登錄之前就存儲在本地文件中的 cookie 去訪問。

在本例中,通過 print(cookiejar.CookieJar())可以得到訪問個人中心頁面時請求頭里面的cookie,這些 cookie 是訪問時必須的

<CookieJar[<Cookie yaozh_jobstatus=kptta67UcJieW6zKnFSe2JyXnoaZbptol5qHnKZxanJT1qeSoMZYoNdzaJFyVMfU0MiVlpRrmmuHn9ibbHFXpJLUrZCnyqPKhnSqm2linYeCd2fa6F156Ed37412961242582d23A81Tlp2ZmWqbbp6Uh5ymcWlyU9WinpiDcdieamqbWmOYnpeZl5yUbZtnmJiHnLA%3Dc017bd785645e38f852dcb7111ff54ae for .yaozh.com/>, <Cookie yaozh_logintime=1595838366 for .yaozh.com/>, <Cookie yaozh_user=876326%09dong123456 for .yaozh.com/>, <Cookie yaozh_userId=876326 for .yaozh.com/>, <Cookie PHPSESSID=v34tinlllfv5ap3ku6aqju8p62 for www.yaozh.com/>, <Cookie acw_tc=2f624a7615958383660296581e5bfb406b61c57cdcd52602c8ae1f584de09b for www.yaozh.com/>]>

這6個必須的 cookie 由以下兩部分組成


在請求[http://www.yaozh.com/member/]這個頁面時,通過抓包所得到的的cookie不止6個,但是都包含了通過cookiejar所存儲的cookie

總結

以上是生活随笔為你收集整理的使用urllib.request库获取cookie登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。