1. 程式人生 > >PythonScript_003_通過Cookie模擬登陸人人網

PythonScript_003_通過Cookie模擬登陸人人網

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import urllib.request
import http.cookiejar # 相當於Python2的cookielib
'''
通過Cookie模擬登陸人人網,獲取請求
總結:1、POST請求需要登入的賬號密碼,cookie就儲存在opener物件當中
     2、訪問許可權介面
Python 3.7.0
'''

# 通過CookieJar()類構建一個cookieJar()物件,用來儲存cookie的值
cookie = http.cookiejar.CookieJar()

# 通過HTTPCookieProcessor()處理器類構建一個處理器物件,用來處理cookie
# 引數:構建CookieJar()物件
cookie_handler = urllib.request.HTTPCookieProcessor(cookie)

# 構建一個自定義的opener
opener = urllib.request.build_opener(cookie_handler)

# 通過自定義opener的addheaders的引數,可以賦值HTTP報頭引數
opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36")]

# 人人網的登入介面 http://www.renren.com/PLogin.do 沒有動態生成Token
url = "http://www.renren.com/PLogin.do"

# 這是需要登入的賬號密碼
data = {"email":"YourName","password":"YourPassword"}

# 轉成url編碼
data = urllib.parse.urlencode(data).encode("utf-8")

# 第一次是post請求,傳送登入需要的引數,獲取cookie
request = urllib.request.Request(url, data)

# 傳送第一次請求的post請求,請求之後cookie的值就存在於opener物件當中了
response = opener.open(request)

# print(response.read().decode("utf-8"))

# 第二次請求,該請求中就有cookie 請求其它許可權頁面
response_homepage = opener.open("http://www.renren.com/969005442/profile")

# 登陸後訪問的頁面
print(response_homepage.read().decode("utf-8"))