python - 即使在传递标头后,Python 请求也无法获取站点
问题描述
我正在尝试抓取电子商务网站 Myntra,但请求继续加载而没有返回结果。我尝试使用不同的用户代理将标头传递给请求,但它仍然不起作用。如果添加超时参数,则请求超时但不成功。这是我正在尝试执行的示例代码
import requests
url = 'https://www.myntra.com'
s = requests.Session()
headers = {
'authority': 'www.myntra.com',
'method': 'GET',
'path': '/',
'scheme': 'https',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'max-age=0',
# dnt: 1
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
}
response = s.get(url, headers=headers, timeout=10).content
print(response)
如果我尝试 curl 同一个站点,我会得到一个 403 状态代码,并带有以下输出。
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://www.myntra.com/" on this server.<P>
Reference #18.24092e17.1601830542.453a61c2
</BODY>
</HTML>
解决方案
推荐阅读
- python - 使用 numpy.argwhere 去除异常值
- rpa - RPA AA 中的每一天都需要在特定时间执行相同的任务
- user-interface - 如何将 GUI 放入 joptionpane?
- python - 如何使用 matplotlib 绘制 HSV 色轮
- tensorflow - 使用自定义数据集量化大小问题训练的 mobilenetv1
- oracle - 将oracle 11g数据库转储文件导入18c XE,导入成功但找不到数据或用户
- java - 如何在 POM.xml 中更改没有根文件夹的 url 本地存储库
- width - pgfplots 绘图宽度
- javascript - 将参数从 ts 文件发送到另一个 @Input 组件
- jsf - 在表单上提交表单数据为空 Jsf Primefaces