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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过请求从受密码保护的网站获取数据相关的知识,希望对你有一定的参考价值。

我在业余时间担任自由编辑,但最近我工作的公司使他们的通知系统变得更糟,导致我错失了很多机会。我决定尝试创建一个简单的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请求无关。网站whiteboard.cactusglobal不是API,它是一个网站。它并不意味着您只能以编程方式访问其页面。由于其浏览器,它希望真正的用户与之交互。

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

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

以上是关于通过请求从受密码保护的网站获取数据的主要内容,如果未能解决你的问题,请参考以下文章

VBA WinHTTP 从受密码保护的 https 网站下载文件

ASP.NET 从受密码保护的网络共享中读取文件

从受保护的未选中字段中获取虚拟字段

如何从受保护的文件夹中使用PHP和AJAX提供安全的文件下载?

如何从受 CMEK(客户管理的密钥)保护的 BigQuery 表在 Tableau 中创建数据源?

Api 只能从受信任的站点访问,不能通过任何浏览器、邮递员等访问