python3的爬蟲筆記7——驗(yàn)證碼登錄

(1)方法一手動(dòng)輸入驗(yàn)證碼

對于需要驗(yàn)證碼登錄的情況资柔,采用先下載驗(yàn)證碼圖片甘桑,手動(dòng)輸入后拍皮,利用cookie保持在線,從而獲取網(wǎng)頁信息跑杭,這是一種比較簡單的方法铆帽。
這里以登錄廈門大學(xué)選課系統(tǒng)為例。


我們先隨便輸入帳號密碼

然后記得把Fiddler插件clear下德谅,點(diǎn)擊登錄爹橱,看下需要post哪些信息。


我們得到了實(shí)際登錄url:Request URL女阀,需要傳送的數(shù)據(jù)分別是驗(yàn)證碼(checkCode)宅荤,密碼(password),帳號(username)浸策。由于驗(yàn)證碼是變化的冯键,所以這次登錄的關(guān)鍵就是能獲取驗(yàn)證碼。

在選課系統(tǒng)頁面庸汗,調(diào)出開發(fā)者工具惫确,先點(diǎn)擊下紅圈位置的小鼠標(biāo)圖案,然后在原頁面點(diǎn)下驗(yàn)證碼的地方蚯舱,在開發(fā)者工具Elements中出現(xiàn)了關(guān)于驗(yàn)證碼區(qū)域的信息改化,我們得到了驗(yàn)證碼的網(wǎng)址(圖中灰色部分http://)。



看起來這個(gè)驗(yàn)證碼網(wǎng)址并沒有什么參數(shù)的變化枉昏,理論上直接拿來用也就可以了陈肛,但許多網(wǎng)站的驗(yàn)證碼網(wǎng)址也是有變化的,這里最好還是用正則表達(dá)式或者BeautifulSoup等工具把它提取出來兄裂。

保存圖片并打開的模板:

from PIL import Image
#注意是'wb'和xx.content
with open('code.jpg','wb') as fp:
    fp.write(response.content)
#打開并顯示圖片
img=Image.open('code.jpg')
img.show()

代碼和上一節(jié)的登錄廈大師生系統(tǒng)差不多句旱,使用requests模塊(相比urllib,實(shí)在是簡潔多了晰奖,可讀性也好)

import requests
import re
from PIL import Image
#廈大選課url
url = 'http://bkxk.xmu.edu.cn/xsxk/login.html'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/55.0.2883.103 Safari/537.36', 'Connection':'keep-alive'}
#定義一個(gè)session()的對象實(shí)體s來儲存cookie
s =requests.session()
response1 = s.get(url=url, headers=headers)
response1.encoding = 'utf-8'
html1 = response1.text
#利用正則表達(dá)式找到驗(yàn)證碼的url谈撒,由于得到的是列表,用list[0]轉(zhuǎn)成str
cheakcode_url = re.findall(r'<img\s*src="(.*?)"\s*width="80px"\s*height="20px"',html1)[0]
response2 = s.get(url=cheakcode_url, headers=headers)
#在當(dāng)前文件夾保存為code.jpg匾南,注意要用'b'的二進(jìn)制寫的方式啃匿,用content來獲得bytes格式
with open('code.jpg','wb') as fp:
    fp.write(response2.content)
#打開并顯示圖片
img=Image.open('code.jpg')
img.show()
#需要給服務(wù)端傳送的數(shù)據(jù),字典格式
data = {}
data['username'] = '你的帳號'
data['password'] = '你的密碼'
data['checkCode'] = input('輸入驗(yàn)證碼:')
response3 = s.post(url=url, data=data, headers=headers)
print(response3.text)

運(yùn)行時(shí)會(huì)彈出驗(yàn)證碼圖片

然后輸入驗(yàn)證碼:


瞄一眼都print了啥

顯然就是登錄進(jìn)來的界面了



接下來就能愉快地用帶cookie的s.get(new_url)繼續(xù)訪問其他網(wǎng)頁了。

(2)方法二使用cookie登錄

使用cookie登陸溯乒,服務(wù)器會(huì)認(rèn)為你是一個(gè)已登陸的用戶夹厌,所以就會(huì)返回給你一個(gè)已登陸的內(nèi)容。因此橙数,需要驗(yàn)證碼的情況可以使用帶驗(yàn)證碼登陸的cookie解決尊流。
我們在已登錄的網(wǎng)頁刷新帅戒,在Fiddler中可以獲取cookie的信息灯帮,可以看到是字典的形式。


程序如下逻住,用的是requests模塊钟哥,程序很短。cookie過一段時(shí)間就會(huì)過期瞎访,所以需要不時(shí)更新腻贰。

import requests
#改成字典的格式
cookies ={'UM_distinctid': '15b02f151002e3-0d53e2918dac19-c533e69-100200-15b00022f162f3',
          'Hm_lvt_498a218989f437e9f0b98611412a86e0': '1491996624,1491629969,1492413379',
          'JSESSIONID': '0000PhiivZreU76O9FOStbjWBXG:16mk94b4d'}
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.103 Safari/537.36', 'Connection':'keep-alive'}
#需要登錄才能看到的選課信息
url = 'http://bkxk.xmu.edu.cn/xsxk/index.html'
response = requests.get(url=url, cookies=cookies, headers= headers)
print(response.text)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市扒秸,隨后出現(xiàn)的幾起案子播演,更是在濱河造成了極大的恐慌,老刑警劉巖伴奥,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件写烤,死亡現(xiàn)場離奇詭異,居然都是意外死亡拾徙,警方通過查閱死者的電腦和手機(jī)洲炊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尼啡,“玉大人暂衡,你說我怎么就攤上這事⊙虏t!?“怎么了狂巢?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長书聚。 經(jīng)常有香客問我唧领,道長,這世上最難降的妖魔是什么寺惫? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任疹吃,我火速辦了婚禮,結(jié)果婚禮上西雀,老公的妹妹穿的比我還像新娘萨驶。我一直安慰自己,他們只是感情好艇肴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布腔呜。 她就那樣靜靜地躺著叁温,像睡著了一般。 火紅的嫁衣襯著肌膚如雪核畴。 梳的紋絲不亂的頭發(fā)上膝但,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機(jī)與錄音谤草,去河邊找鬼跟束。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丑孩,可吹牛的內(nèi)容都是我干的冀宴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼温学,長吁一口氣:“原來是場噩夢啊……” “哼略贮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仗岖,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逃延,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后轧拄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揽祥,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年紧帕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盔然。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡是嗜,死狀恐怖愈案,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹅搪,我是刑警寧澤站绪,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站丽柿,受9級特大地震影響恢准,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜甫题,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一馁筐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坠非,春花似錦敏沉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秋泳。三九已至,卻和暖如春攒菠,著一層夾襖步出監(jiān)牢的瞬間迫皱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工辖众, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卓起,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓赵辕,卻偏偏與公主長得像既绩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子还惠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)私杜,斷路器蚕键,智...
    卡卡羅2017閱讀 134,657評論 18 139
  • 經(jīng)過多次嘗試,模擬登錄淘寶終于成功了衰粹,實(shí)在是不容易锣光,淘寶的登錄加密和驗(yàn)證太復(fù)雜了,煞費(fèi)苦心铝耻,在此寫出來和大家一起分...
    追不到的那縷風(fēng)閱讀 1,706評論 0 3
  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族誊爹,HTTP屬于它內(nèi)部的一個(gè)子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,444評論 0 20
  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡稱cookie)是網(wǎng)...
    留七七閱讀 17,968評論 2 71
  • 悟心 人心境界遠(yuǎn)瓢捉,百世修煉深频丘。覺悟生禪意,靜心洗凡塵泡态。
    石川河女神閱讀 244評論 0 0