一開始看到的時候有點蒙,不知道啥意思,說密碼需要找出來但也沒說怎麼找啊。
別急,隨便輸了個暱稱和密碼,提交一下,就能看到密碼提示了。
注意那一行大字,提示網頁載入速度很慢,這一關的意圖很明顯了,就是:多執行緒。
密碼一共100位,這裡雖然顯示了翻頁,但其實每一頁顯示的位置是隨機的,可能會重複,所以並不是一頁頁翻到最後一頁就可以獲取到完整的密碼了。
所以我們只要開個多執行緒,不停的刷第一頁就可以了,直到100位全部獲取到。
**如下:
import這裡有一點需要注意,開了很多個執行緒以後,會發現返回一堆的404,這是黑板課做的乙個限制,伺服器15秒內最多返回兩個請求,否則返回404,所以,開20個執行緒和開2個執行緒是一樣的。reimport
threading
import
time
import
requests
from bs4 import
beautifulsoup
pwlist = [-1 for i in range(100)]
count =0
lock =threading.lock()
defmain():
url_login = '
'url = '
'session =requests.session()
session.get(url_login)
token = session.cookies['
csrftoken']
#登入session.post(url_login, data=)
threadlist = [threading.thread(target=getpw, args=(session,)) for i in range(2)]
for thread in
threadlist:
thread.setdaemon(true)
thread.start()
for thread in
threadlist:
thread.join()
psd = ''
.join(pwlist)
print(f'
密碼:'
) session.get(url)
token = session.cookies['
csrftoken']
r = session.post(url, data=)
html =r.text
if'密碼錯誤
'not
inhtml:
m = re.search('
(?<=\).*?(?=\)
', html)
(m.group())
defgetpw(session):
pw_url = '
pw_list/
'global
count, pwlist
while count < 100:
try:
html =session.get(pw_url).text
except
: time.sleep(1)
continueif'
404 not found'in
html:
continue
soup = beautifulsoup(html, '
lxml')
pos = soup.find_all('
td', )
val = soup.find_all('
td', )
for i in
range(len(pos)):
p =int(pos[i].string)
v =val[i].string
lock.acquire()
if pwlist[p - 1] == -1:
pwlist[p - 1] =v
count += 1lock.release()
if__name__ == '
__main__':
main()
黑板課爬蟲闖關之關卡二
成功 0 9print 密碼是 str i 10break 11 else 12 print str i 不是密碼 13 140不是密碼 151不是密碼 162不是密碼 173不是密碼 184不是密碼 195不是密碼 206不是密碼 217不是密碼 228不是密碼 239不是密碼 2410不是密碼 ...
Python 黑板課爬蟲闖關第五關
第五關是最後一關了,至此之後黑板課就沒有更新過關卡了。可以看到,是在第三關的基礎上加了驗證碼。驗證碼識別我們可以通過 tesserocr 來識別,tesserocr 的使用在我的前面兩篇部落格中有介紹。如下 import reimport requests import time from pil ...
Python 黑板課爬蟲闖關第二關
第二關依然是非常的簡單 隨便輸入暱稱呢密碼,點選提交,顯示如下 這樣看來就很簡單了,列舉密碼迴圈 post 請求,獲取響應網頁的內容,如果有 密碼錯誤 那就繼續。import reimport requests import time defmain url for psd in range 30 ...