Python 获取url的状态码是301,但浏览器实际访问结果是404
时间: 2024-10-09 21:07:35 浏览: 13
当Python通过HTTP请求获取到URL的状态码为301(永久重定向),这通常意味着原始URL已被更改并且指向了一个新的地址。然而,当你尝试用浏览器访问该URL并得到404(未找到)错误,这可能有几种情况:
1. **重定向失效**:虽然服务器最初返回了301,但在跳转到新URL的过程中发生了问题,可能是新地址配置错误,或者临时不可达。
2. **超链接问题**:如果URL是通过链接跟踪而来的,可能在多次重定向之后丢失了某些信息,导致最后的目标页面找不到。
3. **临时问题**:有时服务端可能出现临时故障,即使301重定向是正确的,访问最终目标仍然失败。
为了解决这个问题,你可以检查Python请求的完整链路,确认所有重定向都正确无误。如果你能获取到所有重定向后的URL,逐一测试它们。同时,确认你使用的工具支持处理重定向,比如`requests`库在设置`allow_redirects=True`时会自动跟随重定向。
```python
import requests
response = requests.get('原URL', allow_redirects=True)
final_url = response.url
if final_url != '预期的新URL':
print("Final URL after redirects is different from expected:")
print(final_url)
if response.status_code == 404:
print(f"Final URL returned a 404 error: {final_url}")
```