Python模擬登錄多種實現方式

  • 2020 年 1 月 13 日
  • 筆記

Python模擬登錄多種實現方式

基於Python 3.6

#coding:utf-8  import sys  import io  import urllib.request  import http.cookiejar        ################## 第一種登陸方式 ##################  ################## 直接使用已知的cookie訪問 ##################    # #改變標準輸出的默認編碼  # sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')  # #登錄後才能訪問的網站  # url = 'http://www.xxx.com.cn/member/index'    # #瀏覽器登錄後得到的cookie,也就是剛才複製的字元串  # cookie_str = 'PHPSESSID=go07n3aart4qoflrfe0m3nod42'    # #構造登錄請求  # request = urllib.request.Request(url)  # #設置cookie  # request.add_header('cookie', cookie_str)  # #設置請求頭  # request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36')  # # 請求頁面  # response = urllib.request.urlopen(request)  # print(response.read().decode('utf-8'))          ################## 第二種登陸方式 ##################  ################## 模擬登錄後再攜帶得到的cookie訪問 ##################    # #改變標準輸出的默認編碼  # sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')      # # 登陸資訊  # # 登錄後才能訪問的網站  # url = 'http://www.xxx.com.cn/member/index'  # login_url = "http://www.xxx.com.cn/login/quick_login"  # login_username = "xxx"  # login_password = "xxx"    # #登錄時需要POST的數據  # login_data = {  #     "username" : login_username,  #     "password" : login_password  # }  # post_data = urllib.parse.urlencode(login_data).encode('utf-8')    # #設置請求頭  # headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}  # #構造登錄請求  # req = urllib.request.Request(login_url, headers = headers, data = post_data)      # #構造cookie  # cookie = http.cookiejar.CookieJar()    # #由cookie構造opener  # opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))      # #發送登錄請求,此後這個opener就攜帶了cookie,以證明自己登錄過  # resp = opener.open(req)    # #構造訪問請求  # req = urllib.request.Request(url, headers = headers)    # resp = opener.open(req)    # print(resp.read().decode('utf-8'))          ################## 第三種登陸方式 ##################  ################## 保存Cookie到文件 ##################    # #改變標準輸出的默認編碼  # sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')    # # 登陸資訊  # # 登錄後才能訪問的網站  # url = 'http://www.xxx.com.cn/member/index'  # login_url = "http://www.xxx.com.cn/login/quick_login"  # login_username = "xxx"  # login_password = "xxx"    # #登錄時需要POST的數據  # login_data = {  #     "username" : login_username,  #     "password" : login_password  # }  # post_data = urllib.parse.urlencode(login_data).encode('utf-8')    # #設置請求頭  # headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}  # #構造登錄請求  # req = urllib.request.Request(login_url, headers = headers, data = post_data)    # #設置保存cookie的文件,同級目錄下的cookie.txt  # filename = 'cookie.txt'  # #聲明一個MozillaCookieJar對象實例來保存cookie,之後寫入文件  # cookie = http.cookiejar.MozillaCookieJar(filename)    # #由cookie構造opener  # opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))      # #發送登錄請求,此後這個opener就攜帶了cookie,以證明自己登錄過  # resp = opener.open(req)  # #保存cookie到文件  # cookie.save(ignore_discard=True, ignore_expires=True)    # #構造訪問請求  # req = urllib.request.Request(url, headers = headers)    # resp = opener.open(req)    # print(resp.read().decode('utf-8'))          ################## 第四種登陸方式 ##################  ################## 從文件中獲取Cookie並訪問 ##################    #改變標準輸出的默認編碼  sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')    # 登陸資訊  # 登錄後才能訪問的網站  url = 'http://www.xxx.com.cn/member/index'    #設置請求頭  headers = {'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}  #構造登錄請求  req = urllib.request.Request(url, headers = headers)    #設置保存cookie的文件的文件名,相對路徑,也就是同級目錄下  filename = 'cookie.txt'  #創建MozillaCookieJar實例對象  cookie = http.cookiejar.MozillaCookieJar()  #從文件中讀取cookie內容到變數  cookie.load(filename, ignore_discard=True, ignore_expires=True)  #利用urllib.request庫的HTTPCookieProcessor對象來創建cookie處理器,也就CookieHandler  handler = urllib.request.HTTPCookieProcessor(cookie)  #通過CookieHandler創建opener  opener = urllib.request.build_opener(handler)  #此用opener的open方法打開網頁  response = opener.open(req)  #列印資訊  print(response.read().decode('utf-8'))

Tags: