Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет schegloff ([info]schegloff)
@ 2007-03-24 12:47:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Только для знакомых с Python - история моих бедствий и просьба о помощи
Сначала просьба:

Помогите решить проблему авторизации на livejournal.com! (нужно для бэкапа подзамочных записей в [info]shrewd_club@lj, где я имею несчастье состоять смотрителем). Но только примите к сведению:

1) совет "посмотри, как в LJSM, и сделай так же" не проходит - Perl я почти не знаю, смотрю на исходник, как баран на новые ворота; нужна по крайней мере возможность задавать вопросы, что там как, и получить ответы;

2) совет "так это же через cookie решается, как два байта" тоже ничего не дает - стандартная библиотека cookielib с эксплореровскими куками не работает, только с перловскими, рекомендуемое ее расширение ClientCookie у меня просто не запускается; как конвертировать эксплореровские куки в перловские, я тоже не знаю...

Словом, реально need help, уперся рогом.

Ну а теперь история бедствий:
- тестировал я питоновский генератор случайных чисел, и назвал свою програмку-тест random.py;
- после этого появился странный глюк - мой lj_archiver и другие программки стали вылетать при одиночном запуске, а вот из интегрированной среды питона - по-прежнему работали;
- методом копирования в другой каталог я установил, что виной всему random.py, имеющий одинаковое название с библиотекой random - и перегружающая эту библиотеку при запуске других программ из каталога, где находится.

Бедствовал я так больше недели, будучи уверенным, что urllib никак не может быть связана с random, и проблема где-то у провайдера. Ага, щас!

Мораль: не называйте Ваши программки в питоне именами библиотек, бо-бо будет!

Я в ужасе. Сколько же всякого разного я про Python не знаю, и сколько, скорее всего, никогда не узнаю!


(Читать комментарии) - (Добавить комментарий)

Э, да я с этим сталкивался!
[info]schegloff
2007-03-26 17:38 (ссылка)
Когда тупо копировал куки из сниффера в хеадеры, и получал этот самый 302 с новым адресом! То есть это нормальное поведение LJ, а не посылание на?! Но тогда у меня совсем другая проблема, не авторизация, а ловля редиректов - cookilib эти редиректы не раскручивает, значит, нужно вручную.

То есть это борьба уже не столько с питоном, сколько с движком LJ. Вы сами раскручивали эти редиректы, сколько раз он так с адреса на адрес перекидывает? Или есть стандартный способ - кстати, что есть callback?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Э, да я с этим сталкивался!
[info]do_
2007-03-26 18:12 (ссылка)
>То есть это нормальное поведение LJ, а не посылание на?!
Ну да, это, в принципе, нормальное взаимодействие по HTTP, многие сайты так делают, google в частности.
P.S. Хотя, кажется, есть некая комбинация хидеров, при которой перенаправления идут до бесконечности.

>cookilib эти редиректы не раскручивает, значит, нужно вручную.
Значит, надо вручную. С другой сторoны -- ну что такого сложного, просто повторяем запрос с присланным адресом, не забывая попутно сохранить куки

>Вы сами раскручивали эти редиректы, сколько раз он так с адреса на адрес перекидывает?
Если честно, не считал.

>кстати, что есть callback?
В общем случае -- функция, вызываемая по какому-то событию. В данном случае, при получении статуса 302. В Перле нужно унаследовать класс от LWP::UserAgent и определить в нём метод redirect_ok(). Потом, когда будет сделан запрос и вернётся 302, этод метод будет вызван, если вернёт true -- редирект будет обработан автоматически, если false -- не будет. Но самое главное, что в этот метод передаётся параметр HTTP::Response, из которого можно выделить и сохранить необходимые куки...

(Ответить) (Уровень выше)


(Читать комментарии) -