如何修复使用 Python 请求调用 API 时出现“403 Forbidden”错误?
- 2025-01-08 08:49:00
- admin 原创
- 146
问题描述:
我需要解析一个站点,但是收到 403 禁止错误。
以下是代码:
url = 'http://worldagnetwork.com/'
result = requests.get(url)
print(result.content.decode())
输出为:
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
问题是什么?
解决方案 1:
似乎该页面拒绝了GET
未标识的请求User-Agent
。我使用浏览器(Chrome)访问了该页面并复制了请求User-Agent
的标头GET
(查看开发人员工具的“网络”选项卡):
import requests
url = 'http://worldagnetwork.com/'
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)
print(result.content.decode())
# <!doctype html>
# <!--[if lt IE 7 ]><html class="no-js ie ie6" lang="en"> <![endif]-->
# <!--[if IE 7 ]><html class="no-js ie ie7" lang="en"> <![endif]-->
# <!--[if IE 8 ]><html class="no-js ie ie8" lang="en"> <![endif]-->
# <!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" lang="en"> <!--<![endif]-->
# ...
解决方案 2:
补充一下Alicia 的回答:
如果添加后仍然收到 403 Forbidden 错误user-agent
,则可能需要添加更多标头,例如referer
:
headers = {
'User-Agent': '...',
'referer': 'https://...'
}
标题可以在Network > Headers > Request Headers
开发者工具中找到。(按F12
进行切换。)
解决方案 3:
如果您是服务器的所有者/管理员,并且接受的解决方案对您不起作用,请尝试禁用 CSRF 保护(链接到 SO 答案)。
我正在使用 Spring(Java),因此设置要求您创建一个SecurityConfig.java
包含以下内容的文件:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure (HttpSecurity http) throws Exception {
http.csrf().disable();
}
// ...
}
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD