SlideShare a Scribd company logo
1 of 21
Download to read offline
Stanfy MadCode Meetup: 
Анализ и модификация HTTP 
запросов для тестирования 
мобильных приложений 
Олег Никифоров 
QA @ Stanfy
План вебинара 
• Что такое снифферы, плюсы и минусы 
использования 
• Why bother? или чем работа с трафиком может 
помочь? 
• Client vs Cloud sniffers 
• HTTP - виды запросов и их структура 
• HTTP vs HTTPS 
• Виды ошибок 
• Работа со сниффером (на примере Burp Suite)
Что такое снифферы и для 
чего их применять 
Сниффер - программа для перехвата и 
логирования трафика проходящего внутри 
сети. 
При тестировании приложений, в том 
числе и мобильных, снифферы 
применяются для просмотра и подмены 
запросов-ответов между клиентом и 
сервером.
Минусы использования (на 
примере Burp Suite) 
• Невозможность 
использовать сервисы по 
типу AppStore (свой 
сертификат) 
• Если не выключить прокси 
когда выключен сниффер – 
запросы не будут работать 
(фон) 
• Увеличивается время на 
операцию запрос – ответ
Плюсы использования 
• Возможность 
эмулировать тайм-ауты 
соединения 
• Возможность 
эмулировать серверные 
ошибки 
• Возможность 
манипулировать 
данными как в запросе, 
так и в ответе
Why Bother? 
• Как может помочь (positive) 
• Что можно проверять (negative)
Как может помочь (positive) 
• подменить id пользователя/айтема в запросе 
чтобы получить другие данные в ответе 
• изменить user status на лету: free/paid, approved/ 
not approved 
• подмена контента в запросе (значения 
параметров) 
• подмена контента в ответе (значения 
параметров, ссылки на медиа файлы (фото, 
аудио, видео))
Что можно проверять 
(negative) 
Вызов серверных ошибок для проверки их 
обработки на клиенте: 
• пустые required fields, 
• ошибочные данные, 
• неверный токен авторизации 
Вызов ошибок в аппе путем подмены ответа от 
сервера: 
• пустые параметры в ответе, 
• невалидные значения (string вместо int и т.д.), 
• невалидная структура ответа
Client vs Cloud sniffers 
• Burp suite (client): 
+ много возможностей 
+ гибкие настройки 
- условно бесплатный 
• Runscope (cloud): 
+ не надо включать прокси на всем девайсе 
+ перехват по url 
+ перехват без ведома пользователя ;) 
- бесплатный пакет сильно лимитирован в запросах 
- для вкл / выкл надо менять исходники приложения
Типы HTTP запросов (REST) 
GET/POST/PUT/DELETE 
GET: 
• предназначен для запроса данных 
• query в url 
POST: 
• предназначен для отсылки данных 
• query в body
Структура запроса - Headers 
Headers - параметры которые описывают клиент- 
серверное взаимодействие (кодировка, кэширование, тип 
контента, и т.д.): 
• Cookie / Auth Token / etc. – идентификатор сессии 
• User-Agent - описание девайса, ОС, версии аппа, etc. 
• Accept - ожидаемый нами формат контента (json, xml) 
Кроме того, идентификатор сессии может быть вынесен в 
уникальный параметр и передаваться в url
Структура 
запроса 
-­‐ 
Body 
Body 
-­‐ 
тело 
запроса, 
содержит 
передаваемую 
нами 
инфу 
Тут 
будет 
перечень 
всех 
параметров 
которые 
мы 
отсылаем 
на 
сервер 
в 
POST 
запросе, 
плюс 
любой 
загружаемый 
контент 
(изображение, 
аудио/видео 
файл)
Структура 
ответа 
HTTP 
Status 
Code 
-­‐ 
код 
и 
краткое 
сообщение, 
которые 
показывают 
статус 
взаимодействия 
(e.g. 
200 
OK) 
Headers 
-­‐ 
параметры 
которые 
описывают 
ответ 
(дата, 
тип 
контента, 
и 
т.д.): 
• Content-­‐Type 
• Set-­‐Cookie 
Body 
-­‐ 
тело 
ответа, 
содержит 
передаваемую 
нам 
инфу
HTTP 
vs 
HTTPS
HTTP Status codes 
2** - успешный запрос 
• 200 OK 
3** - переопределение на другой url 
• 304 Not Modified 
4** - ошибка на клиенте 
• 400 Bad Request 
• 401 Unauthorized 
5** - ошибка на сервере 
• 500 Internal Server Error
Примеры ошибок 
HTTP/1.1 200 OK 
Connection: Keep-Alive 
Content-Length: 112 
Content-Type: application/json 
{ 
"status" : "FAILURE", 
"message" : "Failure", 
"code" : 4, 
"description" : "Unidentified system error" 
} 
HTTP/1.1 200 OK 
Connection: Keep-Alive 
Content-Length: 112 
Content-Type: application/json 
{ 
"action": "SomeAction", 
"resultCode": "0", 
"errorCode": "10", 
"errorString": "Duplicate confirmation code 
error", 
"queryString": null 
}
HTTP/1.1 403 Forbidden 
Date: Tue, 09 Dec 2014 09:48:08 GMT 
Content-Type: application/json;charset=utf-8 
Content-Length: 30 
{"fail":"Unauthorized Access"} 
HTTP/1.1 400 Bad Request 
Date: Tue, 09 Dec 2014 09:49:04 GMT 
Content-Type: application/json;charset=utf-8 
Content-Length: 27 
{"fail":"Invalid Argument"} 
HTTP/1.1 401 UNAUTHORIZED 
Server: nginx/1.7.7 
Date: Tue, 09 Dec 2014 10:24:53 GMT 
Content-Type: text/html; charset=utf-8 
Content-Length: 258 
Set-Cookie: 
devicesession=.eJyrVorPTFGyqlZSSFKyUvJ1ycnxrQLCrFCDqNygbD8jv8zIXF8jIN8oyiWwIio; 
HttpOnly; Path=/ 
{"error": "The server could not verify that you are authorized to access the URL requested", 
"name": "Unauthorized"}
Party time 
Mindie - приложение для снятия и 
шаринга коротких видеороликов с 
наложением музыки и разных эффектов 
Почему Mindie? - Есть фид, есть новости, 
есть профиль
Feedback 
nikiphor@hotmail.com 
navisnobilite 
#MadCode

