实现抓图,网上大部分都是使用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实现,直接出图