SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Защита от парсинга под
нагрузкой
Дмитрий Бархатов

2gis.ru

@rnd2gis
2ГИС
3

Данные
• 5 стран
• 10 тыс. населенных пунктов
• 5 млн. гео-объектов
• 2 млн. организаций
• 15 тыс. маршрутов
Нас парсят
5
Проблемы

Мусорная нагрузка
+
Плохая карма
Что делать?
1. IP
9

NAT
• Студенческая сеть
• Сотовая вышка
11

2. API-ключ
http://api.2gis.ru/search?what=Пиво&where=Москва&key=1234

Ограничение по referer
›cr -rfrr2i.u
ul -eee gsr
Кийя!
3. Аналитика
на лету
15

Анализируем нагрузку
• RPS
• Нагрузка в динамике
16

Нагрузка за длительный период
Нормальная ситуация
17

Нагрузка за длительный период
Парсер
18

Анализ активности на проекте
• Хостинг
• Прачечные
• Школы каскадёров
• Матрасы
• Алмазное бурение
19

Итого по аналитике
• Текущая нагрузка
• Кратковременная нагрузка
• Долговременная нагрузка
• Поведение
Как делать?
21

Каменный век — локация в NginX
0 .g o $ a {
1 e bn
0.
2
0 .}
3

2310134
1.8.9.9

1
;
22

Средневековье — PHP + Redis
23

Современность — Lua

openresty.org
24

ngx_lua
0 .l c t o / {
1 oain
0.
2

cnetb_u '
otn_yla

0.
3
0.
4
0 .}
5

nxsy"el,hgla+"
g.a(hlo ihod+)
'
;
25

Lua: считаем RPS
0 .h t {
1 tp
0.
2

lasae_itRS1m
u_hrddc P 0;

0.
3

..
.
26

Lua: считаем RPS
0 .i = n x v r r m t _ d r
1 p
g.a.eoead
0 .r s = n x s a e . P : n r i , 1
2 p
g.hrdRSic(p )

0 .i r s > X t e
3 f p
hn
0.
4

nxsae.ANDsti,1
g.hrdBNE:e(p )

0.
5

nxei(4)
g.xt44

0 .e d
6 n
27

Lua: смотрим динамику
0 .f r i = - 0 0 d
1 o
6,
o
0.
2

- сормдны вхаиие
- мти ане
рнлщ

0.
3

- пииамршне
- рнме ееи

0 .e d
4 n
28

Нагрузка в течение суток
Lua как поставщик данных

0 .l c t o / e _ a _ u s {
1 oain gtbdgy
0.
2

cnetb_u '
otn_yla
- оде дны и хаииа
- там ане з рнлщ

0.
3
0.
4
0 .}
5

'
;
29

Отстреливаем негодяев
0 .i n x s a e . A N D g t i ) t e
1 f g.hrdBNE:e(p hn
0.
2
0 .e d
3 n

nxei(4)
g.xt44
Скорость?
31

Бенчи голосуют за Lua

http://openresty.org/#Benchmark
http://benchmarksgame.alioth.debian.org/u64/benchmark.php
http://attractivechaos.github.io/plb/
1 мс
Да ладно!
1 мс
16000 RPS
Lua (1 мс) vs PHP (15 мс)
Попался, голубчик!
38

Бан или не бан
• Уверены → Бан
• Не уверены → Помогите, люди добрые
Когда снимать бан?
41

Минусы всего подхода
• Нет однозначной идентификации
• Бот может замаскироваться
42

Результат
В связи с временными техническими проблемами онлайн-версии
2GIS, мы решили предложить Вам выгодные условия по
приобретению нашей программы: успейте купить парсер организаций
2GIS по цене 2000 рублей вместо 4000 рублей
43

Просто и быстро
Используйте простые скриптовые языки в связке с NginX с
алгоритмами анализа статистики в реальном времени.
44

Вопросы?
Дмитрий Бархатов

d.barkhatov@2gis.ru

Weitere ähnliche Inhalte

Was ist angesagt?

Распределенные системы хранения данных, особенности реализации DHT в проекте ...
Распределенные системы хранения данных, особенности реализации DHT в проекте ...Распределенные системы хранения данных, особенности реализации DHT в проекте ...
Распределенные системы хранения данных, особенности реализации DHT в проекте ...yaevents
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...
Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...
Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...SPECIA
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Ontico
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Badoo Development
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)Nikolay Samokhvalov
 
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest
 
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...Ontico
 
Не SQL'ем единым
Не SQL'ем единымНе SQL'ем единым
Не SQL'ем единымAlexander Byndyu
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСOntico
 
Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++Ciklum Ukraine
 
