Возможно ли это сделать на Ардуино?
- Войдите на сайт для отправки комментариев
Втр, 31/07/2012 - 06:08
Такой вопросец. Есть Ардуино Нано + эзернет шилд на визнете. Возможно ли сделать так, что бы дуина самостоятельно авторизовалась на странице в инете, причем протокол https, выдерала нужные данные, показания и выводила на дисплей? Или всетаки тут без компа со скриптами (на php или java) не обойтись ?!
я не великий программист, да и вообще не программист, н опопробую ответить...
вот смотрите сами...то, что вы хотите сделать называется умным словом парсинг.
Парсят на "чем-то", т.е. имется в виду язык программирования, вы сами отметили пхп, яву и т.д. теперь далее рассуждая получается, что вам как минимум нужно на ардуино с шилдом вкорячить интерпретатор языка или каким-то образом написать такой скетч, который бы запускал готовый парсер на самой ардуине...в общем это мое имхо
Я бы посоветовал посмотреть для начала в сторону например работы ардуино как проверки почты на gmail
Спасибо за ответ. Мне хотя бы понять направление куда двигаться. Буду изучать..
>Парсят на "чем-то", т.е. имется в виду язык программирования, вы сами отметили пхп, яву и т.д. теперь далее рассуждая получается
Ну да. Или на C++. Ардуино скетч это же тоже "язык программирования", и "парсить" на нем тоже вполне можно. Чем и занимаются собственно любые скетчи работы по http для дуины. Если "сервер" - парсят запросы, если "клиент" - парсят ответы.
>что вам как минимум нужно на ардуино с шилдом вкорячить интерпретатор языка
Это потребуется только в одном случае. Если у автора возникнет горячие желание не просто "скачать и распарсить" страничку логина, но еще и попытатся выполнить находящиеся на ней javascript-ты.
К парсеру это не имеет никакого отношения. Да и "полноценный парсер" (разбор на токены или в DOM-дерево) писать, в большинстве случаев не нужно. В ситуации с логин формой - на ее парсинг можно вообще плюнуть. Тупо сразу слать login/password POST-том, а "парсинг ответа" будет состоять в банальном нахождение в ответе наличия характерной строки типа "invalid password" - значит не залогинились, или "success" - залогинились.
ну и потом, ведь скорее всего логин означает что мы хотим работать дальше с ресурсом "авторизированными", что-бы он "узнавал нас" нужно ему каждый раз сообщать что мы "из залогиненой сессии". Тут, конечно сильно зависит от механизма идентификации на самом ресурсе. Обычно это какаяю-нибудь cookies, которую он шлет при удачном логине. Поэтому, со стороны арудины, нужно будет еще реализовать запоминание куков и слать их при следующих обращениях.
>как проверки почты на gmail
А вы жестокий :) Посоветовать gmail, у которого "ajax на ajax-e и аджаксом погоняет" (очень много javascript-логики и сама страница формируется динамически на клиенте). Плюс еще и капчи могут быть :( Тут уж проще по pop3, а не http почту проверять.
А вообще, вот что-бы упросить подобную задачу "программно работать с сайтом" - нормальный сайты как раз и дают отдельное API (в том числе и гугл, кстати, для многих своих сервисов). Типа "для людей удобный им интерфейс", для программ - удобный им (без всякой визуальщины и т.п.)
Вообщем изначальную задачу - решить вполне можно (но есть одно большое НО, про него ниже). Естественно, вначале нужно хорошо представлять протокол http. Или хотя-бы взять Fiddler2, подергать сайт в браузере, посмотреть что шлете вы, а что он в ответ. Со всеми заголовками и проч. Попытатся руками собрать запрос.... ну а потом повторить это кодом ардуины.
А теперь "засада". Могу ошибатся, конечно, но насколько я знаю https ставит жирный крест на всех этих начинаниях :(
У Ардуины банально "не хватит сил" для всей этой криптографии (а https это именно криптография, SSL). Так что "если шибко нужно" - прийдется смотреть в сторону "более взрослых камней". На армы какие-нибудь.
Или что-то типа Netduino или Fez Panda. Не помню точно, но вроде MicroFramework (библиотеки для этих плат) поддерживает криптография, а значит есть шансы что и https зафурычит.
leshak как всегда не превзойденно объяснил так популярно, что мне даже стыдно стало что я ранее отписывал :(
а про пример работы с gmail собственно говоря простейшее решение - http://habrahabr.ru/post/137179/
мое имхо...прежде чем садиться за что-то достаточно серьезное, стоит пощупать попроще что-то предварительно...заработало простое...можно далее усложнять задачу.
а про пример работы с gmail собственно говоря простейшее решение - http://habrahabr.ru/post/137179/
Это из другой "оперы" пример.
Во первых это доступ не по http, а по IMAP. Как раз то что я писал "проще по POP3" IMAP и POP3 это "родственники". IMAP - чуток более "продвинутый". Оба являются протоколами "доступа к почтовому ящику" (и ни на что другое - не способны), а не вебовскими протоколами.
Во вторых. В этом примере работа с ящиком, вообщем-то спрятанна в "сторонюю dll-ку", так что самого протокола - не видно :)
Ну и в третьих, к ардуине он имеет "далекое отношение", она тут "приблудилась". Вся "работа" происходит на стороне компа, а арудино используются просто в качестве "лампочки" через Serial.