A URL do snapshot é:
Código: Selecionar todos
http://<user>:<password>@<ip>:<port>/cgi-bin/snapshot.cgi
Exemplo:
Código: Selecionar todos
http://fulano:senha@192.168.20.145:80/cgi-bin/snapshot.cgi
Usando wget
A URL do snapshot retorna primeiro o código '401 Unauthorized' e o próprio wget, na sequência, seleciona o método de autenticação do tipo Digest, oferecendo então o nome de usuário e senha. Exemplo:
Código: Selecionar todos
$ wget http://test:test1234@192.168.10.2:8051/cgi-bin/snapshot.cgi -O picture.jpg
--2020-03-28 13:11:52-- http://test:*password*@192.168.10.2:8051/cgi-bin/snapshot.cgi
Connecting to 192.168.10.2:8051... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authentication selected: Digest realm="Login to XU1I0705044S5", qop="auth", nonce="a18f671b-8e02-4928-b16e-6cd391eafd6f", opaque=""
Connecting to 192.168.10.2:8051... connected.
HTTP request sent, awaiting response... 200 OK
Length: 78948 (77K) [image/jpeg]
Saving to: ‘picture.jpg’
picture.jpg 100%[==============================================>] 77.10K --.-KB/s in 0.06s
2020-03-28 13:11:54 (1.29 MB/s) - ‘picture.jpg’ saved [78948/78948]
Código: Selecionar todos
$ file picture.jpg
picture.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, comment: "DHAV\373", baseline, precision 8, 1280x720, frames 3
Usando o cURL
Para o cURL funcionar, é preciso especificar o uso do método de autenticação Digest, ou então especificar para que ele automaticamente passe para o método de autenticação quando receber a mensagem '401 Unauthorized'. Os dois exemplos abaixo funcionam:
Código: Selecionar todos
curl -v --digest --user test:test1234 http://192.168.10.2:8051/cgi-bin/snapshot.cgi > picture.jpg
ou
Código: Selecionar todos
curl -v --anyauth --user test:test1234 http://192.168.10.2:8051/cgi-bin/snapshot.cgi > picture.jpg
Referência: https://ec.haxx.se/http/http-auth
Usando Python
Exemplo usando a biblioteca requests:
Código: Selecionar todos
import requests
url='http://192.168.10.2:8051/cgi-bin/snapshot.cgi'
user='test'
password='test1234'
file = open("picture.jpg", 'wb')
credentials = requests.auth.HTTPDigestAuth(user, password)
with requests.get(url, auth=credentials, stream=True) as response:
for chunk in response.iter_content(chunk_size=128):
file.write(chunk)
file.close()
Referência: https://2.python-requests.org/en/master/user/authentication/#digest-authentication
Como se vê, foi necessário especificar o método de autenticação Digest com HTTPDigestAuth.
Espero que ajude.