使用Python Requests请求页面返回404,浏览器却可正常访问
请求返回404但浏览器可访问的原因分析
缺少浏览器标识的请求头:服务器会通过
User-Agent等请求头判断请求来源。requests.get()默认的请求头带有python-requests标识,被服务器判定为非合法客户端,返回404。而浏览器会自动带上符合标准的User-Agent,能正常通过验证。未携带必要Cookie:浏览器访问该网站时会自动保存并携带Cookie,服务器依赖这些Cookie确认会话有效性。用requests发起请求时默认没有Cookie,导致服务器拒绝提供资源。
重定向处理差异:浏览器会自动处理所有类型的重定向,但requests的默认配置可能未正确跟随服务器的重定向逻辑,最终停留在返回404的页面。
IP/地域限制:服务器可能对请求IP做了拦截,你的Python脚本所在的IP(比如服务器IP、代理IP)被限制,而浏览器使用的本地IP不在限制列表中。
简单验证方法
可以尝试添加浏览器的请求头模拟合法请求:
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } resp = requests.get('https://www.shararam.ru/su/Build/2022.09.20.json', headers=headers) print(resp.status_code)
内容的提问来源于stack exchange,提问作者the_oceanor
相关产品推荐
相关产品推荐

