【发布时间】:2022-01-14 21:52:29
【问题描述】:
在 Python 中请求 HTML 页面时,每次都会收到 403 禁止响应。
import requests
url = 'https://shop.rewe.de/mydata/login'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
result = requests.get(url, headers=headers)
>>> result.status_code
403
当我使用 iOs 应用程序(例如“Rest”)时,我只发送具有相同域且没有其他附加设置的 GET 并得到 200 OK 响应。 当我在 Python 中运行它时,我不知道问题是什么。
编辑: 这显示了其余应用程序中的指标。在搜索协议时,我找到了 h2 或只是 http/2 协议。我认为这是问题所在。邮递员和请求库都不支持这一点。
【问题讨论】:
-
我会在邮递员或类似的东西中尝试这个应该告诉你发生了什么。
-
我在桌面上使用 curl 得到 403。您的 iOS 浏览器中是否有此网站的 cookie?
-
我认为问题与 Cloudflare 重定向有关。页面提示启用Java,还有一点是他们希望启用http/2。
-
我四处搜寻,发现问题出在哪里。真正的问题肯定是 cloudflare 重定向,但 cloudflare 在做什么?我搜索了一段时间,发现真正的问题是他们正在证明来自浏览器的 TLS 握手。没有它,就很难绕过 Cloudflare 的 TLS 保护。