如何用Python通过GET请求获取Axis网络摄像头图片?解决401认证错误问题
解决Axis网络摄像头GET请求401认证错误的方案
我之前也踩过Axis摄像头认证的坑,给你几个实用的排查和解决方向:
1. 优先切换为Digest认证(Axis设备默认常用)
大部分Axis网络摄像头默认采用Digest认证,而非你尝试的Basic认证,这就是HTTPBasicAuth失效的核心原因。试试用HTTPDigestAuth替换:
import requests from requests.auth import HTTPDigestAuth # 替换为你的设备信息 camera_url = "http://xxx.xxx.xxx.xxx/axis-cgi/jpg/image.cgi" username = "xxx" password = "xxx" response = requests.get(camera_url, auth=HTTPDigestAuth(username, password)) print(f"响应状态码: {response.status_code}") # 如果请求成功,保存图片 if response.status_code == 200: with open("camera_snapshot.jpg", "wb") as img_file: img_file.write(response.content) print("图片保存成功!")
2. 确认API路径是否正确
你之前用的/jpg/image.jpg并非Axis设备的标准快照路径,官方推荐的图片获取路径是/axis-cgi/jpg/image.cgi。路径错误也可能返回401或404,建议先在浏览器里直接访问这个标准路径,测试是否需要认证后能正常显示图片。
3. 尝试URL嵌入认证信息(备选测试方案)
有些环境下,直接在URL里嵌入用户名和密码也能绕过认证问题(安全性稍低,仅作测试用):
import requests username = "xxx" password = "xxx" camera_url = f"http://{username}:{password}@xxx.xxx.xxx.xxx/axis-cgi/jpg/image.cgi" response = requests.get(camera_url) print(f"响应状态码: {response.status_code}")
4. 检查摄像头后台设置
- 登录摄像头Web管理界面,进入「系统选项」→「安全」→「认证」,确认当前认证模式是Digest还是Basic,或者是否开启了匿名访问(开启后无需认证即可获取图片)。
- 核对用户名密码:Axis默认管理员账号是
root,初始密码通常是设备序列号(未修改过的情况),注意账号密码区分大小写。 - 检查IP白名单:如果设备设置了IP访问限制,确保运行Python脚本的机器IP在允许列表内。
内容的提问来源于stack exchange,提问作者mimus
相关产品推荐
相关产品推荐

