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