Историята на анализа на един aspx сайт
заден план
Всъщност аз съм дизайнер на оформление. И уеб разработчик, но в тази област уменията не са толкова високи, просто правя сносни сайтове на wordpress. Не съм срещал груби искания за къдрици преди. И с aspx сайтове - също. Но е интересно!(това доведе до месец вечери с php и няколко безсънни нощи. И много забавление, разбира се)
Първоначално имаше опити за междудомейн заявки с помощта на javascript, но нищо не се получи в тази посока. След това плахи разкопки към phantomjs и друга емулация на потребителско поведение. Но се оказа, че все още ми липсват js умения. В резултат на това всичко работи при curl заявки, идващи от php страницата.
Получаване на информацията
Разрешението се оказа достатъчно бързо и спечели повече или по-малко без проблеми.Най-неприятният проблем беше ограничението за броя на въведените неправилни пароли: два пъти - и се обадете на администратора, възстановете достъпа.
Но с прехода към желания град упорито се провали. Преходът беше направен, но някъде не там, въпреки че POST заявката беше завършена според всички правила. Оказа се, че preg_match не работи правилно с много голям брой знаци. Това се запазва чрез посочване на директивата
Първо получаваме първоначалното състояние на страницата (тъй като все още не сме влезли, стигаме до страницата за вход) и изваждаме viewstate от там:
Сега, когато вече имаме актуална моментна снимка на състоянието на страницата в ръцете си, въвеждаме потребителското име и паролата. (postdata е POST параметърът на заявката към страницата, можете да надникнете в същата пожарна грешка).
получаваме получаваме в резултат на състоянието на показване на страницата, от която се нуждаем.
Точно в този момент възникна проблемът с неработещия preg_replace, но решението - благодарение на Habr - беше намерено. Да!Сега можете да отидете на приложения за желания град и да започнете анализиране.
Когато най-накрая разберете какво правите, всичко е съвсем просто: трябва да следвате точно връзката, чието състояние на изглед е получено в предишната стъпка.
Обработка на данни
Разбрахме, започваме анализирането. Първият опит беше с регулярни изрази. За съжаление, php на хостинга някак работеше много странно с многоредови изрази и не изтръгна напълно селектирането (с всички опции), колкото и да го убеждавах (докато всичко работеше на локално).
Търсим в гугъл, мислим, четем. Намираме Нокогири. Знаеш ли, лесно и си заслужава! Наистина бързо и приятно нещо за работа:
Красота и украса
Изведнъж се появи много странен проблем: самият клиент, с очевидно недоволство, използва версията на разработчика без css, js и други звънци и свирки. По-точно, той не разбираше кактоваизобщо може да се използва.
Търсим информация за XHR заявки.
P.S. Просто ме попитаха дали е възможно да се променят данните в системата за работа с приложения с помощта на този клиент. Изглежда беше заплаха...
Hardcore conf в C++. Каним само професионалисти.