SlideShare a Scribd company logo
1 of 46
Ловля сетями
Вымышленная история одного разработчика
1
Дмитрий Рыбаков
Руководитель мобильной разработки, Lamoda
Об авторе
dmitriy.rybakov@lamoda.ru
http://tech.lamoda.ru
2
Предисловие
Предисловие
Почти любое мобильное приложение общается с сервером
Очень часто по HTTP + JSON/XML
4
Предисловие
Василий П. —
мобильный разработчик
Динамично
развивающийся стартап
Тестовое задание
https://developer.github.com/v3/
5
До приложения
Браузер
Самое быстрое
решение всегда под
рукой
7
Браузер
Делаем красиво.
Плагины для Chrome
JSON Viewer
JSON Formatter
JSON Handle
и еще десятки…
8
curl
Любые действия с
URL в консоли
curl https://api.github.com/users/MikeCamino
9
curl
10
curl https://api.github.com/users/MikeCamino -i
Заголовки ответа
curl https://api.github.com/users/MikeCamino –i –H ”User-Agent: GitHub Test App”
Заголовки запроса
curl https://api.github.com/gists –i –H ”User-Agent: GitHub Test App” –X POST
Не только GET
curl https://api.github.com/gists –i –H ”User-Agent: GitHub Test App” –X POST –d “{
"description": "the description for this gist", "public": true, "files": {
"file1.txt": { "content": ”<6Kb of text>" } } }”
POST-запрос с телом
API tools
11
Soap UI
Много функций
Поддержка SOAP
Интерфейс из 2000-х
Очень медленно
Insomnia
Как редактор кода
Лаконичный интерфейс
Меньше функций, чем у
Postman
Postman
Все функции Insomnia
Автоматизация
тестирования API
Перегруженный
интерфейс
https://insomnia.rest/https://www.soapui.org/ https://www.getpostman.com
Postman
Комплекс для
тестирования API
Все платформы и
расширение для
Chrome
12
Postman
История, коллекции запросов и переменные
13
Postman
Параметры и заголовки запроса
14
Postman
Заголовки и форматирование ответа
15
Postman
OAuth 2
16
До приложения
17
Браузер
Всегда под рукой
Много плагинов
Только GET-запросы
CURL
Умеет почти все
Много ручного труда
Нет OAuth
API Tools
Коллекции запросов
Переменные и пресеты
Форматирование ответов
OAuth
https://curl.haxx.se
В коде приложения
Отладчик
Есть в IDE «из
коробки»
19
Контекст запроса
Стек вызовов
Отладчик
Куда поставить точку остановки?
20
1 // Создаем HTTP-клиента
2 OkHttpClient client = new OkHttpClient.Builder()
3 .build();
4
5 // Создаем запрос
6 Request rq = new Request.Builder()
7 .url("https://api.github.com/users/MikeCamino").build();
8
9 // Выполняем его асинхронно
10 client.newCall(rq).enqueue(new Callback() {
11 public void onFailure(Call call, IOException e) {}
12 public void onResponse(Call call, Response response) throws IOException {}
13 }
Отладчик
Куда поставить точку остановки? А вот куда
21
// Создаем HTTP-клиента
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
public Response intercept(Chain chain) throws IOException {
return chain.proceed(chain.request());
}
})
.build();
// Создаем запрос
Request rq = new Request.Builder()
.url("https://api.github.com/users/MikeCamino").build();
// Выполняем его асинхронно
client.newCall(rq).enqueue(new Callback() {
public void onFailure(Call call, IOException e) {}
public void onResponse(Call call, Response response) throws IOException {}
Логирование запросов
Android + OkHttp 3 + Logging Interceptor. Подключение
22
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(logging)
.build();
build.gradle
Java
https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor
Логирование запросов
Android + OkHttp3 + LoggingInterceptor. Результат
23
D/OkHttp: --> GET https://api.github.com/users/MikeCamino http/1.1
D/OkHttp: --> END GET
D/OkHttp: <-- 200 OK https://api.github.com/users/MikeCamino (1127ms)
D/OkHttp: Server: GitHub.com
D/OkHttp: Date: Thu, 01 Jun 2017 10:43:17 GMT
D/OkHttp: Content-Type: application/json; charset=utf-8
D/OkHttp: Status: 200 OK
D/OkHttp: Transfer-Encoding: chunked
D/OkHttp:
{"login":"MikeCamino","id":1525248,"avatar_url":"https://avatars0.githubusercontent.
com/u/1525248?v=3","gravatar_id":"","url":"https://api.github.com/users/MikeCamino",
"html_url":"https://github.com/MikeCamino","followers_url":"https://api.github.com/u
sers/MikeCamino/followers","following_url":"https://api.github.com/users/MikeCamino/
following{/other_user}","gists_url":"https://api.github.com/users/MikeCamino/gists{/
gist_id}","starred_url":"https://api.github.com/users/MikeCamino/starred{/owner}{/re
po}","subscriptions_url":"https://api.github.com/users/MikeCamino/subscriptions","or
ganizations_url":"https://api.github.com/users/MikeCamino/orgs","repos_url":"https:/
Логирование запросов
iOS + Response Detective. Подключение
24
let configuration = URLSessionConfiguration.default
ResponseDetective.enable(inConfiguration: configuration)
let session = URLSession(configuration: configuration)
Общая конфигурация
URLSession
let manager = Alamofire.Manager(configuration: configuration)
AlamoFire
https://github.com/netguru/ResponseDetective
Логирование запросов
iOS + Response Detective. Результат
25
<0x000000000badf00d> [REQUEST] GET https://api.github.com/users/MikeCamino
├─ Headers
├─ Body
│ <none>
<0x000000000badf00d> [RESPONSE] 200 (NO ERROR)
https://api.github.com/users/MikeCamino
├─ Headers
│ Server: GitHub.com
│ Date: Thu, 01 Jan 1970 00:00:00 GMT
│ Content-Type: application/json
├─ Body
│ {
│ "args" : {
│ },
│ "headers" : {
│ "User-Agent" : "ResponseDetective/1 CFNetwork/758.3.15 Darwin/15.4.0",
│ "Accept-Encoding" : "gzip, deflate",
Внешние отладчики
26
Chrome
Developer Tools
Facebook
Stetho
Android
Square Pony
Debugger
iOS
http://facebook.github.io/stetho/ https://github.com/square/P
onyDebugger
Facebook Stetho (Android)
Подключение
27
debugCompile ("com.facebook.stetho:stetho:1.5.0")
debugCompile ("com.facebook.stetho:stetho-okhttp3:1.5.0")
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
build.gradle
Java
Square Pony Debugger (iOS)
Подключение
28
pod 'PonyDebugger', '~> 0.4.3'
ponyd serve --listen-interface=127.0.0.1
CocoaPods
Start gateway server
PDDebugger *debugger = [PDDebugger defaultInstance]; // Debugger singleton
[debugger autoConnect];
[debugger enableNetworkTrafficDebugging];
Application code
Stetho / Pony. Запросы
Список запросов
29
Последовательность
Размер и время
Таймлайн
Stetho / Pony
Форматирование
ответов:
JSON
XML
Картинки
30
Stetho / Pony
Иерархия View
31
Stetho / Pony
Просмотр данных
SQLite
CoreData
32
Во время разработки
33
Отладчик
Всегда под рукой
Все детали и контекст
Медленно и по одному
Логирование
Любые свои запросы
Вместе с другими логами
Только текстовые ответы
Засоряет логи
Stetho / Pony
Все свои запросы
Куча деталей
Форматирование ответов
Не только сеть
Требуют настройки
Без кода приложения
Без кода приложения
Отладочные прокси
35
Устройство Прокси Сервер
Отладочные прокси
36
На устройстве
Packet Capture
Только Android
На локальной машине
Charles Proxy
Fiddler
Burp
В облаке
Cloud Middleman
Charles
Android
iOS
Реальные
устройства
Эмуляторы
37
Charles
Весь трафик
устройства
Картинки
Сторонние библиотеки
Шифрованный трафик
38
Отладочные прокси
Без дешифрования трафика
39
Устройство Прокси Сервер
Сертификат сервера Сертификат сервера
Отладочные прокси
Дешифрование трафика
40
Устройство Прокси Сервер
Сертификат прокси Сертификат прокси
Charles
Весь трафик
устройства
В том числе и HTTPS
41
Отладочные прокси
Владеют всем трафиком устройства
42
Устройство Прокси Сервер
Модификация запросов и
ответов
Троттлинг и точки останова
Запись и реплеи
Без кода приложения
43
Charles
Все платформы
$50 за лицензию
Fiddler
Бесплатный
Только Windows
Cloud Middleman
Не требует установки
Доступен отовсюду
Ограниченые
возможности
В заключение
В заключение
45
До приложения
Специальные
инструменты для
тестирования API
В коде приложения
Логирование запросов
Внешние отладчики
Без кода приложения
Отладочные прокси
Спасибо!
Дмитрий Рыбаков Руководитель мобильной разработки, Lamoda
email dmitriy.rybakov@lamoda.ru
http://tech.lamoda.ru

More Related Content

What's hot

Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationCOMAQA.BY
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Fwdays
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroIgor Izraylevych
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AI
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym ShestopalFwdays
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationSQALab
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложенияDenis Izmaylov
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеDenis Izmaylov
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Fwdays
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьScrumTrek
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25MoscowJS
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеAlex Tumanoff
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETMikhail Shcherbakov
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
WordPress: React way by Oleksandr Strikha
WordPress: React way by Oleksandr StrikhaWordPress: React way by Oleksandr Strikha
WordPress: React way by Oleksandr StrikhaWordCamp Kyiv
 
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
"Изоморфная разработка на javascript с помощью react.js" Максим КлимишинFwdays
 
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationMikhail Shcherbakov
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesDenis Izmaylov
 

What's hot (20)

Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
 
React native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym Shestopal
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
 
Изоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабирование
 
Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"Svyatoslav Login "How to test authentication and authorization for security"
Svyatoslav Login "How to test authentication and authorization for security"
 
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальностьДенис Измайлов, JavaScript сегодня: React, Redux и новая реальность
Денис Измайлов, JavaScript сегодня: React, Redux и новая реальность
 
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
 
Release management with Gradle #JokerConf2016
Release management with Gradle #JokerConf2016Release management with Gradle #JokerConf2016
Release management with Gradle #JokerConf2016
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
Silverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопеSilverlight 4, есть ли жизнь на десктопе
Silverlight 4, есть ли жизнь на десктопе
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
WordPress: React way by Oleksandr Strikha
WordPress: React way by Oleksandr StrikhaWordPress: React way by Oleksandr Strikha
WordPress: React way by Oleksandr Strikha
 
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
"Изоморфная разработка на javascript с помощью react.js" Максим Климишин
 
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 

Similar to Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбаков (Lamoda)

Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Александр Егурцов
 
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutinescorehard_by
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesVictor Login
 
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...Vadim Ponomarev
 
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Vadim Kruchkov
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, HuntflowИзоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, Huntflowit-people
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Noveo
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''DneprCiklumEvents
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIEatDog
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ciАлександр Сигачев
 

Similar to Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбаков (Lamoda) (20)

Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)Устройство фреймворка symfony 2 (http://frontend-dev.ru)
Устройство фреймворка symfony 2 (http://frontend-dev.ru)
 
Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutines
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с Kubernetes
 
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
OpenStack - Python Project with 12 Million Lines of code (RUS, Moscow Python ...
 
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, HuntflowИзоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, Huntflow
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
 
Нельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование APIНельзя просто так взять и сделать версионирование API
Нельзя просто так взять и сделать версионирование API
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбаков (Lamoda)

Editor's Notes

  1. Приложения общаются с сервером По HTTP/JSON История о человеке, писавшем клиент-серверное приложение
  2. Почитать спеку Построить запросы Почитать ответы Пощупать ошибки
  3. Дело не пошло дальше простых GET-запросов
  4. Несмотря на то, что curl мог все, запросов и параметров становилось все больше. Разбирать ответы было трудно. К тому же не было OAuth. Нужно было что-то менять. Поспрашивав мировой разум, Василий нашел несколько
  5. Импорт коллекций из Swagger, RAML, WADL, curl, Runscope и собственного формата
  6. Чужой код, много запросов, надо понять, что и куда отправляется Первая мысль – есть отладчик
  7. В отладчике много полезного: можно будет увидеть не только запрос с ответом, но и их окружение – что к ним привело и во что они распарсились
  8. Василий находит место в коде, где создается клиент и асинхронный запрос
  9. Часто точку остановки поставить просто некуда – приходится писать дополнительный код К тому же отладка запросов по одному отнимала много времени. Испытательный срок тикал, а проблема не решалась Василий задумался: раз есть код, где доступен и запрос и ответ, то зачем останавливаться? Можно записать результат в лог
  10. Айос-девелопер по неизвестным причинам покинул проект и Василию пришлось поддерживать работу iOS-приложения
  11. Для него, к счастью, нашлось аналогичное решение
  12. Логирование очень ускорило работу Василия, но логи: Сильно засорялись Показывали только текстовые ответы Василий стал искать решение, которое бы складывало запросы в какое-то другое место и нашел его
  13. Кто хоть раз открывал Chrome Developer Tools? Еще называют Debug Bridge или Debug Gateway
  14. Много информации в небольшом пространстве
  15. Отладчик: для детального изучения одного запроса и его окружения Логи: запрос/ответ в контексте всех остальных логов Внешние: Pony требует запуска сервера на Питоне. Stetho нужно не забывать выключать для продакшен-сборок
  16. Задание – отладить запросы из библиотеки сбора аналитики: исходников нет, запросы шированые и их тыщи
  17. Кто знает, что такое прокси? Работает на уровне устройства, а не приложения Могут модифицировать запросы и ответы, эмулировать другую скорость соединения
  18. Не зависят от платформы Работают во всей системе Не требуют изменений в коде
  19. Настраивается
  20. Проблема была в том, что часть трафика библиотеки была зашифрована
  21. HTTPS – вопрос доверия Без дешифрования – насквозь
  22. С дешифрованием Man In The Middle
  23. Проблема была решена
  24. Работает на уровне устройства, а не приложения Могут модифицировать запросы и ответы, эмулировать другую скорость соединения
  25. Не имея доступа к коду можно увидеть даже больше, чем
  26. Не бойтесь новых инструментов Экономьте свое время на важные задачи Успешной вам отладки!