国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python模擬登錄的多種方法(四種)

2020-02-15 21:36:15
字體:
供稿:網(wǎng)友

正文

方法一:直接使用已知的cookie訪問

特點:

  簡單,但需要先在瀏覽器登錄

原理:

  簡單地說,cookie保存在發(fā)起請求的客戶端中,服務(wù)器利用cookie來區(qū)分不同的客戶端。因為http是一種無狀態(tài)的連接,當服務(wù)器一下子收到好幾個請求時,是無法判斷出哪些請求是同一個客戶端發(fā)起的。而“訪問登錄后才能看到的頁面”這一行為,恰恰需要客戶端向服務(wù)器證明:“我是剛才登錄過的那個客戶端”。于是就需要cookie來標識客戶端的身份,以存儲它的信息(如登錄狀態(tài))。

  當然,這也意味著,只要得到了別的客戶端的cookie,我們就可以假冒成它來和服務(wù)器對話。這給我們的程序帶來了可乘之機。

  我們先用瀏覽器登錄,然后使用開發(fā)者工具查看cookie。接著在程序中攜帶該cookie向網(wǎng)站發(fā)送請求,就能讓你的程序假扮成剛才登錄的那個瀏覽器,得到只有登錄后才能看到的頁面。

具體步驟:

1.用瀏覽器登錄,獲取瀏覽器里的cookie字符串

  先使用瀏覽器登錄。再打開開發(fā)者工具,轉(zhuǎn)到network選項卡。在左邊的Name一欄找到當前的網(wǎng)址,選擇右邊的Headers選項卡,查看Request Headers,這里包含了該網(wǎng)站頒發(fā)給瀏覽器的cookie。對,就是后面的字符串。把它復(fù)制下來,一會兒代碼里要用到。

  注意,最好是在運行你的程序前再登錄。如果太早登錄,或是把瀏覽器關(guān)了,很可能復(fù)制的那個cookie就過期無效了。

2.寫代碼

  urllib庫的版本:

import sysimport iofrom urllib import requestsys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改變標準輸出的默認編碼#登錄后才能訪問的網(wǎng)站url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'#瀏覽器登錄后得到的cookie,也就是剛才復(fù)制的字符串cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'#登錄后才能訪問的網(wǎng)頁url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'req = request.Request(url)#設(shè)置cookiereq.add_header('cookie', raw_cookies)#設(shè)置請求頭req.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')resp = request.urlopen(req)print(resp.read().decode('utf-8'))

  requests庫的版本:

import requestsimport sysimport iosys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改變標準輸出的默認編碼#登錄后才能訪問的網(wǎng)頁url = 'http://ssfw.xmu.edu.cn/cmstar/index.portal'#瀏覽器登錄后得到的cookie,也就是剛才復(fù)制的字符串cookie_str = r'JSESSIONID=xxxxxxxxxxxxxxxxxxxxxx; iPlanetDirectoryPro=xxxxxxxxxxxxxxxxxx'#把cookie字符串處理成字典,以便接下來使用cookies = {}for line in cookie_str.split(';'): key, value = line.split('=', 1) cookies[key] = value            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南和县| 陇南市| 石渠县| 米泉市| 郴州市| 柳林县| 霍城县| 海丰县| 同江市| 遂平县| 隆子县| 泉州市| 嘉鱼县| 武功县| 竹北市| 察隅县| 乌鲁木齐县| 静乐县| 犍为县| 砀山县| 莫力| 通榆县| 德昌县| 介休市| 平武县| 平谷区| 蒙阴县| 龙游县| 高唐县| 四会市| 雅安市| 偃师市| 镇平县| 涪陵区| 盐亭县| 霸州市| 白朗县| 泾阳县| 安西县| 湘西| 武平县|