Python爬虫——Cookie模拟登录
文章目錄
- Python爬蟲——Cookie模擬登錄
- 1、Cookie模擬登錄
- 2、Handler處理器
Python爬蟲——Cookie模擬登錄
1、Cookie模擬登錄
現(xiàn)在很多網(wǎng)站需要用戶成功登錄后才可以查看相關(guān)內(nèi)容。使用Cookie 模擬登錄可以很好地解決這種問題。
Cookie 是指某些網(wǎng)站服務(wù)器為了辨別用戶身份和進(jìn)行Session跟蹤,而儲存在用戶瀏覽器上的文本文件,Cookie是一個記錄了用戶登錄狀態(tài)以及用戶屬性的加密字符串,Cookie可以保持登錄信息到用戶下次與服務(wù)器的會話。Cookie 以鍵 / 值對形式存儲。
Cookie 驗(yàn)證流程:當(dāng)用戶第一次登陸網(wǎng)站時,服務(wù)端會在返回的響應(yīng)頭 Response Headers 中添加 Cookie數(shù)據(jù), 瀏覽器接收到響應(yīng)頭的信息后,會將 Cookie 保存至瀏覽器本地存儲中,當(dāng)用戶再次向該網(wǎng)站發(fā)送請求時,請求頭中就會攜帶 Cookie,這樣服務(wù)器通過讀取 Cookie 就能識別登陸用戶了。
Cookie在爬蟲方面最典型的應(yīng)用是判定注冊用戶是否已經(jīng)登錄網(wǎng)站,用戶在請求參數(shù)中傳入Cookie,在發(fā)送請求訪問url時,會跳過登錄界面,跳過登錄驗(yàn)證流程,從而直接訪問到想要的網(wǎng)站數(shù)據(jù)。
Cookie 模擬登錄使用實(shí)例:
注冊一個微博賬號,登錄微博并進(jìn)入個人主頁,使用F12打開瀏覽器的調(diào)試工具,在 Headers 選項(xiàng)中找到請求頭Request Headers 中的 Cookie 信息,復(fù)制保存。
import urllib.request import urllib.parseurl = 'https://weibo.com/u/6768120693/home'#請求頭參數(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處理器可以定制更高級的請求頭,基本的urlopen()方法不支持代理、動態(tài)cookie等其他的HTTP/HTTPS高級功能。
Handler處理器使用步驟:
- 使用Handler處理器(如HTTPHandler或HTTPSHandler)來創(chuàng)建特定功能的處理器對象;
- 然后通過urllib.request.build_opener()方法使用處理器,構(gòu)建opener對象;
- 使用構(gòu)建的opener對象,調(diào)用open()方法發(fā)送請求。
使用實(shí)例:
import urllib.requesturl = '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處理器對象 http_handler = urllib.request.HTTPHandler() #獲取HTTPSHandler處理器對象 https_handler = urllib.request.HTTPSHandler()#2、構(gòu)建opener對象 http_opener = urllib.request.build_opener(http_handler) https_opener = urllib.request.build_opener(https_handler)#定制請求 request = urllib.request.Request(url=url,headers=headers)#3、調(diào)用open方法發(fā)送請求 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>總結(jié)
以上是生活随笔為你收集整理的Python爬虫——Cookie模拟登录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Android开发当中如何在一个app
- 下一篇: python实训小队项目总结