我們可以通過(guò)python 來(lái)實(shí)現(xiàn)這樣一個(gè)簡(jiǎn)單的爬蟲(chóng)猜密碼功能。下面就看看如何使用python來(lái)實(shí)現(xiàn)這樣一個(gè)功能。

這里我們知道用戶的昵稱(chēng)為:heibanke
密碼是30以內(nèi)的一個(gè)數(shù)字,要使用requests庫(kù)循環(huán)提交來(lái)猜密碼
主要需要用到的庫(kù)是requests庫(kù)
安裝requests庫(kù)
要使用到的request庫(kù)的功能是表單的提交
首先查看網(wǎng)頁(yè)源碼,找到需要提交的內(nèi)容的參數(shù)名稱(chēng)

requests傳入網(wǎng)址的data中中需要包含這兩個(gè)參數(shù)
url = "http://www.heibanke.com/lesson/crawler_ex01/"params = {'username':'heibanke','password': str(password)}r = requests.post(url,data=params)建立循環(huán),密碼從1開(kāi)始猜,不對(duì)就+1,直至猜中。
關(guān)鍵在于如何判斷猜錯(cuò)了沒(méi)?
首先看看猜錯(cuò)了的顯示:

我們可以讀取出該頁(yè)面的文字,檢測(cè)文字中有沒(méi)有"錯(cuò)誤"二字,有就代表提交的密碼錯(cuò)誤,沒(méi)有就表示正確。要實(shí)現(xiàn)此功能,需要用到find()函數(shù)
find()函數(shù)介紹:
函數(shù)原型:find(str, pos_start, pos_end)
解釋?zhuān)?/strong>
•str:被查找“字串”
•pos_start:查找的首字母位置(從0開(kāi)始計(jì)數(shù)。默認(rèn):0)
•pos_end: 查找的末尾位置(默認(rèn)-1)
返回值:如果查到:返回查找的第一個(gè)出現(xiàn)的位置。否則,返回-1。
example:
str = "0123"print str.find("2",1,-1) #2print str.find("1") #0,首次出現(xiàn)的位置完整程序:
import requestspassword=0while True:url = "http://www.heibanke.com/lesson/crawler_ex01/"params = {'username':'heibanke','password': str(password)}r = requests.post(url,data=params)if r.text.find(u"錯(cuò)誤")>0:#判斷某次輸入是否正確password=password+1else:print password#,最后打印出password為6,居然輸入06,006,0006都是對(duì)的break
運(yùn)行結(jié)果password為6
新聞熱點(diǎn)
疑難解答
圖片精選