实现抓图,网上大部分都是使用SDK二次开发的,HTTP接口实现的基本没有介绍,好像官方叫CUI接口,但是找官方要文档,基本要不到,我自己下载了一份以前的文档,可以做大部分操作,这里免费分享给大家,评论留下邮箱。在资源里面,但是只需要实现一个抓图,使用SDK的话就太麻烦了,这里分享给大家,使用python实现,转换为其他也很方便的,直接上代码,基于自己摄像头的账号密码,以及Ip,请注意修改url、username 、password 改为自己的就行拉。
import requests
import hashlib# 请求地址和参数
url = "http://192.168.*.*/cgi-bin/snapshot.cgi?channel=1"
username = "***"
password = "***"# 发送初始请求获取摘要身份验证参数
response = requests.get(url)
nonce = response.headers['WWW-Authenticate'].split('nonce="')[1].split('"')[0]
realm = response.headers['WWW-Authenticate'].split('realm="')[1].split('"')[0]# 生成摘要身份验证的响应值
ha1 = hashlib.md5((username + ":" + realm + ":" + password).encode()).hexdigest()
ha2 = hashlib.md5(("GET:" + url).encode()).hexdigest()
response = hashlib.md5((ha1 + ":" + nonce + ":00000001:randomstring:auth:" + ha2).encode()).hexdigest()# 构造请求头
headers = {'Authorization': f'Digest username="{username}", realm="{realm}", nonce="{nonce}", uri="{url}", qop=auth, nc=00000001, cnonce="randomstring", response="{response}"'
}# 发送带有摘要身份验证的请求
response = requests.get(url, headers=headers)# 处理服务器的响应
if response.status_code == 200:print("请求成功")print("应答码:" + str(response.status_code))print("应答头:")for k, v in response.headers.items():print(k, v)print("应答体:" + response.text)
else:print("请求失败")print("错误码:" + str(response.status_code))
运行效果
也可以使用posman实现,直接出图