python 爬蟲 cookies設定,獲取登陸後介面。
阿新 • • 發佈:2018-12-12
前言
Cookie
Cookie 是指某些網站伺服器為了辨別使用者身份和進行Session跟蹤,而儲存在使用者瀏覽器上的文字檔案,Cookie可以保持登入資訊到使用者下次與伺服器的會話。
Cookie原理
HTTP是無狀態的面向連線的協議, 為了保持連線狀態, 引入了Cookie機制 Cookie是http訊息頭中的一種屬性,包括:
Cookie名字(Name)
Cookie的值(Value)
Cookie的過期時間(Expires/Max-Age)
Cookie作用路徑(Path)
Cookie所在域名(Domain),
使用Cookie進行安全連線(Secure)。
前兩個引數是Cookie應用的必要條件,另外,還包括Cookie大小(Size,不同瀏覽器對Cookie個數及大小限制是有差異的)。
Cookie由變數名和值組成,根據 Netscape公司的規定,Cookie格式如下:
Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
Cookie應用
Cookies在爬蟲方面最典型的應用是判定註冊使用者是否已經登入網站,使用者可能會得到提示,是否在下一次進入此網站時保留使用者資訊以便簡化登入手續。
使用Cookies獲取qq空間登陸後介面
在網頁登入qq空間,進入說說介面,F12或檢查,重新整理一下,找到網頁主題檔案,複製cookies
# -*- coding:UTF-8 -*- import urllib2 headers = { "Host":"user.qzone.qq.com", "Connection":"keep-alive", "Upgrade-Insecure-Requests":"1", "user-agent":" Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36", "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "Accept-Language":"zh-CN,zh;q=0.9", "Cookie": "****************************" } request = urllib2.Request("https://user.qzone.qq.com/2844194604", headers = headers) response = urllib2.urlopen(request) print response.read()
結果:一段巨大的html
模擬登入要注意幾點:
- 登入一般都會先有一個HTTP GET,用於拉取一些資訊及獲得Cookie,然後再HTTP POST登入。
- HTTP POST登入的連結有可能是動態的,從GET返回的資訊中獲取。
- password 有些是明文傳送,有些是加密後傳送。有些網站甚至採用動態加密的,同時包括了很多其他資料的加密資訊,只能通過檢視JS原始碼獲得加密演算法,再去破解加密,非常困難。
- 大多數網站的登入整體流程是類似的,可能有些細節不一樣,所以不能保證其他網站登入成功。