欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python爬蟲實(shí)現(xiàn)Cookie模擬登錄

 更新時(shí)間:2024年04月10日 16:16:40   作者:萬(wàn)里顧—程  
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)Cookie模擬登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

0.模擬登錄原理

模擬登錄,一般是網(wǎng)站在瀏覽器中使用POST請(qǐng)求向后端發(fā)送數(shù)據(jù)請(qǐng)求的過(guò)程,響應(yīng)后的數(shù)據(jù)一般會(huì)設(shè)置相關(guān)的Session與Cookie標(biāo)識(shí)用戶的登錄標(biāo)識(shí)。對(duì)于前后端分離的項(xiàng)目中,也有可能是加密密鑰的token,例如 ,jwt 登錄的方式的 token 一般包含時(shí)效性,當(dāng)然cookie 也具備時(shí)效性。但是在登錄請(qǐng)求的請(qǐng)求頭并不用包含,因?yàn)檫@些都是登錄后的返回結(jié)果的信息,務(wù)必注意區(qū)分。

1、Cookie模擬登錄

現(xiàn)在很多網(wǎng)站需要用戶成功登錄后才可以查看相關(guān)內(nèi)容。使用Cookie 模擬登錄可以很好地解決這種問(wèn)題。

Cookie 是指某些網(wǎng)站服務(wù)器為了辨別用戶身份和進(jìn)行Session跟蹤,而儲(chǔ)存在用戶瀏覽器上的文本文件,Cookie是一個(gè)記錄了用戶登錄狀態(tài)以及用戶屬性的加密字符串,Cookie可以保持登錄信息到用戶下次與服務(wù)器的會(huì)話。Cookie 以鍵 / 值對(duì)形式存儲(chǔ)。

Cookie 驗(yàn)證流程:當(dāng)用戶第一次登陸網(wǎng)站時(shí),服務(wù)端會(huì)在返回的響應(yīng)頭 Response Headers 中添加 Cookie數(shù)據(jù), 瀏覽器接收到響應(yīng)頭的信息后,會(huì)將 Cookie 保存至瀏覽器本地存儲(chǔ)中,當(dāng)用戶再次向該網(wǎng)站發(fā)送請(qǐng)求時(shí),請(qǐng)求頭中就會(huì)攜帶 Cookie,這樣服務(wù)器通過(guò)讀取 Cookie 就能識(shí)別登陸用戶了。

Cookie在爬蟲方面最典型的應(yīng)用是判定注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站,用戶在請(qǐng)求參數(shù)中傳入Cookie,在發(fā)送請(qǐng)求訪問(wèn)url時(shí),會(huì)跳過(guò)登錄界面,跳過(guò)登錄驗(yàn)證流程,從而直接訪問(wèn)到想要的網(wǎng)站數(shù)據(jù)。

Cookie 模擬登錄使用實(shí)例:

注冊(cè)一個(gè)微博賬號(hào),登錄微博并進(jìn)入個(gè)人主頁(yè),使用F12打開瀏覽器的調(diào)試工具,在 Headers 選項(xiàng)中找到請(qǐng)求頭Request Headers 中的 Cookie 信息,復(fù)制保存。

import urllib.request
import urllib.parse

url = 'https://weibo.com/u/6768120693/home'

#請(qǐng)求頭參數(shù)
headers = {
    'cookie': 'UPSTREAM-V-WEIBO-COM=35846f552801987f8c1e8f7cec0e2230; _s_tentry=passport.weibo.com; Apache=3550042880907.0825.1657677410065; SINAGLOBAL=3550042880907.0825.1657677410065; ULV=1657677410241:1:1:1:3550042880907.0825.1657677410065:; XSRF-TOKEN=wpUjXoB3U_T8KzDcYBGeQmeg; WBPSESS=dg5zs_KFY81p0FnDKmb34Ti2iJGu9QxJdhMzG8ikVBN-CyoFvr-FTOapET7oPxP0FTRcDR-4ospowpRpkqiE8Gga-FNf9Bekers3TFYG5vxMEBfXahOBmCiJK7XwTPB_GaeInt3uz0W9CfgA545n9SWoyDpY910MV0NogSygO48=; PC_TOKEN=fd99713024; login_sid_t=6d987092eac2182f810741424691738b; cross_origin_proto=SSL; WBStorage=4d96c54e|undefined; wb_view_log=1920*10801; SUB=_2A25Py7HwDeRhGeBJ7VoQ8i7Kwj-IHXVsoKQ4rDV8PUNbmtAKLVPNkW9NRi9nZzdxPj2ym6xf8i-dSCWgSnyp4GVC; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5e8Y.xknmxKI8AQq4L07-c5JpX5KzhUgL.FoqNSonpeo5c1Ke2dJLoI0.LxKqL1h5L1KzLxKqL1KqLBK-LxKqL1hnL1K2LxKML1-2L1hBLxK-L1K5L12BLxK-LB-BL1KUT-27t; ALF=1689318688; SSOLoginState=1657782688; wvr=6; wb_view_log_6768120693=1920*10801; webim_unReadCount=%7B%22time%22%3A1657782816028%2C%22dm_pub_total%22%3A0%2C%22chat_group_client%22%3A0%2C%22chat_group_notice%22%3A0%2C%22allcountNum%22%3A40%2C%22msgbox%22%3A0%7D',
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
}

