python__運用爬蟲猜密碼

一個需要提供用戶名和密碼的登錄網(wǎng)址:
http://www.heibanke.com/lesson/crawler_ex01/
(來自于網(wǎng)易云課堂“黑板客爬蟲闖關的第二關”)

登錄頁面

這里我們知道用戶的昵稱為:heibanke
密碼是30以內(nèi)的一個數(shù)字,要使用requests庫循環(huán)提交來猜密碼
主要需要用到的庫是requests庫
安裝requests庫

pip install requests

要使用到的request庫的功能是表單的提交

requests.post(url,data)#通過post()語言向網(wǎng)址url發(fā)生data

首先查看網(wǎng)頁源碼,找到需要提交的內(nèi)容的參數(shù)名稱

網(wǎng)頁源碼

可以看到需要提交的昵稱的name=“username”,密碼的name=“password”
requests傳入網(wǎng)址的data中中需要包含這兩個參數(shù)

    url = "http://www.heibanke.com/lesson/crawler_ex01/"
    params = {'username':'heibanke','password': str(password)}
    r = requests.post(url,data=params)

建立循環(huán),密碼從1開始猜,不對就+1,直至猜中。
關鍵在于如何判斷猜錯了沒?
首先看看猜錯了的顯示:

密碼錯誤顯示

我們可以讀取出該頁面的文字,檢測文字中有沒有"錯誤"二字,有就代表提交的密碼錯誤,沒有就表示正確。要實現(xiàn)此功能,需要用到find()函數(shù)

find()函數(shù)介紹:
函數(shù)原型:find(str, pos_start, pos_end)
解釋:
?str:被查找“字串”
?pos_start:查找的首字母位置(從0開始計數(shù)。默認:0)
?pos_end: 查找的末尾位置(默認-1)
返回值:如果查到:返回查找的第一個出現(xiàn)的位置。否則,返回-1。
example:

str = "0123"
print str.find("2",1,-1)      #2
print str.find("1")           #0,首次出現(xiàn)的位置

完整程序:

import requests
password=0
while 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"錯誤")>0:#判斷某次輸入是否正確
        password=password+1
    else:
        print password#,最后打印出password為6,居然輸入06,006,0006都是對的
        break

運行結果password為6

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容