有时候网站进行登录的时候会携带一个token值,如dvwa的登录
而这个token值在每次请求页面的时候都会进行刷新,我们要想进行登录就必须携带这个token,而这个token值怎么才能获取到了?其实这个token就是在前端页面中生成的,我们可以右键查看元素找到它。然后提取它出来就行
import requests from lxml import etree url = "http://192.168.43.206/2_Shotting_Range/DVWA/login.php" headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36' } # 1.创建session对象 session = requests.session() pag_text = session.get(url=url,headers=headers).text # 2.实例化一个etree对象,方便后面对页面进行数据解析 tree = etree.HTML(pag_text) # 3.提取user_token值 user_token = tree.xpath('//*[@id="content"]/form/input/@value')[0] #封装登录数据包并登录 data = { 'username': 'admin', 'password': 'password', 'Login': 'Login', 'user_token': user_token } response_headers = session.post(url=url,headers=headers,data=data,allow_redirects = False).headers if "'Location': 'index.php'" in str(response_headers): print("登录成功") else: print("登录失败") # 请求登录后的主页 index_text = session.post(url="http://192.168.43.206/2_Shotting_Range/DVWA/index.php").text with open('dvwa.html','w',encoding='utf-8') as f: f.write(index_text)