Люди не читают инструкций. Вы почти наверняка не читали лицензионное соглашение Windows, не читали лицензионное соглашение iTunes, не читали условия Linux GPL или любого другого программного обеспечения.
Это нормально. Такова наша природа.
То же самое происходит в интернете. В последнее время благодаря GDPR и другим законам часто приходится видеть всплывающие сообщения, где вас спрашивают разрешения на использование cookies.
Большинство нажимает «Согласиться» — и продолжает жить как ни в чём ни бывало. Никто ведь не читает политику конфиденциальности, верно?
Разработчик Конрад Акунга (Conrad Akunga) решил разобраться, какие конкретно условия предусмотрены соглашением об использовании. Для примера он взял новостной сайт Reuters. Это абсолютно произвольный пример, у большинства других сайтов тоже есть свои правила.
Вот эти правила:
Обратите внимание на полосу прокрутки. Дальше идёт продолжение.
Если вкратце, документ информирует пользователя о нескольких вещах:
- Что веб-сайт собирает и обрабатывает данные
- Что для этого он работает с различными партнёрами
- Что сайт хранит некоторые данные на вашем устройстве с помощью файлов cookie
- Что некоторые файлы cookie строго необходимы (определяется сайтом). Их нельзя отключить.
- Некоторые персональные данные могут быть проданы партнёрам для предоставления соответствующего контента
- Вы можете персонализировать рекламу, но не удалить её
Вероятно, все эти запутанные меню компания разработала, чтобы создать некую видимость прозрачности, открытости к диалогу. Но вы всё равно не можете отключить «основные» cookie, поскольку они нужны для работы сайта.
Вы также не можете полностью отключить рекламу. Таким образом, ваш единственный выбор — либо смотреть рекламу, выбранную случайным образом, либо рекламу, которая, по мнению провайдера, может иметь к вам какое-то отношение.
И ещё один пункт о партнёрах, которым продаются ваши персональные данные. Список партнёров общий для всех сайтов, которые сотрудничают с IAB.
Кто же эти «партнёры»?
Если нажать на соответствующую кнопку, то появится следующее окно:
Обратите внимание, насколько маленький ползунок на полосе прокрутки. Наверное, там их сотни. Под названием каждой компании — ссылка на политику конфиденциальности.
Это не одна и та же ссылка, а разные! Каждая из них ведёт на уникальную политику конфиденциальности каждого партнёра. Сколько человек на самом деле пойдёт по этим ссылкам вручную, чтобы прочитать условия? Это просто нереально.
Конрад Акунга воспользовался инструментами разработчика Chrome, чтобы извлечь реальный список партнёров со ссылками на условия конфиденциальности каждого из них.
Скопированный список он вставил в VSCode — и получил огромный файл на 3835 строк, который после форматирования (Alt + Shift + F
) разбился в чудовище на 54 399 строк.
Конрад написал программку, которая с помощью регулярных выражений извлекает нужные фрагменты данных — названия компаний с URL — и генерирует результат в формате Markdown по шаблону.
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
// Define the regex to extact vendor and url
var reg = new Regex(""vendor-title">(?<company>.*?)<.*?vendor-privacy-notice".*?href="(?<url>.*?)"",
RegexOptions.Compiled);
// Load the vendors into a string, and replace all newlines with spaces to mitigate
// formatting issues from irregular use of the newline
var vendors = File.ReadAllText("vendors.html").Replace(Environment.NewLine, " ");
// Match against the vendors html file
var matches = reg.Matches(vendors);
Log.Information("There were {num} matches", matches.Count);
// extract the vendor number, name and their url, ordering by the name first.
var vendorInfo = matches.OrderBy(match => match.Groups["company"].Value)
.Select((match, index) =>
new
{
Index = index + 1,
Name = match.Groups["company"].Value,
URL = match.Groups["url"].Value
});
// Create a string builder to progressively build the markdown
var sb = new StringBuilder();
// Append headers
sb.AppendLine($"Listing As At 30 December 2020 08:10 GMT");
sb.AppendLine();
sb.AppendLine("|-|Vendor| URL |");
sb.AppendLine("|---|---|---|");
// Append the vendor details
foreach (var vendor in vendorInfo)
sb.AppendLine($"|{vendor.Index}|{vendor.Name}|[{vendor.URL}]({vendor.URL})|");
// Delete existing markdown file, if present
if (File.Exists("vendors.md"))
File.Delete("vendors.md");
//Write markdown to file
File.WriteAllText("vendors.md", sb.ToString());
В результате получился список всех партнёров, и у каждой — свой уникальный документ c условиями конфиденциальности. Вот этот список: vendors.md.
В нём 647 компаний.
Очевидно, что никто не сможет ознакомиться со всеми этими условиями прежде, чем нажать кнопку «Согласиться», делает вывод автор.
Помните, что эти рекламные провайдеры предоставляют одни и те же услуги разным сайтам. Они однозначно идентифицируют браузер и устройство, поэтому могут анализировать и отслеживать ваши действия на разных сайтах для создания максимально точного профиля. На каждого якобы анонимного пользователя собираются большие объёмы данных.
Код для парсинга из этой статьи опубликован на Github.
Автор: GlobalSign_admin