More Related Content

More from Stanfy

Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...
Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...
Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...
Stanfy
 
Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...
Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...
Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...
Stanfy
 
Stanfy Publications: Mobile Applications UI/UX Prototyping Process
Stanfy Publications: Mobile Applications UI/UX Prototyping ProcessStanfy Publications: Mobile Applications UI/UX Prototyping Process
Stanfy Publications: Mobile Applications UI/UX Prototyping Process
Stanfy
 
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
Stanfy
 

More from Stanfy (12)

Building Profanity Filters: clbuttic sh!t
Building Profanity Filters: clbuttic sh!tBuilding Profanity Filters: clbuttic sh!t
Building Profanity Filters: clbuttic sh!t
 
Optimistic Approach. How to show results instead spinners without breaking yo...
Optimistic Approach. How to show results instead spinners without breaking yo...Optimistic Approach. How to show results instead spinners without breaking yo...
Optimistic Approach. How to show results instead spinners without breaking yo...
 
ComponenKit and React Native
ComponenKit and React NativeComponenKit and React Native
ComponenKit and React Native
 
UX Research in mobile
UX Research in mobileUX Research in mobile
UX Research in mobile
 
Remote user research & usability methods
Remote user research & usability methodsRemote user research & usability methods
Remote user research & usability methods
 
Stanfy MadCode Meetup#6: Apple Watch. First Steps.
Stanfy MadCode Meetup#6: Apple Watch. First Steps.Stanfy MadCode Meetup#6: Apple Watch. First Steps.
Stanfy MadCode Meetup#6: Apple Watch. First Steps.
 
Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...
Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...
Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мо...
 
Stanfy's highlights of 2013
Stanfy's highlights of 2013Stanfy's highlights of 2013
Stanfy's highlights of 2013
 
10 things to consider when choosing a mobile platform (iOS or Android)
10 things to consider when choosing a mobile platform (iOS or Android)10 things to consider when choosing a mobile platform (iOS or Android)
10 things to consider when choosing a mobile platform (iOS or Android)
 
Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...
Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...
Stanfy Publications: How to Conduct Quick Usability Tests for iOS & Android A...
 
Stanfy Publications: Mobile Applications UI/UX Prototyping Process
Stanfy Publications: Mobile Applications UI/UX Prototyping ProcessStanfy Publications: Mobile Applications UI/UX Prototyping Process
Stanfy Publications: Mobile Applications UI/UX Prototyping Process
 
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
Stanfy Publications: Successful Cases of Mobile Technology in Medical Industry
 

