Здравствуйте, есть камера с Aliexpress, доступ к ней возможен через android приложение. Логика следующая(по моим скудным представлениям):
Некий сервер отправляет запрос на мою камеру, после чего она в свою очередь отправляет на этот сервер информацию о изображении, затем эта информация отправляется на устройство с которого зашли в приложение и наконец информация обрабатывается и выводится на дисплей в виде картинки. Разумеется из за перекидывания туда сюда информации появляется существенная задержка, что для моих целей не подходит. Просто прописав в браузере ip камеры получаю: "Сайт 192.168.1.102 не позволяет установить соединение.", а продавец написал что доступ к камере возможен только через приложение. Но моя логика подсказывает мне что должна быть возможность получить картинку с камеры на прямую, так как камера находится в одной локальной сети с компьютером на котором я планирую использовать данные с камеры.
Итак что я имею на данный момент:
Пропустил трафик через сниффер и выудил следующее:
На этот запрос получаем следующий ответ от камеры:
Вообще там много всяких запросов и ответов, но я почему то решил что это основное, если нужно сделаю скрины других пакетов.
А дальше я просто написал код который просто отправляет соответствующий запрос на ip который указан в выловленном сниффером пакете:
Пробовал отправлять и payload и payload1
И так и так возвращает:
{"success":false,"reason":"Request NotFound(404)"}
Что говорит о том что запрос не верный
К сожалению я далеко не эксперт в TCP запросах и в целом в этой теме, попробовал разобраться сам - ничего не вышло, зашел в тупик. К сожалению времени не так много разбираться с камерой, у меня еще есть возможность ее вернуть и заказать другую, решил пока еще есть неделя времени на возврат обратиться к вам, надеюсь поможете. Всю дополнительную информацию постараюсь предоставлять как можно скорее.
Основная цель:
Найти способ получить информацию с камеры с минимальной задержкой
P.S. Извините что так много текста
Некий сервер отправляет запрос на мою камеру, после чего она в свою очередь отправляет на этот сервер информацию о изображении, затем эта информация отправляется на устройство с которого зашли в приложение и наконец информация обрабатывается и выводится на дисплей в виде картинки. Разумеется из за перекидывания туда сюда информации появляется существенная задержка, что для моих целей не подходит. Просто прописав в браузере ip камеры получаю: "Сайт 192.168.1.102 не позволяет установить соединение.", а продавец написал что доступ к камере возможен только через приложение. Но моя логика подсказывает мне что должна быть возможность получить картинку с камеры на прямую, так как камера находится в одной локальной сети с компьютером на котором я планирую использовать данные с камеры.
Итак что я имею на данный момент:
Пропустил трафик через сниффер и выудил следующее:
POST /topActivityInfo HTTP/1.1
x_api_token: a84cca91-6cdd-4370-b1fb-b6dafd43a46d
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-G955F Build/NRD90M)
Host: 10.0.2.2:2861
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 109
callingPackage=&activityName=com.mycam.cam%2Fcom.danale.video.NDNCameraLiveActivity&packageName=com.mycam.cam
x_api_token: a84cca91-6cdd-4370-b1fb-b6dafd43a46d
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-G955F Build/NRD90M)
Host: 10.0.2.2:2861
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 109
callingPackage=&activityName=com.mycam.cam%2Fcom.danale.video.NDNCameraLiveActivity&packageName=com.mycam.cam
На этот запрос получаем следующий ответ от камеры:
HTTP/1.1 200 OK
Content-Length: 28
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 10 Jun 2020 09:06:39 GMT
{"success":true,"reason":""}
Content-Length: 28
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 10 Jun 2020 09:06:39 GMT
{"success":true,"reason":""}
Вообще там много всяких запросов и ответов, но я почему то решил что это основное, если нужно сделаю скрины других пакетов.
А дальше я просто написал код который просто отправляет соответствующий запрос на ip который указан в выловленном сниффером пакете:
Python:
from requests import post
import gzip
# Указываем head запроса
headers = {'x_api_token': 'a84cca91-6cdd-4370-b1fb-b6dafd43a46d',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 7.1.2; SM-G955F Build/NRD90M)',
'Host': '10.0.2.2:2861',
'Accept-Encoding': 'gzip'
}
# Переменная с телом запроса
message = str('callingPackage=&activityName=com.thirtydays.microshare.module.MainActivity&packageName=com.mycam.cam').encode('utf-8')
# Сжатие в gzip
payload = gzip.compress(message)
# Словарь с телом запроса
payload1 = {'callingPackage': 'com.mycam.cam', 'activityName': 'com.thirtydays.microshare.module.MainActivity', 'packageName' : 'com.mycam.cam'}
# Отправляем запрос с помощью POST
foo = post('http://127.0.0.1:2861/', headers=headers, data=payload1)
#Выводим то что вернуло устройство
print (foo.content)
Пробовал отправлять и payload и payload1
И так и так возвращает:
{"success":false,"reason":"Request NotFound(404)"}
Что говорит о том что запрос не верный
К сожалению я далеко не эксперт в TCP запросах и в целом в этой теме, попробовал разобраться сам - ничего не вышло, зашел в тупик. К сожалению времени не так много разбираться с камерой, у меня еще есть возможность ее вернуть и заказать другую, решил пока еще есть неделя времени на возврат обратиться к вам, надеюсь поможете. Всю дополнительную информацию постараюсь предоставлять как можно скорее.
Основная цель:
Найти способ получить информацию с камеры с минимальной задержкой
P.S. Извините что так много текста