![](/img/trans.png)
[英]Python-requests-get-fails-with-403-forbidden-even-after-using-headers-and-session - PYTHON 3.8
[英]Python requests.get fails with 403 forbidden, even after using headers and Session object
我正在发出 GET 请求以获取 JSON,这在任何设备上的任何浏览器中都可以正常工作,但不是 python 请求:
url = 'https://angel.co/autocomplete/new_tags'
params = {'query': 'sci', 'tag_type': 'MarketTag'}
resp = requests.get(url,params=params)
resp.raise_for_status()
给出HTTPError: 403 Client Error: Forbidden for url: https://angel.co/autocomplete/new_tags?query=ab&tag_type=MarketTag
所以我尝试了:
Request Headers
部分中找到的所有其他标头以获取 JSON 响应,但仍然是 403!可能的原因是什么? 还有什么我可以尝试使用的吗?
编辑:我在headers
属性中使用的请求标头(在 firefox 中检查 JSON 的标头部分):
{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.5',
'Connection': 'keep-alive',
'Host': 'angel.co',
'If-None-Match: 'W/"5857a9eac987138be074e7bdd4537df8"',
'TE': 'Trailers',
'Upgrade-Insecure-Requests': 1,
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0'}
如果 get 请求返回 403 Forbidden,即使在将 user-agent 添加到标头之后,您可能需要添加更多标头,如下所示:
headers = {
'user-agent':"Mozilla/5.0 ...",
'accept': '"text/html,application...',
'referer': 'https://...',
}
r = requests.get(url, headers=headers)
在 chrome 中,请求标头可以在开发人员工具的网络 > 标头 > 请求标头中找到。 (按 F12 切换它。)
我假设您的网站检测到请求不是从浏览器发送的(使用 javascript)。
我最近遇到了类似的问题,这个答案对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.