Пользователь
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сек пересохраняет настройки Импорта удалённого кода – дело в том, что при сохранении сервер юкоз обновляет и его содержимое, а значит, можно получить модуль, индексируемый поисковыми системами и адекватным временем появления контента.
Кому интерестно - рабочий пример авторизации
|
|
|
|
|
Coder
701 сообщениий
Мужчина
|
Хммм, логирования ввода сайта и пароля нет? А то что-то не очень охото вводить свои данные...
А идея вообщем-то отличная, поддерживаю. Однако сам стараюсь отстраняться уже от uCoz. По мере возможности сам пишу требуемые сайты/странички на php...
|
|
|
|
|
Пользователь
92 сообщения
Мужчина
|
TRANE73, нет, пароли не храняться. Все данные что храняться на сервере можно глянуть после авторизации на странице Конфедициальность.
|
|
|
|
|
Бывалый
1828 сообщений
Мужчина
|
Quote (TRANE73) Хммм, логирования ввода сайта и пароля нет? А то что-то не очень охото вводить свои данные... Хех, такая же мысль была))
Quote (TRANE73) Однако сам стараюсь отстраняться уже от uCoz. Давно отстранился, только заказы делаю. С CMF намного интересней))
|
|
|
|
|
Бывалый
1029 сообщений
Мужчина
|
|
|
|
|
|
Пользователь
92 сообщения
Мужчина
|
ahar13, переезжаем на nginx со всеми вытекающими. В течении дня всё поднимется обратно
|
|
|
|
|