20130420 bitbyte
20130420 bitbyte20130420 bitbyte
20130420 bitbyteDevexperts
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовMax Lapshin
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014Maxim Dementyev
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиBadoo Development
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 

Was ist angesagt? (20)

Распределенные системы хранения данных, особенности реализации DHT в проекте ...
Распределенные системы хранения данных, особенности реализации DHT в проекте ...Распределенные системы хранения данных, особенности реализации DHT в проекте ...
Распределенные системы хранения данных, особенности реализации DHT в проекте ...
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...
Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...
Артем Шкондин (http://www.shkondin.ru/), "Эволюция поведенческих факторов ран...
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
 
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
Доклад Валерия Старынина на DevConf 2014. "StatsCollector, или "Мама! Он и ме...
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
CodeFest 2014. Круглов И. — События на каждом углу. Путешествие в мир системн...
 
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
Эффективные алгоритмы поиска подобных объектов для терабайтов данных / Евгени...
 
Не SQL'ем единым
Не SQL'ем единымНе SQL'ем единым
Не SQL'ем единым
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
 
Avito Stachka 2012
Avito Stachka 2012Avito Stachka 2012
Avito Stachka 2012
 
Developing high load systems using C++
Developing high load systems using C++Developing high load systems using C++
Developing high load systems using C++
 
20130420 bitbyte
20130420 bitbyte20130420 bitbyte
20130420 bitbyte
 
Pulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядовPulsedb — система хранения временных рядов
Pulsedb — система хранения временных рядов
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014maps.sputnik.ru #highload2014
maps.sputnik.ru #highload2014
 
Kubasov
KubasovKubasov
Kubasov
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 

Andere mochten auch

Justificacion y antecendente
Justificacion y antecendenteJustificacion y antecendente
Justificacion y antecendenteJhonatan Coronel
 
Transkrip S1_page 2_Megah Stefani
Transkrip S1_page 2_Megah StefaniTranskrip S1_page 2_Megah Stefani
Transkrip S1_page 2_Megah StefaniMegah Stefani
 
Insolvency - A guide for shareholders
Insolvency - A guide for shareholdersInsolvency - A guide for shareholders
Insolvency - A guide for shareholdersSV Partners
 
Using games to develop teams
Using games to develop teamsUsing games to develop teams
Using games to develop teamsscanniff
 
Seuratuki 2013-2014. Toimintavuoden tulokset
Seuratuki 2013-2014. Toimintavuoden tuloksetSeuratuki 2013-2014. Toimintavuoden tulokset
Seuratuki 2013-2014. Toimintavuoden tuloksetJohanna Paukku
 
De Andrade P. Amalia Maria
De Andrade P. Amalia MariaDe Andrade P. Amalia Maria
De Andrade P. Amalia MariaAna De Andrade
 
PhpStorm Cheat Sheet
PhpStorm Cheat SheetPhpStorm Cheat Sheet
PhpStorm Cheat SheetKamrul Hasan
 
Indonesia's policy package implications
Indonesia's policy package implicationsIndonesia's policy package implications
Indonesia's policy package implicationsKyna Tsai
 

Andere mochten auch (11)

Rainforest Ecolodge
Rainforest Ecolodge Rainforest Ecolodge
Rainforest Ecolodge
 
Justificacion y antecendente
Justificacion y antecendenteJustificacion y antecendente
Justificacion y antecendente
 
Transkrip S1_page 2_Megah Stefani
Transkrip S1_page 2_Megah StefaniTranskrip S1_page 2_Megah Stefani
Transkrip S1_page 2_Megah Stefani
 
PHMaster.Scan
PHMaster.ScanPHMaster.Scan
PHMaster.Scan
 
Insolvency - A guide for shareholders
Insolvency - A guide for shareholdersInsolvency - A guide for shareholders
Insolvency - A guide for shareholders
 
Using games to develop teams
Using games to develop teamsUsing games to develop teams
Using games to develop teams
 
Seuratuki 2013-2014. Toimintavuoden tulokset
Seuratuki 2013-2014. Toimintavuoden tuloksetSeuratuki 2013-2014. Toimintavuoden tulokset
Seuratuki 2013-2014. Toimintavuoden tulokset
 
Presentación1
Presentación1Presentación1
Presentación1
 
De Andrade P. Amalia Maria
De Andrade P. Amalia MariaDe Andrade P. Amalia Maria
De Andrade P. Amalia Maria
 
PhpStorm Cheat Sheet
PhpStorm Cheat SheetPhpStorm Cheat Sheet
PhpStorm Cheat Sheet
 
Indonesia's policy package implications
Indonesia's policy package implicationsIndonesia's policy package implications
Indonesia's policy package implications
 

«Система защиты от парсинга API 2ГИС» — Дмитрий Бархатов, 2ГИС