-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
enclaved
committed
Apr 21, 2020
0 parents
commit 431c120
Showing
13 changed files
with
783 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
*~ | ||
*.swp | ||
|
||
_build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Minimal makefile for Sphinx documentation | ||
# | ||
|
||
# You can set these variables from the command line. | ||
SPHINXOPTS = | ||
SPHINXBUILD = sphinx-build | ||
SOURCEDIR = . | ||
BUILDDIR = _build | ||
|
||
# Put it first so that "make" without argument is like "make help". | ||
help: | ||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | ||
|
||
.PHONY: help Makefile | ||
|
||
# Catch-all target: route all unknown targets to Sphinx using the new | ||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). | ||
%: Makefile | ||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
# -*- coding: utf-8 -*- | ||
# | ||
# Configuration file for the Sphinx documentation builder. | ||
# | ||
# This file does only contain a selection of the most common options. For a | ||
# full list see the documentation: | ||
# http://www.sphinx-doc.org/en/master/config | ||
|
||
# -- Path setup -------------------------------------------------------------- | ||
|
||
# If extensions (or modules to document with autodoc) are in another directory, | ||
# add these directories to sys.path here. If the directory is relative to the | ||
# documentation root, use os.path.abspath to make it absolute, like shown here. | ||
# | ||
# import os | ||
# import sys | ||
# sys.path.insert(0, os.path.abspath('.')) | ||
|
||
|
||
# -- Project information ----------------------------------------------------- | ||
|
||
project = u'Adspect' | ||
copyright = u'2020, Adspect' | ||
author = u'Adspect' | ||
|
||
# The short X.Y version | ||
version = u'' | ||
# The full version, including alpha/beta/rc tags | ||
release = u'' | ||
|
||
|
||
# -- General configuration --------------------------------------------------- | ||
|
||
# If your documentation needs a minimal Sphinx version, state it here. | ||
# | ||
# needs_sphinx = '1.0' | ||
|
||
# Add any Sphinx extension module names here, as strings. They can be | ||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom | ||
# ones. | ||
extensions = ['recommonmark'] | ||
|
||
# Add any paths that contain templates here, relative to this directory. | ||
templates_path = ['_templates'] | ||
|
||
# The suffix(es) of source filenames. | ||
# You can specify multiple suffix as a list of string: | ||
# | ||
# source_suffix = ['.rst', '.md'] | ||
source_suffix = ['.rst', '.md'] | ||
|
||
# The master toctree document. | ||
master_doc = 'index' | ||
|
||
# The language for content autogenerated by Sphinx. Refer to documentation | ||
# for a list of supported languages. | ||
# | ||
# This is also used if you do content translation via gettext catalogs. | ||
# Usually you set "language" from the command line for these cases. | ||
language = 'ru' | ||
|
||
# List of patterns, relative to source directory, that match files and | ||
# directories to ignore when looking for source files. | ||
# This pattern also affects html_static_path and html_extra_path. | ||
exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store'] | ||
|
||
# The name of the Pygments (syntax highlighting) style to use. | ||
pygments_style = None | ||
|
||
|
||
# -- Options for HTML output ------------------------------------------------- | ||
|
||
# The theme to use for HTML and HTML Help pages. See the documentation for | ||
# a list of builtin themes. | ||
# | ||
html_theme = 'sphinx_rtd_theme' | ||
|
||
# Theme options are theme-specific and customize the look and feel of a theme | ||
# further. For a list of options available for each theme, see the | ||
# documentation. | ||
# | ||
html_theme_options = { | ||
'logo_only': True, | ||
'display_version': False, | ||
} | ||
|
||
# Add any paths that contain custom static files (such as style sheets) here, | ||
# relative to this directory. They are copied after the builtin static files, | ||
# so a file named "default.css" will overwrite the builtin "default.css". | ||
html_static_path = ['_static'] | ||
|
||
# Custom sidebar templates, must be a dictionary that maps document names | ||
# to template names. | ||
# | ||
# The default sidebars (for documents that don't match any pattern) are | ||
# defined by theme itself. Builtin themes are using these templates by | ||
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', | ||
# 'searchbox.html']``. | ||
# | ||
# html_sidebars = {} | ||
|
||
# HTML logo path, relative to the html_static_path. | ||
html_logo = 'adspect.png' | ||
|
||
|
||
# -- Options for HTMLHelp output --------------------------------------------- | ||
|
||
# Output file base name for HTML help builder. | ||
htmlhelp_basename = 'Adspectdoc' | ||
|
||
|
||
# -- Options for LaTeX output ------------------------------------------------ | ||
|
||
latex_elements = { | ||
# The paper size ('letterpaper' or 'a4paper'). | ||
# | ||
# 'papersize': 'letterpaper', | ||
|
||
# The font size ('10pt', '11pt' or '12pt'). | ||
# | ||
# 'pointsize': '10pt', | ||
|
||
# Additional stuff for the LaTeX preamble. | ||
# | ||
# 'preamble': '', | ||
|
||
# Latex figure (float) alignment | ||
# | ||
# 'figure_align': 'htbp', | ||
} | ||
|
||
# Grouping the document tree into LaTeX files. List of tuples | ||
# (source start file, target name, title, | ||
# author, documentclass [howto, manual, or own class]). | ||
latex_documents = [ | ||
(master_doc, 'Adspect.tex', u'Adspect Documentation', | ||
u'Adspect', 'manual'), | ||
] | ||
|
||
|
||
# -- Options for manual page output ------------------------------------------ | ||
|
||
# One entry per manual page. List of tuples | ||
# (source start file, name, description, authors, manual section). | ||
man_pages = [ | ||
(master_doc, 'adspect', u'Adspect Documentation', | ||
[author], 1) | ||
] | ||
|
||
|
||
# -- Options for Texinfo output ---------------------------------------------- | ||
|
||
# Grouping the document tree into Texinfo files. List of tuples | ||
# (source start file, target name, title, author, | ||
# dir menu entry, description, category) | ||
texinfo_documents = [ | ||
(master_doc, 'Adspect', u'Adspect Documentation', | ||
author, 'Adspect', 'One line description of project.', | ||
'Miscellaneous'), | ||
] | ||
|
||
|
||
# -- Options for Epub output ------------------------------------------------- | ||
|
||
# Bibliographic Dublin Core info. | ||
epub_title = project | ||
|
||
# The unique identifier of the text. This can be a ISBN number | ||
# or the project homepage. | ||
# | ||
# epub_identifier = '' | ||
|
||
# A unique identification for the text. | ||
# | ||
# epub_uid = '' | ||
|
||
# A list of files that should not be packed into the epub file. | ||
epub_exclude_files = ['search.html'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
# Фильтрация трафика | ||
|
||
Существует несколько подходов к обнаружению и фильтрации нежелательных посетителей в рекламном трафике. | ||
В этой главе мы рассмотрим три основных технологии автоматической фильтрации и покажем, что делает Adspect | ||
уникальным и инновационным продуктом на рынке. | ||
|
||
## Черные списки | ||
|
||
Это наиболее распространенный и в то же время примитивный и наивный подход. Обычно для анализа выбирается | ||
узкий набор атрибутов посетителя (IP-адрес, заголовки HTTP-запроса и т.п.) и сверяется с заранее составленным | ||
«черным» списком этих атрибутов. Совпадение означает сигнал к блокировке. Несмотря на популярность, у этого | ||
подхода есть два существенных недостатка: | ||
|
||
1. Черные списки никогда не являются исчерпывающими, что делает процесс их обхода тривиальным. Для обхода | ||
черных списков IP-адресов достаточно менять IP-адреса, каждый раз выбирая для проверки новый из длинного | ||
списка, как это часто и делается с помощью прокси-сервисов. Невозможно занести в черный список все, всегда | ||
останутся бреши, через которые недоброжелатели получат доступ к защищаемому контенту. Существуют целые компании, | ||
бизнес которых построен на предоставлении в аренду огромных пулов резидентских IP-адресов (т.е. выданных | ||
провайдерам домашнего Интернета), постоянно пополняемых, что делает поддержание актуального черного списка | ||
таких IP-адресов невероятно сложной, если вообще выполнимой задачей. | ||
|
||
2. Черные списки могут быть слишком широкими в охвате, что приводит к ложноположительным срабатываниям. Это | ||
особенно актуально для черных списков адресов IPv4. Сравнительно небольшое 32-битное адресное пространство | ||
IPv4 уже исчерпано, вынуждая Интернет-провайдеров и сотовых операторов использовать [NAT](https://ru.wikipedia.org/wiki/NAT) | ||
для объединения целых абонентских сетей за единым общим IP-адресом. Попадание одного такого адреса в крупном | ||
мегаполисе в черный список, например по подозрению в использовании в качестве прокси (да, прокси за NAT существуют), | ||
будет означать одновременную блокировку тысяч хороших, благонадежных потенциальных посетителей. | ||
|
||
Черные списки --- это самый распространенный и зачастую единственный подход, используемый сервисами клоакинга | ||
в сфере партнерского маркетинга. Пусть и оправданный в некоторых случаях, этот подход слишком грубый и ненадежный, | ||
чтобы использовать его сам по себе. Ложноотрицательные результаты такой фильтрации --- наиболее частая причина | ||
«пробива клоаки». Adspect использует черные списки только там, где они не приводят к слишком широким блокировкам. | ||
|
||
## Сбор и анализ отпечатков | ||
|
||
Сбор отпечатков, по аналогии с отпечатками пальцев, --- это процесс сбора «машинных отпечатков» посетителей, | ||
которые их идентифицируют. Но, в отличие от совершенно уникальных отпечатков пальцев, машинные отпечатки не | ||
уникальны. В зависимости от алгоритма, они могут включать в себя разное число составляющих фактов. Некоторые факты | ||
встречаются очень часто, например строка user agent популярного браузера. Другие же факты, встречающиеся реже, | ||
примечательны тем, что встречаются только у всех тех нежелательных видов трафика, от которых мы защищаем своих | ||
клиентов. И мы в Adspect отлично знаем, что это за факты. | ||
|
||
Анализ машинных отпечатков --- это намного более продвинутая технология, которую используют крупные, ориентированные | ||
на бизнес-клиентов игроки на рынке защиты информации. Их услугами пользуются VAS-провайдеры (VAS --- «value-added | ||
services», мобильный контент) для защиты wap-click-офферов от скликивания. Adspect первыми применили технологию сбора | ||
и анализа отпечатков в adtech-индустрии для защиты рекламных кампаний частных рекламодателей. | ||
|
||
У нас имеется богатый опыт в анализе JavaScript-отпечатков --- машинных отпечатков, составленных из многочисленных | ||
деталей среды исполнения JavaScript в браузерах посетителей. Собираемые нами отпечатки состоят в среднем из | ||
1600--2200 различных фактов, которые показывают нам очень детальную картину внутреннего устройства программного | ||
обеспечения посетителей. Мы проверяем эти отпечатки десятками высокоточных тестов и безошибочно определяем | ||
нежелательный трафик. Мы считаем своей миссией принести сложные и дорогостоящие технологии из мира корпоративной | ||
защиты данных в мир партнерского маркетинга. | ||
|
||
## Машинное обучение | ||
|
||
Машинное обучение (ML) --- это широкий термин, в общем случае обозначающий алгоритмы обучения компьютеров для того, | ||
чтобы в дальнейшем использовать полученные ими знания для выполнения конкретной задачи. В плане защиты рекламного | ||
трафика машинное обучение может использоваться для оценки каждого отдельного клика с целью понять, целевой это | ||
посетитель или кто-то нежелательный. В научной среде это называется задачей классификации. И при условии наличия | ||
достаточного объема данных для обучения эта задача решается с очень высокой точностью. | ||
|
||
Машинное обучение оказалось идеальным инструментом анализа отпечатков с их огромным набором составляющих их фактов. | ||
Adspect использует собственную технологию машинного обучения VLA, которая постоянно обучается и точно распознает | ||
нежелательных посетителей далеко за рамками тех проверок, которые мы изначально в нее заложили. Более подробное | ||
описание технологии вы можете найти в [главе о VLA](vla.md). | ||
|
||
Машинное обучение пока остается «высшей математикой», которую применяют лишь немногие из лидеров рынка корпоративных | ||
антифрод-систем. Adspect является первой компанией, применившей машинное обучение для решения проблем безопасности | ||
в сфере партнерского маркетинга и рекламных технологий. | ||
|
||
## Наш подход | ||
|
||
Adspect использует все три описанных подхода совместно, не полагаясь целиком на какой-то один из них. Мы не держим | ||
все яйца в одной корзине. Это позволяет нам принимать точные решения с наименьшими ложноположительными и | ||
ложноотрицательными результатами. Мы твердо уверены в том, что детальные машинные отпечатки и их анализ алгоритмами | ||
машинного обучения будут играть ключевую роль в новых adtech-проектах, направленных на защиту рекламного трафика, | ||
благодаря огромному потенциалу обеих технологий, особенно когда они применяются совместно. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
Adspect: документация | ||
===================== | ||
|
||
.. toctree:: | ||
:maxdepth: 2 | ||
:caption: Содержание: | ||
|
||
overview | ||
filtering | ||
vla | ||
use-cases | ||
streams | ||
reporting | ||
pitfalls |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
@ECHO OFF | ||
|
||
pushd %~dp0 | ||
|
||
REM Command file for Sphinx documentation | ||
|
||
if "%SPHINXBUILD%" == "" ( | ||
set SPHINXBUILD=sphinx-build | ||
) | ||
set SOURCEDIR=. | ||
set BUILDDIR=_build | ||
|
||
if "%1" == "" goto help | ||
|
||
%SPHINXBUILD% >NUL 2>NUL | ||
if errorlevel 9009 ( | ||
echo. | ||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx | ||
echo.installed, then set the SPHINXBUILD environment variable to point | ||
echo.to the full path of the 'sphinx-build' executable. Alternatively you | ||
echo.may add the Sphinx directory to PATH. | ||
echo. | ||
echo.If you don't have Sphinx installed, grab it from | ||
echo.http://sphinx-doc.org/ | ||
exit /b 1 | ||
) | ||
|
||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% | ||
goto end | ||
|
||
:help | ||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% | ||
|
||
:end | ||
popd |
Oops, something went wrong.