1. 程式人生 > >爬蟲使用cookie模擬登入

爬蟲使用cookie模擬登入

使用cooklelib庫和Httpcookieprocessora模擬登入
Cookie是指網站伺服器為了辨別使用者身份和進行 Session跟蹤,而儲存在使用者瀏覽器的文字檔案, Cookie可以保持登入資訊到使用者下次與伺服器的會話。
這裡以人人網為例。人人網中,要訪回某個人的主頁,必須先登入才能訪問,登入說白了就是要有cookie資訊。那麼如果我們想要用
程式碼的方式訪問,就必須要有正確的cookie資訊才能訪問。解決方案有兩種,第一種是使用瀏覽器訪問,然後將 cookie資訊複製下來,放到 headers中。示例程式碼如下:

from urllib import request
headers =(
user-Aent':'Hozi11a15.e(indosNT1e.e;in64;x64)AppleMebKt/537.36(KHTHL,11keGecko)Chrome/62.8.3282.,94';
'cookie':'anonymidsjacduz2x-8bldx; 'depovince':WG;_re1_=1;_g-6A1.2.1455063316.1511436360;1d=6A1,2.862627163.15
url='http://www.renren.com/880151247/profile'
req = request.Request(url, headers-headers)
resp = request.urlopen(req)
with open('renren. html',w)as fp:
  fp.write(resp.read().decode(utf-8"))


但是每次在訪回需要cookie的頁面都要從覽器中複製cookie比麻煩。在Phon處理Cookie,一般是通過http.cookiejar模組
和urllib模組的Httpcookieprocessor處理器類一起使用, http.cookieiar模組主要作用是提供用於儲存cookie的物件。而Httpcookieprocessor處理器主要作用是處理這些cookie物件,並構建handler物件。

 

儲存cookie到本地儲存cookie到本地,可以使用cookiejar的save方法,並且需要制定一個檔名:

from urllib import request
from http.cookiejar import MozillaCookieJar

cookiejar = MozillaCookieJar("cookie.txt")
handler = request.HTTPCookieProcessor(cookiejar)
opener = request.build_opener(handler)

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}

req = request.Request('http://httpbin.org/cookies',headers=headers)

resp = opener.open(req)
print(resp.read())
cookiejar.save(ignore_discard=True,ignore_expires=True)