Результаты поиска
Введите запрос, по завершению нажмите Enter.
  • Страница 1 из 1
  • 1
Форум » uCoz » Разговоры о uCoz » По следам разработки: Авторизация в ПУ сайта
По следам разработки: Авторизация в ПУ сайта
Отправлено 28.09.2012 - 15:181
Нет аватара
Пользователь
92 сообщения
Мужчина
По причине того, что блоги не работают, напишу сюда. Если тема найдёт отклик – будет продолжение.
Дело в том, что я сейчас разрабатываю очередной концепт-проект (так я называю проекты, целью которых является не получить рабочий скрипт/сервис, а разобраться в общих алгоритмах и вариантах решения). На этот раз проект неразрывно связан с админ панелью (далее: ПУ) uCoz сайтов и направлен на расширение её функционала. Но, для того, чтобы расширять сначала надо научиться работать из скрипта с уже существующим функционала. Сегодня речь зайдёт о том, как авторизоваться в ПУ и в качестве бонуса – практическое применение этой функции.
Далее – example.ucoz.ru это домен сайта, в ПУ которого вы входите
Страница авторизации отправляет на сервер POST на адрес:
Code
http://example.ucoz.ru /panel/sub/

POST поля запроса:
Code
Seckey = <19изнаковый ключ>
submlform.x = 0
submlform.y = 0
a = 'dologin'
ss = 1
user = ''
password = '<пароль>'
code = <число с капчи>

При разработке пригодился мой прошлый опыт написания скриптов для авторизации обычных пользователей: все параметры можно было сгенерировать не запрашивания саму страницу авторизации. Вся «магия» завязана на капче.
Шаг 1: Необходимо сгенерировать 2 числа: 19 знаковое и 10 знаковое (надо заметить, что число в PHP может быть максимум девятизначным (да и то намного меньше девяти девяток. Кто учил информатику поймут причину), поэтому генерировать надо частями и хранить в строковой переменной. Первое – наш seckey, он используется, чтобы связать конкретные данные формы и код капчи, некое подобие session, только без ёё проверки с серверной стороны, поэтому ее можно смело «придумывать» на клиенте, не выполняя еще одного запроса.
Шаг 2: Получаем изображение капчи по следующему адресу:
Code
http://example.ucoz.ru/secure/?k=<19 знаковое число> ;s=index;tm=<10 знаковое число>

Десятизначное число судя по всему вообще используется только что обхода кеширования изображения браузеров (Опера, привет!), в случае, если капчу придётся обновить. Для проверки этого можете запросить капчу 2 раза по одному и тому же адресу – число на картинке измениться. Да и в запросе на авторизацию оно не учавствует.
Кстати, стоит отметить, что на всём протяжении авторизации uCoz не выставляет никаких Cookies, пока клиент успешно не войдёт в ПУ: спасибо им за это ;3
Шаг 3: Отправка своего запроса. Все необходимые данные для этого у нас для этого уже есть. Стоит обратить внимание на параметр user запроса – его значение никак не влияет на авторизацию. Даже если прописать туда непустую строку в логах ПУ это не отобразиться. Хотя, наличие данного поля видимо намекает, что укозовцы когда-то хотели ввести логины для ПУ
Шаг 4: В ответ на запрос авторизации сервер вернёт страницу с 302 статусом (перенаправление). Загляните в заголовок location – он показывает куда нас перенаправил сервер. Если это /panel/ - вы всё сделали правильно. Если это /admin/<число> то вы получили ошибку. Числа статичные так что забить в скрипт какое число какой ошибке соответствует не составит труда.
Если всё ок и вас перенаправило на /panel/ так же загляните в set-cookie и сохраните себе куку – она то и будет вашим «пропуском» «в мир» ПУ.

А теперь обещанный бонус: как можно использовать робота, который умеет авторизоваться в ПУ.
Дело вот в чём, весь PHP функционал не индексируется поисковиками – это основная причина, почему совершенно бесполезно делать полноценные модули, основанные на контенте на PHP. Велосипедом можно было использовать Импорт удалённого кода – он индексируется поисковиками, но обновляется не чаще раза в час, что крайне неудобно, например, для комментариев. Решением может стать робот, которые каждые 30-60сек пересохраняет настройки Импорта удалённого кода – дело в том, что при сохранении сервер юкоз обновляет и его содержимое, а значит, можно получить модуль, индексируемый поисковыми системами и адекватным временем появления контента.

Кому интерестно - рабочий пример авторизации
Профиль Личное сообщение Дом. страница icq Skype
2
Отправлено 28.09.2012 - 20:592
Нет аватара
Coder
701 сообщениий
Мужчина
Хммм, логирования ввода сайта и пароля нет? А то что-то не очень охото вводить свои данные...

А идея вообщем-то отличная, поддерживаю. Однако сам стараюсь отстраняться уже от uCoz. По мере возможности сам пишу требуемые сайты/странички на php...
Профиль Личное сообщение Дом. страница icq Skype
66
Отправлено 28.09.2012 - 21:203
Нет аватара
Пользователь
92 сообщения
Мужчина
TRANE73, нет, пароли не храняться. Все данные что храняться на сервере можно глянуть после авторизации на странице Конфедициальность.
Профиль Личное сообщение Дом. страница icq Skype
2
Отправлено 28.09.2012 - 21:364
Нет аватара
Бывалый
1828 сообщений
Мужчина
Quote (TRANE73)
Хммм, логирования ввода сайта и пароля нет? А то что-то не очень охото вводить свои данные...

Хех, такая же мысль была))

Quote (TRANE73)
Однако сам стараюсь отстраняться уже от uCoz.

Давно отстранился, только заказы делаю. С CMF намного интересней))
Профиль Личное сообщение Дом. страница icq Skype
78
Отправлено 28.09.2012 - 21:585
Нет аватара
Бывалый
1029 сообщений
Мужчина
Профиль Личное сообщение Дом. страница icq Skype
97
Отправлено 29.09.2012 - 09:306
Нет аватара
Пользователь
92 сообщения
Мужчина
ahar13, переезжаем на nginx со всеми вытекающими. В течении дня всё поднимется обратно
Профиль Личное сообщение Дом. страница icq Skype
2
Форум » uCoz » Разговоры о uCoz » По следам разработки: Авторизация в ПУ сайта
  • Страница 1 из 1
  • 1
Поиск:
uSite.su © 2010-2024
Все права защищены.
Многогранность и сверхспособности сообщества uCoz заставляют задуматься даже самые стойкие умы веб-программирования, ведь лишь uSite способен предоставить ответы на самые сложные вопросы uCoz.
01RSS
Хостинг от uCozПользовательское соглашение и прочая информация