通过请求从受密码保护的网站获取数据

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

我在业余时间担任自由编辑,但最近我工作的公司使他们的通知系统变得更糟,导致我错失了很多机会。我决定尝试创建一个简单的python脚本来每分钟左右拉网站,检查特定字段的更改,并发送电子邮件到专用帐户通知我。我从来没有使用python,但我陷入困境,发现最好的选择可能是requests库。但是,我很难通过身份验证获得正确的页面,因为我的所有请求都只是导致登录页面。

该网站的工作方式如下(如果被标记为垃圾邮件,我会错过TLD):

  1. 该员工前往whiteboard.cactusglobal
  2. 他们登录并发送到whiteboard.cactusglobal / dashboard,其中包含我想要阅读的字段。

我尝试过以下方法:

requests.get('https://whiteboard.cactusglobal.com/dashboard', auth=('user','pass'))

其中user和pass被替换为适当的值,但没有骰子。我也试过了

requests.get('https://whiteboard.cactusglobal.com/dashboard', auth=HTTPDigestAuth('user','pass'))

没有帮助,而且

payload = {'user':'XXXXXXXX', 'pass':'XXXXXXX'}
requests.post('https://whiteboard.cactusglobal.com/dashboard', data=payload})

哪些仍然无效。如上所述,所有请求都给出403并返回登录页面。

我使用Burp从我的浏览器中获取我的登录详细信息来捕获POST请求,希望它可以解释这个问题,但我不知道requests如何做任何事情。这是请求(删除了cookie):

POST /dashboard?destination=dashboard HTTP/1.1
Host: whiteboard.cactusglobal.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://whiteboard.cactusglobal.com/
Content-Type: application/x-www-form-urlencoded
Content-Length: 125
Connection: close
Upgrade-Insecure-Requests: 1
name=XXXXXXXX&pass=XXXXXXXXXX&form_build_id=XXXXXXXXXX&form_id=XXXXXXXXXXXXX

如果我能更好地理解它,我很遗憾地寻求帮助,可以很容易地用Google搜索,但由于我对python缺乏了解并且对HTTP请求的了解很少,因此我能够有效地掌握问题有太多未知数。谢谢您的帮助。

python http python-requests
1个回答
0
投票

对我而言,它与python或HTTP请求无关。网站whiteboard.cactusglobal不是API,它是一个网站。它并不意味着您只能以编程方式访问其页面。由于其浏览器,它希望真正的用户与之交互。

所以对我来说,你需要的工具是Selenium。或者任何用户测试自动化工具。这种工具将允许您模拟访问网站的浏览器,重定向到日志页面,并在相关字段中输入验证信息,所有这些都在Python中。

由于您的用例是基本的,如果您了解基本教程,特别是如何填写表单,您将很容易找到自己的方式:)

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