Python requests.post无法使用易受攻击的Web应用程序login.php

问题描述 投票:0回答:2

我正在尝试使用Python requests.post方法登录http://127.0.0.1/dvwa/login.php

目前我做的如下:

import requests
payload = {'username':'admin','password':'password'}
response = requests.post('http://127.0.0.1/dvwa/login.php', data=payload)

但它似乎没有起作用。我应该从响应对象获取301状态代码,但我只收到200个代码。我还从浏览器中取出了cookie并将它们设置在请求对象中;然而,这不起作用,也违背了我想要做的目的。

我也试过以下没有运气:

from requests.auth import HTTPBasicAuth
import requests
response = requests.get("http://127.0.0.1/dvwa/login.php",auth=HTTPBasicAuth('admin','password'))

from requests.auth import HTTPBasicAuth
import requests
cookies = {'PHPSESSID':'07761e3f52ae72fa7d0e2c57569c32a7'}
response = requests.get("http://127.0.0.1/dvwa/login.php",auth=HTTPBasicAuth('admin','password'),cookies=cookies)

以上方法都没有给出我需要/想要的结果,这只是登录。

python scripting python-requests
2个回答
1
投票

默认情况下,请求将遵循重定向。 response.status_code将是最终位置的状态代码。如果您想检查是否已被重定向,请查看response.history

import requests
response = requests.get("http://google.com/") #301 redirects to 'www.google.com'
response.status_code
#200
response.history
#[<Respone [301]>]
response.url
#'http://www.google.com/'

此外,让requests跟踪你的会话/ cookie的好方法是使用requests.Session

import requests
with requests.Session() as sesh:
    sesh.post(the_url, data=payload)
    #do more stuff in session

0
投票

我很感激你的答案,但我找到了答案问题。如果其他人有同样的问题,则如下。

代替:

import requests
response = requests.post('http://127.0.0.1/dvwa/login.php',data={'username':'admin','password':'password'})

您还需要存储在有效负载中的登录令牌,如下所示:

import requests
response = requests.post('http://127.0.0.1/dvwa/login.php',data={'username':'admin','password':'password','Login':'Login'})

然后它会正确登录我。

© www.soinside.com 2019 - 2024. All rights reserved.