Авторизация в сервисах DropBox

 
0
 
Delphi, Kylix & Pascal
ava
DarkProg | 23.09.2013, 17:14
Добрый день.
Сижу мучаюсь с сервисом DropBox, а именно хочу написать небольшой клиент(хочу встроить его в одну маленькую софту).
В общем первый этам авторизации OAuth1.0 я прохожу нормально, затык появляется на втором этапе когда требуется выполнить авторизацию через браузер - вот тут-то и проблемы, потому что не хочу я использовать браузер, мучая коллегу по цеху, но который разбирается в web я собрал заголовок для POST запроса на вполне определённый URL, но при этом мне вылетает вечно ошибка 403 Forbiden при попытке выполнить этот Post.

Я включил куки, поискал в инете, включил ещё часть параметров, но так и не смог добиться прохождения авторизации.

Можно ли как-то используя TidHttp как-то перемещаться по URL выполняя действия на конкретных элементах?

При попытке просто передать строку с параметрами для POST в браузере у меня ничего не происходит, просто открывается страница с авторизацией. Только если нажать на кнопку войти что-то происходит. Используя FireBug наковырял заголовки, но почему Forbiden получаю не пойму. Кстати сигнатуру клиента компонента сменил на ту что в браузере, но проблему эту не решило.

P.S. браузер для меня неприемлем
P.P.S. OAuth 2.0 сразу затыкается на первом этапе, т.к. там сразу идёт авторизация через браузер
Comments (4)
ava
Illusion Dolphin | 23.09.2013, 17:30 #
Берёте в руки fiddler и смотрите, что передаётся браузером. Затем конструируете такой же запрос и проверяете его тем же фидлером, разницу исправляете.
ava
DarkProg | 24.09.2013, 09:54 #
С Fiddler может быть такой трюк и прокатил, если бы там не был HTTPS.
Из браузера я ещё кое-как посмотрел что уходит, а вот приложение никаким образом не хочет захватываться.

К тому же firebug реализует аналогичный функционал, только внутри браузера, так что нет заморочек с сертификатами и декодированием.
ava
DarkProg | 24.09.2013, 12:10 #
Есть ещё идеи как можно подковырнуть?

У меня получается весьма странный заголовок надо передать, согласно сниферам мне надо получить нечто такое


POST https://www.dropbox.com/login HTTP/1.1
Host: www.dropbox.com
Connection: keep-alive
Content-Length: 297
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Origin: https://www.dropbox.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: https://www.dropbox.com/login?t=n_dgAlCAQkj4Ik_f26IpTrD9&lhs_type=default&cont=https%3A%2F%2Fwww.dropbox.com%2F1%2Foauth%2Fauthorize%3Foauth_token%3De5dqNwhbsEssRgGu&signup_tag=oauth&signup_data=422652&display=desktop&login_email=ggg%40mail.ru&login_password=111&login_submit=1&login_submit_dummy=%D0%92%D0%BE%D0%B9%D1%82%D0%B8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: locale=ru; gvc=Mjk2NjM0OTA3OTQwMzc4NDg2NDg4MjU2NDI5MDk4NjEwNjE3NDUw; __ALC_CLIENT_ID=10232-134cbbde0-4c30-4699-8a92-6dc8d7585fef; _mkto_trk=id:077-ZJT-858&token:_mch-dropbox.com-1379068646328-91930; puc=MjE5OWRlYSxiYTNlNzNi; mp_b1e0c8f26c4b7739abbbacba6cd3627a_mixpanel=%7B%22distinct_id%22%3A%20%22296634907940378486488256429098610617450%22%2C%22%24initial_referrer%22%3A%20%22Null%22%2C%22%24initial_referring_domain%22%3A%20%22Null%22%2C%22%24search_engine%22%3A%20%22Null%22%2C%22%24mp_keyword%22%3A%20%22Null%22%2C%22%24os%22%3A%20%22Null%22%2C%22%24browser%22%3A%20%22Null%22%2C%22%24referrer%22%3A%20%22Null%22%2C%22%24referring_domain%22%3A%20%22Null%22%2C%22mp_country_code%22%3A%20%22Null%22%2C%22signed_in%22%3A%20%22False%22%2C%22mp_name_tag%22%3A%20%22296634907940378486488256429098610617450%22%2C%22entrance%22%3A%20%22%2Fhelp%22%2C%22from_email%22%3A%20%22False%22%2C%22new-flow-variant%22%3A%20null%7D; t=SzER102X1KR1AtTtT28McGLK; __utma=74146836.1326022778.1374493615.1379939913.1380004336.17; __utmb=74146836.1.10.1380004336; __utmc=74146836; __utmz=74146836.1379918339.13.4.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)

t=SzER102X1KR1AtTtT28McGLK&lhs_type=default&cont=https%3A%2F%2Fwww.dropbox.com%2F1%2Foauth%2Fauthorize%3Foauth_token%3De57777hbsEssRgGu&signup_tag=oauth&signup_data=422652&display=desktop&login_email=ggg%40mail.ru&login_password=123&login_submit=1&login_submit_dummy=%D0%92%D0%BE%D0%B9%D1%82%D0%B8


Я добился вот такого результата

POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 314
Host: www.dropbox.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate, identity
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Referer: https://www.dropbox.com/login?cont=https%3A//www.dropbox.com/1/oauth/authorize%3Foauth_token%3Fg4w7777Vu1hPDSMD&signup_tag=oauth&signup_data=422652
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Cookie: locale=ru
Cookie: gvc=MTM5NjMxOTYyMTU0MTIxNzEyMzM3MTI1OTUwNDA3NzUyNzEzOTI3
Cookie: flash=0J/RgNC40LvQvtC20LXQvdC40Y4g0YLRgNC10LHRg9C10YLRgdGPINC/0L7QtNGB0L7QtdC00LjQvdC40YLRjNGB0Y8g0Log0LLQsNGI0LXQvNGDINCw0LrQutCw0YPQvdGC0YMgRHJvcGJveC4g0JLQvtC50LTQuNGC0LUg0LIg0YHQuNGB0YLQtdC80YMg0LjQu9C4INC30LDRgNC10LPQuNGB0YLRgNC40YDRg9C50YLQtdGB0Ywu
Cookie: bang=QUFEQmtsWVk4akhteHdEeHoyd054V0VHWW5MdnVnR093RW5zVUdqTHpWOVlvQQ%3D%3D
Cookie: t=a5m7RoeKt79cKea82udwiY8X
Cookie2: $Version="1"

t=a5m7RoeKt79cKea82udwiY8X&lhs_type=default&cont=https%3A%2F%2Fwww.dropbox.com%2F1%2Foauth%2Fauthorize%3Foauth_token%3Dg4w7777Vu1hPDSMD&signup_tag=oauth&signup_data=422652&display=desktop&login_email=m%40mail.ru&login_password=123&login_submit=1&login_submit_dummy=%D0%92%D0%BE%D0%B9%D1%82%D0%B8


Я не понимаю что он ещё хочет  smile 

ava
DarkProg | 25.09.2013, 11:04 #
Плюнул на попытки авторизоваться таким методом, потрачено слишком много времени, а эффекта ноль.
Быстрее и проще получилось через TWebBrowser порулить компонентами, там от силы 10-к строчек кода и авторизация заработала без участия пользователя.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit