第五關**:第四關的密碼與第三關一樣,都是30以內的數字
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
from lxml import etree
class login(object):
def __init__(self):
self.session = requests.session()
self.url_login = ''
self.url_test = ''
self.headers =
self.data_login =
self.data_test =
# 獲取cookies
def get_cookies(self):
res = self.session.get(url=self.url_login, headers=self.headers)
self.data_login['csrfmiddlewaretoken'] = res.cookies['csrftoken']
# 進行賬號登陸
def login(self):
req= self.session.post(url=self.url_login, data=self.data_login, headers=self.headers)
html = etree.html(req.text)
#用xpath取得登陸後的關鍵字
result = html.xpath('//body/div//h5/text()')
#如果登陸成功就會提示'歡迎***訪問我們站點'
if result:
print(result[0])
self.data_test['csrfmiddlewaretoken'] = req.cookies['csrftoken']
else:
print('登陸失敗')
# 取得驗證碼
def get_captchat(self):
res = self.session.get(url=self.url_test, headers=self.headers)
self.data_test['csrfmiddlewaretoken'] = res.cookies['csrftoken']
html = etree.html(res.text)
uuid = html.xpath('//img/@src')[0].split('/')[3]
self.data_test['captcha_0'] = uuid
url_captcha = '' + uuid
# 儲存到本地
res = self.session.get(url=url_captcha, headers=self.headers)
with open('1.png', 'wb') as pic:
pic.write(res.content)
self.data_test['captcha_1'] = input('請輸入驗證碼:')
# 模擬登陸
def post_page(self):
self.get_captchat()
res = self.session.post(url=self.url_test, data=self.data_test, headers=self.headers)
html = etree.html(res.text)
content = html.xpath('//h3/text()')[0]
return content
def main(self):
self.get_cookies()
self.login()
for x in range(0,31):
self.data_test['password'] = str(x)
content = self.post_page()
if '成功闖關' in content:
print('密碼:%s 正確' %x)
print(content)
break
else:
print('密碼:%s 錯誤' %x)
if __name__ == "__main__":
login = login()
login.main()
原始碼: 點我
python闖關 Python 爬蟲闖關(第一關)
經過多次手動填數字後,我們得到了這個頁面 有一 dabo 數字,顯然手動在這輸是不太靠譜了。不過,我們可以大致總結出本關的規律 第一關是將頁面出現的數字填寫到當前 url的尾部進行訪問,然後會得到乙個新的數字,再用它替換 url中的尾部數字,這樣不斷迴圈往復,直到頁面出現成功標識。那麼思路也有了 解...
python闖關 python闖關 Day05
乙個簡單的 選單 usr bin env python coding utf 8 mymenu 動物 貓 黃貓 花貓 狗 二哈 金毛 植物 樹 大樹 小樹 草 綠草 矮草 menu list list mymenu.keys while true print 編號 center 50,for i i...
python闖關 python闖關 Day02
q1 寫乙個使用者迴圈猜年齡的遊戲,猜對就退出,猜不對就繼續猜,猜三次,提示使用者是否繼續,使用者回答y或者y就繼續猜,三次之後再重複,回答n或n就結束遊戲。usr bin env python coding utf 8 猜年齡 import random age random.randint 1,...