request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')

with open('weibo.html','w',encoding='utf-8') as file:
    file.write(content)

2、Handler處理器

Handler處理器可以定制更高級(jí)的請(qǐng)求頭,基本的urlopen()方法不支持代理、動(dòng)態(tài)cookie等其他的HTTP/HTTPS高級(jí)功能。

Handler處理器使用步驟:

  • 使用Handler處理器(如HTTPHandler或HTTPSHandler)來(lái)創(chuàng)建特定功能的處理器對(duì)象;
  • 然后通過(guò)urllib.request.build_opener()方法使用處理器,構(gòu)建opener對(duì)象;
  • 使用構(gòu)建的opener對(duì)象,調(diào)用open()方法發(fā)送請(qǐng)求。

使用實(shí)例:

import urllib.request

url = 'http://www.baidu.com'

headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.5261 SLBChan/10'
}
#1、獲取HTTPHandler處理器對(duì)象
http_handler = urllib.request.HTTPHandler()
#獲取HTTPSHandler處理器對(duì)象
https_handler = urllib.request.HTTPSHandler()

#2、構(gòu)建opener對(duì)象
http_opener = urllib.request.build_opener(http_handler)
https_opener = urllib.request.build_opener(https_handler)

#定制請(qǐng)求
request = urllib.request.Request(url=url,headers=headers)

#3、調(diào)用open方法發(fā)送請(qǐng)求
http_response = http_opener.open(request)
https_response = https_opener.open(request)

print(http_response)
print(https_response)

執(zhí)行結(jié)果:

<http.client.HTTPResponse object at 0x000002220510A470>
<http.client.HTTPResponse object at 0x0000022205116CC0>

到此這篇關(guān)于Python爬蟲實(shí)現(xiàn)Cookie模擬登錄的文章就介紹到這了,更多相關(guān)Python爬蟲模擬登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python遍歷文件夾的各種方法大全

    python遍歷文件夾的各種方法大全

    在Python中,可以使用多種方法來(lái)多次遍歷文件,下面這篇文章主要給大家介紹了關(guān)于python遍歷文件夾的各種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Python?statistics模塊示例詳解

    Python?statistics模塊示例詳解

    這篇文章主要介紹了Python?statistics模塊示例詳解,本文總結(jié)了 statistics 模塊的常規(guī)操作,對(duì)于數(shù)據(jù)分析還是非常有益處的,需要的朋友可以參考下
    2023-05-05
  • python線程定時(shí)器Timer實(shí)現(xiàn)原理解析

    python線程定時(shí)器Timer實(shí)現(xiàn)原理解析

    這篇文章主要介紹了python線程定時(shí)器Timer實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python創(chuàng)建xml的方法

    Python創(chuàng)建xml的方法

    這篇文章主要介紹了Python創(chuàng)建xml的方法,實(shí)例分析了Python操作XML文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python實(shí)現(xiàn)捕獲異常發(fā)生的文件和具體行數(shù)

    Python實(shí)現(xiàn)捕獲異常發(fā)生的文件和具體行數(shù)

    這篇文章主要介紹了Python實(shí)現(xiàn)捕獲異常發(fā)生的文件和具體行數(shù)。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼

    python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼

    今天小編就為大家分享一篇python3連接kafka模塊pykafka生產(chǎn)者簡(jiǎn)單封裝代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python對(duì)輸出的奇數(shù)偶數(shù)排序?qū)嵗a

    python對(duì)輸出的奇數(shù)偶數(shù)排序?qū)嵗a

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python對(duì)輸出的奇數(shù)偶數(shù)排序?qū)嵗a內(nèi)容,有興趣的朋友們可以參考下。
    2020-12-12
  • Jupyter Notebook輸出矢量圖實(shí)例

    Jupyter Notebook輸出矢量圖實(shí)例

    這篇文章主要介紹了Jupyter Notebook輸出矢量圖實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python dataframe astype 字段類型轉(zhuǎn)換方法

    python dataframe astype 字段類型轉(zhuǎn)換方法

    下面小編就為大家分享一篇python dataframe astype 字段類型轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • django將圖片保存到mysql數(shù)據(jù)庫(kù)并展示在前端頁(yè)面的實(shí)現(xiàn)

    django將圖片保存到mysql數(shù)據(jù)庫(kù)并展示在前端頁(yè)面的實(shí)現(xiàn)

    這篇文章主要介紹了django將圖片保存到mysql數(shù)據(jù)庫(kù)并展示在前端頁(yè)面的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論