Stanfy MadCode Meetup #2: Sniffers

  • 1.
  • 2. Stanfy MadCode Meetup: Анализ и модификация HTTP запросов для тестирования мобильных приложений Олег Никифоров QA @ Stanfy
  • 3. План вебинара • Что такое снифферы, плюсы и минусы использования • Why bother? или чем работа с трафиком может помочь? • Client vs Cloud sniffers • HTTP - виды запросов и их структура • HTTP vs HTTPS • Виды ошибок • Работа со сниффером (на примере Burp Suite)
  • 4. Что такое снифферы и для чего их применять Сниффер - программа для перехвата и логирования трафика проходящего внутри сети. При тестировании приложений, в том числе и мобильных, снифферы применяются для просмотра и подмены запросов-ответов между клиентом и сервером.
  • 5. Минусы использования (на примере Burp Suite) • Невозможность использовать сервисы по типу AppStore (свой сертификат) • Если не выключить прокси когда выключен сниффер – запросы не будут работать (фон) • Увеличивается время на операцию запрос – ответ
  • 6. Плюсы использования • Возможность эмулировать тайм-ауты соединения • Возможность эмулировать серверные ошибки • Возможность манипулировать данными как в запросе, так и в ответе
  • 7. Why Bother? • Как может помочь (positive) • Что можно проверять (negative)
  • 8. Как может помочь (positive) • подменить id пользователя/айтема в запросе чтобы получить другие данные в ответе • изменить user status на лету: free/paid, approved/ not approved • подмена контента в запросе (значения параметров) • подмена контента в ответе (значения параметров, ссылки на медиа файлы (фото, аудио, видео))
  • 9. Что можно проверять (negative) Вызов серверных ошибок для проверки их обработки на клиенте: • пустые required fields, • ошибочные данные, • неверный токен авторизации Вызов ошибок в аппе путем подмены ответа от сервера: • пустые параметры в ответе, • невалидные значения (string вместо int и т.д.), • невалидная структура ответа
  • 10. Client vs Cloud sniffers • Burp suite (client): + много возможностей + гибкие настройки - условно бесплатный • Runscope (cloud): + не надо включать прокси на всем девайсе + перехват по url + перехват без ведома пользователя ;) - бесплатный пакет сильно лимитирован в запросах - для вкл / выкл надо менять исходники приложения
  • 11. Типы HTTP запросов (REST) GET/POST/PUT/DELETE GET: • предназначен для запроса данных • query в url POST: • предназначен для отсылки данных • query в body
  • 12. Структура запроса - Headers Headers - параметры которые описывают клиент- серверное взаимодействие (кодировка, кэширование, тип контента, и т.д.): • Cookie / Auth Token / etc. – идентификатор сессии • User-Agent - описание девайса, ОС, версии аппа, etc. • Accept - ожидаемый нами формат контента (json, xml) Кроме того, идентификатор сессии может быть вынесен в уникальный параметр и передаваться в url
  • 13. Структура запроса -­‐ Body Body -­‐ тело запроса, содержит передаваемую нами инфу Тут будет перечень всех параметров которые мы отсылаем на сервер в POST запросе, плюс любой загружаемый контент (изображение, аудио/видео файл)
  • 14. Структура ответа HTTP Status Code -­‐ код и краткое сообщение, которые показывают статус взаимодействия (e.g. 200 OK) Headers -­‐ параметры которые описывают ответ (дата, тип контента, и т.д.): • Content-­‐Type • Set-­‐Cookie Body -­‐ тело ответа, содержит передаваемую нам инфу
  • 16. HTTP Status codes 2** - успешный запрос • 200 OK 3** - переопределение на другой url • 304 Not Modified 4** - ошибка на клиенте • 400 Bad Request • 401 Unauthorized 5** - ошибка на сервере • 500 Internal Server Error
  • 17. Примеры ошибок HTTP/1.1 200 OK Connection: Keep-Alive Content-Length: 112 Content-Type: application/json { "status" : "FAILURE", "message" : "Failure", "code" : 4, "description" : "Unidentified system error" } HTTP/1.1 200 OK Connection: Keep-Alive Content-Length: 112 Content-Type: application/json { "action": "SomeAction", "resultCode": "0", "errorCode": "10", "errorString": "Duplicate confirmation code error", "queryString": null }
  • 18. HTTP/1.1 403 Forbidden Date: Tue, 09 Dec 2014 09:48:08 GMT Content-Type: application/json;charset=utf-8 Content-Length: 30 {"fail":"Unauthorized Access"} HTTP/1.1 400 Bad Request Date: Tue, 09 Dec 2014 09:49:04 GMT Content-Type: application/json;charset=utf-8 Content-Length: 27 {"fail":"Invalid Argument"} HTTP/1.1 401 UNAUTHORIZED Server: nginx/1.7.7 Date: Tue, 09 Dec 2014 10:24:53 GMT Content-Type: text/html; charset=utf-8 Content-Length: 258 Set-Cookie: devicesession=.eJyrVorPTFGyqlZSSFKyUvJ1ycnxrQLCrFCDqNygbD8jv8zIXF8jIN8oyiWwIio; HttpOnly; Path=/ {"error": "The server could not verify that you are authorized to access the URL requested", "name": "Unauthorized"}
  • 19. Party time Mindie - приложение для снятия и шаринга коротких видеороликов с наложением музыки и разных эффектов Почему Mindie? - Есть фид, есть новости, есть профиль
  • 20.