LINUX.ORG.RU

Вытащить данные с сайта на ASP.NET


0

0

Есть сайт, написанный на asp.net с активным использованием viewstate. Сайт содержит таблицу на много страниц, содержимое которой надо вытащить.

В то время как нормальные сайты используют нормальные урлы вида ?page=123, тут черт ногу сломит.

Варианта я вижу 2:

- разобраться как сериализуются объекты viewstate

- написать расширение для ФФ.

А что посоветует коллективный разум?

★★★★★

Последнее исправление: sergej (всего исправлений: 1)

мне кажется все регэкспами можно сделать

antony986
()

[ bash + ] curl/wget + grep/sed/perl

arsi ★★★★★
()

viewstate разобрать не получится, т.к. он шифруется, а ключ шифрования генерится для каждого сервера свой.

Можно юзать Selenium

dmitry_vk ★★★
()
Ответ на: комментарий от dmitry_vk

А selenium похоже то, что нужно, спасибо.

Поставил selenium IDE в firefox. Теперь возьму модуль для перла и наверное все будет хорошо...

sergej ★★★★★
() автор топика
Ответ на: комментарий от sergej

Как зачем? Развивать телепатические навыки.

LamerOk ★★★★★
()
Ответ на: комментарий от arsi

А я расковыриваю неправославный сайт из совершенно православного линукса. Так что на винфаке не помогут.

Хотя проблема уже почти решена. Selenium отличная штука.

sergej ★★★★★
() автор топика
Ответ на: комментарий от sergej

> А я расковыриваю неправославный сайт из совершенно православного линукса.

а для православных Ъ пару слов о неправославных технологиях религия сказать запретила? неправославная у вас религия. вывод: на неправославный винфак ;)

arsi ★★★★★
()
Ответ на: комментарий от arsi

>действительно, ведь можно было сразу на винфак послать…

Человек спрашивал про свободные средства. Хотел справится с проприетарным беспределом, а вы его на винфак...

Sociopsih ★☆
()
Ответ на: комментарий от sergej

>Не, вроде не шифруется. Как минимум base64 -d дает относительно нормальный текст.

Хм, значит мне показалось. Для чего-то там использовалось шифрование (а может, это была подпись viewstate?).

dmitry_vk ★★★
()
Ответ на: комментарий от dmitry_vk

говорят их можно шифровать, но это не обязательно.

sergej ★★★★★
() автор топика

Для каждой кнопки смены страницы есть js, который делает пост. Причем js уже содержит заенкоденные данные. Ничего дополнительно кодировать не надо. Нужно просто его распарсить и запостить, естественно не забыть выдрать __EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE, __EVENTVALIDATION и остальные контролы на форме. TamperData в помощь.

Ниже код на питоне, который это парсит для списка пользователей в мтсовском сервис-гиде.

def task_page_num(self, page_num):
        match = re.search(
            u'(?ius)Страницы:</span>.*?javascript:__gvctl00_placer_tableControl_view\.callback\("(?P<callback>%d.*?)"\);\s*return\s*false;"\s*href="javascript:__doPostBack\(\'ctl00\$placer\$tableControl\$view\',\'Page\$%d\'\)">%d</a>' % (page_num-1, page_num, page_num),
            self.body)

        if not match:
            raise self.ErrorSaveBody(u'Не могу распарсить ссылку для страницы [%d]' % page_num)

        self.page_user_list.post['__gvctl00_placer_tableControl_view__hidden'] = match.group('callback')

        return self.page_user_list.fetch()
baverman ★★★
()
Ответ на: комментарий от baverman

спасибо, попробую если selenium не поможет.

sergej ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.