Русский
Русский
English
Статистика
Реклама

Whatsapp

Перевод Хакаем WhatsApp, чтобы следить за активностью контактов

26.04.2021 10:24:01 | Автор: admin
WhatsApp сообщает пользователю статус его контактов.

TL;DR: можно защититься от этого хака, изменив настройки конфиденциальности аккаунта. По умолчанию WhatsApp делится вашим статусом с другими людьми. Но так как в наши дни никто не меняет настройки, этот хак срабатывает практически всегда.

Дисклеймер: эта статья является proof of concept, призванной привлечь внимание к проблеме, а также попрактиковать свои технические навыки. Не используйте код для слежки за людьми.



WhatsApp на Android

Эксплойт функции


Я хочу создать эксплойт этой функции для слежения за пользователями (ради научного исследования, конечно). Возникает первый вопрос: как она работает?

Чтобы разобраться, я использую https://web.whatsapp.com/ в веб-браузере ноутбука вместо приложения в Android-смартфоне. То есть для создания эксплойта мне придётся иметь дело с обычным реверс-инжинирингом веб-приложения. Реверс-инжиниринг приложения для Android я оставлю на потом.

Я выбрал друга из контактов телефона, чтобы посмотреть, как ведёт себя его статус на моей стороне.

Изначально статус имеет значение Offline, и в этом случае WhatsApp передаёт вам абсолютную дату вида last seen 16/03/2020 at 15:40.


Разблокирую телефон друга и открываю приложение (не WhatsApp), занимаюсь этим минуту, на моей стороне ничего не происходит.

Ладно, теперь переключаемся на WhatsApp. 10 секунд спустя статус изменился на online. Я не перехожу в беседы, которые являются общими с этим телефоном/контактом, чтобы убедиться, что статус передаётся без этого условия.


Статус online сохраняется, пока я не выхожу из WhatsApp или не отключаю экран целевого телефона.

После этого приложение возвращается к новому last seen и состоянию offline.


Подведём итог:

  • Мы не сможем следить за местоположением пользователя в мире при помощи его телефона (надеюсь!)
  • Но мы можем отслеживать, пользуются ли WhatsApp те, кто находится в наших контактах
  • Утекающая информация представляет собой дату last seen и статус online для каждого контакта
  • Можно ожидать как минимум точность до минуты для даты last seen
  • А статус online отображается, если WhatsApp был открыт хотя бы в течение 5-10 секунд

Технический анализ


Открываю отладчик Firefox, чтобы посмотреть, как фронтенд веб-приложения WhatsApp получает нужные данные.

Фронтенд использует для получения данных в реальном времени связь через веб-сокеты, примерно через каждые 10-15 секунд.


Если внимательно следить, то можно заметить, что фронтенд пингует сервер примерно каждые 15 секунд строкой ?,,, и почти всегда за этим следует ответ !{timestamp}. Что-то типа проверки активности соединения. Нам это неинтересно.


Когда статус контакта меняется, сервер передаёт фронтенду сообщение другого типа.



Частично скрытое мной значение id это номер телефона, type это флаг доступен/недоступен, t это временная метка даты last seen. Вся полезная нагрузка инкапсулирована в объект Presence, который легко можно распознать.

Временная метка совпадает с тем, что мы видим в UI.


Преобразовано с помощью www.epochconverter.com

Ограничения


Для получения событий presence от сервера через веб-сокеты, мы (фронтенд) подписываемся на конкретный номер телефона (id). Это срабатывает, когда мы выбираем другую беседу/контакт при помощи веб-интерфейса.


Итак, в этой концепции мы можем получать только события presence активного контакта. Другими словами, мы можем отслеживать одновременно только один контакт через веб-сокетное подключение. Очень жаль!

Также WhatsApp не позволяет нам открывать несколько параллельных экземпляров приложения (с одинаковыми куки). То есть мы никак не сможем одновременно открыть два канала веб-сокетов. Это было бы слишком просто!


И, наконец, это поведение вида одна веб-сессия WhatsApp за раз сохраняется при попытке создания двух независимых сессий (с разными куки). Новая сессия заставляет старую закрыться, в частности, на слое веб-сокетов.

Ещё одно ожидаемое ограничение: валидность сессии ограничена по времени. Срок моей истёк 22.10.2020, спустя шесть с лишним месяцев. Странно, что можно так получить подобную информацию на фронтенде. Возможно, я что-то не так понял.


Наивная реализация


Теперь, когда мы определили, в чём заключается функция status WhatsApp и как её можно злонамеренно использовать для слежения за пользователями, настало время писать код. Также мы взглянем на техническую реализацию и поищем возможные простые уязвимости безопасности.

Я мог бы заново написать код обмена данными через веб-сокеты, чтобы получать данные о статусе, но это будет сложно. Слишком сложно, если мы можем отслеживать одновременно только один контакт. Я начну с высокоуровневой технологии, учту известные нам пока ограничения, и посмотрю, к чему это может нас привести.

Мне хочется увидеть, чего можно добиться дешёвым хакингом, а уже потом приступать к более сложным вещам.

Я разобью proof of concept на три этапа:

  • Получение данных
  • Сохранение данных (легко)
  • Визуализация данных (легко, но у меня вызовет сложности)

Скрейпить данные я буду с помощью Node.js и Puppeteer; Puppeteer позволяет нам управлять браузером и взаимодействовать также, как это бы делал пользователь с мышью и клавиатурой. Это позволяет нам избежать сложного реверс-инжиниринга на уровне веб-сокетов, и именно поэтому я выбрал этот способ. Вообще я больше привык работать с Selenium + C#. Это мой первый эксперимент с Puppeteer, так что не судите строго.

const puppeteer = require('puppeteer');// The contact name to track (mind the case).const contactTarget = "Jean-Mich";(async () => {    const browser = await puppeteer.launch({         headless: false, // No headless to scan the QR code.         userDataDir: 'data/userdata' // Persist the session.    });    const page = await browser.newPage();    await page.goto('https://web.whatsapp.com/');    await page.waitFor(5000);    console.log('Awaiting/Checking peering with WhatsApp phone');    await page.waitFor('#side', { timeout: 60000 }).then(() => { // Scan the QR code within the next minute.        console.log('Connected !');    }).catch((res) => {        console.log('Not connected !', res);        return -1;    })    await page.waitFor(1000);    await page.focus('._2S1VP'); // Focus search input form.    await page.keyboard.type(contactTarget, { delay: 100 });    await page.waitFor(6000);    let contactElt = (await page.$x(`//*[@class="_25Ooe" and . = "${contactTarget}"]`))[0]; // Select the best result.    contactElt.click();    await page.waitFor(5000);        let statusElt = await page.$('.O90ur');    let status = await statusElt.evaluate(x => x.textContent);    console.log(`Status for ${contactTarget} is '${status}'.`); // `last seen today at 13:15` format.    await browser.close();})();

Мы реализовали базовую функциональность в 38 строках кода.

Чтобы двигаться дальше, нам нужно спарсить формат last seen today at 13:15 в формат даты. Для этого я использую замечательный npm-пакет chrono-node.

const chrono = require('chrono-node');// ...let status = await statusElt.evaluate(x => x.textContent);  // `last seen today at 13:15` format.let lastSeenDate = chrono.parseDate(status);// ...

Наконец, я реализовал в коде цикл, постоянно сканирующий статус и сохраняющий его в InfluxDB 2.0.

InfluxDB это база данных временных рядов (time-series database). Она идеально нам подходит.

Я на основании даты last seen я запишу UInteger в переменную offline since. Это будет счётчик секунд, прошедших после даты last seen.

Если статус online, то offline since будет иметь значение 0.

Извлечение наших данных это превращение данных событий в данные временных рядов.

Такая структура лучше подходит для InfluxDB и особенно для Grafana, которая будет отображать наши данные. К тому же она не хранит состояния, мне это нравится.

Для сохранения данных в InfluxDB 2.0 я использую клиент Node.js с форматом line protocol базы данных InfluxDB.

measurementName,tagKey=tagValue fieldKey="fieldValue" 1465839830100400200--------------- --------------- --------------------- -------------------       |               |                  |                    |  Measurement       Tag set           Field set            Timestamp

Сохраняемые данные выглядят так:

status,contactName=Toto offlineSince=8275u 1465839830100400200status,contactName=Toto offlineSince=8280u 1465839830100400200status,contactName=Toto offlineSince=0u 1465839830100400200status,contactName=Tata offlineSince=0u 1465839830100400200------ ---------------  ----------------- -------------------  |            |                |                  |Measurement Tag set         Field set          Timestamp


Реализация кода:

const { InfluxDB, FluxTableMetaData } = require('@influxdata/influxdb-client')let client = new InfluxDB({ url: 'http://localhost:9999', token: process.env.INFLUXDB_TOKEN });const writeApi = client.getWriteApi(process.env.INFLUXDB_ORG, process.env.INFLUXDB_BUCKET);//...let offlineSince = (lastSeenDate === null) ? 0 : ((new Date().getTime() - lastSeenDate.getTime()) / 1000).toFixed(0);if (offlineSince < 0)    offlineSince = 0;let data = `status,contactName=${contactTarget} offlineSince=${offlineSince}u`;writeApi.writeRecord(data);

Существует пограничный случай, который бы я хотел обрабатывать: иногда в WhatsApp статус вообще не отображается.

В таком случае мы не введём в базу данных значение offlineSince, потому что у нас его нет. Вместо этого мы при каждом сканировании статуса будем записывать значение statusAvailable (которое равно 0 или 1).

Теперь мы подключим Grafana к InfluxDB и создадим дэшборд для слежения за полученными данными.


Исходный код этого proof of concept можно найти здесь.

Часть 2. Отслеживаем 5000 случайных телефонов


В предыдущей части мы выяснили, что достаточно легко взломать онлайн-статус контакта WhatsApp. Простую информацию Online или last seen yesterday at 19:00 реверс-инжинирингом можно заставить выполнять утечку пользования телефоном с точностью в несколько секунд.

Но я ещё не сказал о гораздо более странной вещи: можно отслеживать любой мобильный телефон! Давайте поиграем и увеличим масштабы слежения до 5000 случайных номеров.

Как и в первой части, я делюсь исходным кодом как PROOF OF CONCEPT. Если вам больше интересны результаты, чем технические подробности, то можете сразу переходить в конец статьи. Мы снова будем использовать предыдущий код на основе Node.js, Puppeteer и Grafana.

Мои друзья, мои контакты


WhatsApp считывает контакты в телефоне и позволяет чатиться с теми, кто тоже добавлен в список. Поэтому мы можем свободно добавить в качестве контакта случайный номер и найти его в WhatsApp.


Хотя для добавления номера в список контактов не требуется, WhatsApp защищает пользователей, предлагая им согласиться на ответ или сообщить о спаме при первом обмене сообщениями. Безусловно, это помогает бороться с ботами.

Как ни удивительно, это не относится к статусу Last Seen.


Ой, а почему я вижу эти данные last seen?

Как мы видели в первой части, существует препятствующая этому настройка конфиденциальности. По умолчанию она имеет значение Everyone, но никто его не меняет.


Если вы не хотите делиться своим статусом Last Seen, то WhatsApp отключает эту функцию в обоих направлениях

Экспериментируем с 5000 контактов


Мне стало любопытно, как далеко мы сможем зайти с этой уязвимостью. Я не хочу отслеживать конкретных людей и не буду спрашивать разрешения у 5000 людей, как мог это сделать в первом хаке.

Поэтому я усложню задачу, вычислю анонимную статистику и запишу данные. Давайте увеличим масштаб до 5000 телефонов.

Генерируем 5000 контактов


Чтобы расширить proof of concept до 5000 контактов, мне нужно будет зарегистрировать 5000 контактов в телефоне! И я не собираюсь делать это вручную.

Для этого я перешёл в свой аккаунт Google на десктопном веб-сайте, зашёл на страницу Contacts и нашёл там кнопку import a CSV.


Документация выглядит очень запутанной и длинной. Я не стал её изучать и экспортировал уже имеющиеся контакты, чтобы изучить модель данных. И она действительно оказалась сложной. После нескольких попыток мне удалось импортировать пару контактов с минимально возможным количеством заполненных полей.

Name,Given Name,Additional Name,Family Name,Yomi Name,Given Name Yomi,Additional Name Yomi,Family Name Yomi,Name Prefix,Name Suffix,Initials,Nickname,Short Name,Maiden Name,Birthday,Gender,Location,Billing Information,Directory Server,Mileage,Occupation,Hobby,Sensitivity,Priority,Subject,Notes,Language,Photo,Group Membership,Phone 1 - Type,Phone 1 - ValueContactA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Mobile,06 01 02 03 04ContactB,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Mobile,06 01 02 03 05ContactC,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Mobile,06 01 02 03 06

Additional Name Yomi?


На случай, если вы больше привыкли к CSV в Excel

Я написал скрипт для генерации CSV из 5000 контактов:

const fs = require("fs");require("dotenv").config();const startingNumber = process.env.STARTINGNUMBER;const fileName = "5000contacts.csv";const csvHeader =  "Name,Given Name,Additional Name,Family Name,Yomi Name,Given Name Yomi,Additional Name Yomi,Family Name Yomi,Name Prefix,Name Suffix,Initials,Nickname,Short Name,Maiden Name,Birthday,Gender,Location,Billing Information,Directory Server,Mileage,Occupation,Hobby,Sensitivity,Priority,Subject,Notes,Language,Photo,Group Membership,Phone 1 - Type,Phone 1 - Value";fs.appendFileSync(fileName, csvHeader + "\n");let numbers = startingNumber.split(" ");let counter2 = Number(numbers[2]);let counter3 = Number(numbers[3]);let counter4 = Number(numbers[4]);for (let index = 0; index < 5000; index++) {  if (counter4 == 99) {    counter4 = 0;    counter3++;  }  if (counter3 == 99) {    counter3 = 0;    counter2++;  }  let number = `${numbers[0]} ${numbers[1]} ${twoDigit(counter2)} ${twoDigit(    counter3  )} ${twoDigit(counter4)}`;  let csvRow = `Unknown${index},,,,,,,,,,,,,,,,,,,,,,,,,,,,,Mobile,${number}`;  fs.appendFileSync(fileName, csvRow + "\n");  counter4++;  console.log(`${index} -> ${number}`);}function twoDigit(number) {  var twodigit = number >= 10 ? number : "0" + number.toString();  return twodigit;}


Набор из 5000 французских номеров

И импортировал их в Gmail.


Почему это так легко, Google, ты что, крэйзи?

Затем я убедился, что мой телефон их синхронизировал (бедному телефону потребовался на синхронизацию целый час, не думаю, что он сможет выдержать ещё пять тысяч контактов).


Получение данных


Я модифицировал свой код так, чтобы он обходил в цикле все 5000 импортированных неизвестных контактов, и запустил его.


Оставил этот краулер на пару дней. (На самом деле на шесть дней, и это при помощи совершенно тупого кода! Серьёзно, здесь нет никакой защиты.) И вот какие получились красивые данные в дэшборде Grafana, взятом из предыдущего проекта.


Исходная выборка в 100 контактов. Каждое падение до 0 означает, что контакт пользовался смартфоном.

Также мы можем проверять, зарегистрирован ли номер в WhatsApp, выполняя запросы, как показано на скриншоте ниже.


Заключение


Мне удалось продолжать сканировать 5000 телефонов непрерывно в течение месяца при помощи простого кода скрейпинга.

Очевидно, WhatsApp не проверяет и не предупреждает злонамеренное использование этой функции. Мне удалось 15 000 раз использовать движок поиска для получения данных last seen за одну веб-сессию.

Для исследования я наскрейпил множество данных из 112 тысяч записей.

Моё исследование показало, что можно:

  • Определить, зарегистрирован (или был ли зарегистрирован) номер телефона в WhatsApp
  • Действителен (или был ли действителен) номер телефона и привязан ли он к телефонной сети
  • Получать фото профиля пользователя WhatsApp (можно извлекать версию в большом размере)
  • Получать сами данные last seen

Важно указать, что я не знаю, какие из 5000 контактов действительны.

Я использовал французский диапазон номеров 06xxxxxxxx (или 00336xxxxxxxx), который переполнился 10 лет назад (поэтому тогда появился диапазон 07xxxxxxxx). Поэтому, вероятно, можно допустить, что по крайней мере 80% номеров телефонов действительно.

Вот визуализация пользователей, сгруппированных по дате last seen, дающей представление о пользовании WhatsApp. Я собрал данные примерно в первую неделю февраля.


Снижение с 1357 активных пользователей в прошлом месяце до 281 на прошлой неделе довольно значительно, его можно связать с критикой WhatsApp в конце декабря 2020 года. Мне не очень интересно изучать эти данные подробнее, на этом всё, спасибо за внимание.

Messenger, Signal и Telegram (бонус)


(Facebook) Messenger не использует номеров телефонов контактов для поиска пользователей, потому что пользуется для этого аккаунтами Facebook. Совершенно иная структура, поскольку это социальная сеть и она меньше похожа на мобильный сервис VOIP. Думаю, множество похожих хаков с получением информации можно реализовать и в Messenger. Но это уже другая история, возможно, оставим её на следующий раз?

Signal и Telegram больше похожи на WhatsApp с точки зрения работы с контактами. Однако утечки там не так велики.

Данные last seen из Telegram менее доступны публично и менее подробны, например, они сообщают, что пользователь был онлайн около месяца назад. Движок поиска не имеет утечек, позволивших бы оценить количество пользователей во время моего исследования. Но теперь, спустя шесть недель, похоже, что это возможно. Меня это немного расстроило.

У Signal вообще нет функции last seen, здесь он чист. Однако посчитать пользователей было просто. Signal имеет уведомление {x} is on Signal!, когда контакт начинает им пользоваться. Это помогает отслеживать переход пользователей на Signal.


В первый день исследования из 5000 пользователей 94 было в Signal, и каждый последующий день появлялось по 1-2 новичка. Никто не использует Signal во Франции, очевидно, влияние Илона Маска здесь не так велико.


Да, это картинка, чтобы за вами не могли следить.



На правах рекламы


VDSina предлагает безопасные серверы с посуточной оплатой. Возможно установить любую операционную систему, в том числе из своего образа. Каждый сервер подключён к интернет-каналу в 500 Мегабит и бесплатно защищён от DDoS-атак!

Подробнее..

Какие шишки мы набили внедряя WhatsApp для бизнеса

13.12.2020 22:19:10 | Автор: admin

В этой статье я хочу рассказать от опыте внедрения мессенджера WhatsApp для осуществления коммуникаций с клиентами онлайн-платформы обучения детей английскому языку Novakid. Почему мы выбрали WhatsApp и с кем его внедрили, насколько это приложение помогает в ведении и развитии бизнеса, как помогает обслуживать клиентов и координировать работу сотрудников - подробности ниже.

Первые шаги

Использовать WhatsApp в Novakid начали в середине 2018 года, примерно через полгода после запуска стартапа. Количество учеников на платформе выросло с 0 до 1000 и появилась необходимость оперативной связи с клиентами. Практика показала, что это наиболее удобный и оперативный инструмент коммуникации. С помощью приложения сотрудники онлайн-школы не только напоминают о занятиях, но собирают обратную связь и комментарии о работе платформы.

Внедрение было тяжелым. WhatsApp только анонсировал запуск официального Business API, и мы одними из первых стали использовать это программное обеспечение для связи с клиентами. В какой-то момент мы стали даже рисковать использовать самописные решения, за которые могли получить постоянный бан от создателей мессенджера, рассказывают в Novakid.

Надо отметить, что WhatsApp не работает напрямую с конечным пользователем и не предоставляет доступ к своему API, этим занимается ограниченный список официальных партнеров (их список можно посмотреть здесь). Мы выбрали одну из доступных интеграций на маркетплейсе Intercom эта платформа используется у нас для работы с клиентами. Однако, и этот путь не привел к успеху присутствие сервиса-прослойки между прямым поставщиком WhatsApp API и Novakid значительно замедляло работу запросы обрабатывались очень медленно, шаблоны на отправку долго согласовывались, а с API было тяжело выстроить нормальную работу.

Цена общения

Череда ошибок на этапе запуска WhatsApp API для работы с клиентами привела нас к необходимости выбрать из списка официальных провайдеров бизнес-платформы мессенджера. После сравнения и анализа мы выбрали Gupshup.

Главными критериями выбора для нас были доступность API документации, наличие песочницы (тестового сервера) и стоимость. Если по первым двум пунктам предложения были плюс/минус похожи, то цены были очень разные

Расходы на официальное использование WhatsApp API для бизнеса складываются из нескольких элементов:

  • Комиссия по умолчанию, составляющая $0.048 за сообщения рассылки;

  • Плата за услуги провайдера (абонентская плата, плата за подключение, либо комиссия провайдера за каждое сообщение). При этом некоторые провайдеры берут все три комиссии сразу.

Мы провели анализ и поняли, что для нашей модели бизнеса выгоднее платить по факту и без всяких абонентских плат. Плата за каждое сообщение составляет около $0.049 и по $0.001 за сообщения в сессии.

Плюсы WhatsApp

WhatsApp запрещает отправлять рекламный спам пользователям. И, на наш взгляд, это плюс для обеих сторон: клиенту не нравится получать рекламу, а для бизнеса WhatsApp создает некий ограничивающий фактор, чтобы он не злоупотребил возможностями и не достал своего клиента. В WhatsApp мы отправляем сообщения пользователям при наступлении определенных событий. Например, закончился пробный урок, напишите обратную связь, назначили урок на 15:00 и т.п.

Отличие сообщений в WhatsApp от СМС-сообщений в количестве и качестве откликов. Со временем статистика показала, что клиенты почти никогда не отвечают на СМС-ки. В случае же с мессенджером, общение происходит сразу по факту уведомления. По логам сервера можно посмотреть живую историю переписки, необходимая информация оперативно доводится до конечного потребителя услуг.

Все это привело к более ответственному поведению родителей, которые забывали произвести оплату за занятие, например, из-за своей высокой занятости. Операторы Novakid ненавязчиво напоминают об окончании средств на счете и переводят их на страницу оплаты прямо в чате мессенджера.

И минусы

При работе с платформой провайдера WhatsApp есть свои недостатки, которые не могут быть видны клиентам. Так, например, не указывается причина отклонения заявок.

Однажды нам отклонили все шаблоны сообщений рассылки на турецком языке. Но, как стало известно, позднее, это формат работы WhatsApp INC., и провайдеры никак не могут на это повлиять, рассказывает сотрудница службы поддержки Novakid.

Еще одно небольшое неудобство связано с подготовкой и работой шаблонов. Сортировать их проблематично, все идет вперемешку с шаблонами по умолчанию, что создает дополнительные сложности, но они не критичны.

Подробнее..

Как бросить курить по ВОЗ с помощью чатбота WhatsApp и электронного медицинского специалиста Флоренс

11.02.2021 16:05:53 | Автор: admin

Восьмого декабря 2020 года на официальном сайте ВОЗ был опубликован пресс-релиз о том, что Всемирная Организация Здравоохранения начинает годовую кампанию с целью помочь 100 миллионам человек отказаться от табака. Кампания Пандемия COVID-19 повод отказаться от табака проходит в рамках подготовки ко Всемирному дню без табака 2021 года международному памятному дню, который был провозглашен ВОЗ на 42 сессии ООН в 1988 году и отмечается 31 мая.

В пресс-релизе указано: ВОЗ совместно с партнерами будет создавать и развивать виртуальные сообщества, где люди, которые хотят бросить курить, найдут социальную поддержку. Особое внимание будет уделено странам с тяжелым бременем употребления табака, где проживает большинство потребителей табачной продукции. В список включены 22 страны, среди которых есть Россия, Украина, Польша, Германия, Китай и США. Всемирная Организация Здравоохранения подчеркивает, что высоко оценивает поддержку частных компаний в том числе, Google, Facebook, WhatsApp, Amazon Web Services и центр Allen Carrs Easyway.

Кстати, за 30 лет с момента публикации книгу Аллена Карра Легкий способ бросить курить, в которой описан единственный клинически доказанный метод отказа от курения без наркотиков (по утверждению сотрудников Allen Carrs Easyway), купили более 15 миллионов раз.

Почему кампания называется Пандемия COVID-19 повод отказаться от табака?

По утверждению Тедроса Адханома Гебрейесуса, Генерального директора ВОЗ, пандемия COVID-19 является эффективным стимулом для курильщиков, которым нужна дополнительная мотивация, чтобы перестать употреблять табак.

В 2020 году ВОЗ опубликовал научную справку, в которой указано: курильщики подвергаются повышенному риску развития тяжелой формы коронавируса и смерти от нее. Также употребление табака серьезный фактор риска диабета, сердечно-сосудистых, онкологических и респираторных заболеваний.

От последствий употребления табака каждый год умирает более 7 миллионов потребителей табачной продукции и более 1,2 миллиона некурящих, которые подвергаются воздействию вторичного табачного дыма.

С последствиями понятно. А правда ли, что курильщики реже заражаются SARS-CoV-2?

В Q&A ВОЗ от 27 мая 2020 года указано, что на момент публикации не было ни одного авторитетного или проверенного исследования, посвященного оценке риска заражения SARS-CoV-2 у курящих.

К непроверенным исследованиям, видимо, относятся публикация от 23.04.2020 под названием Французские исследователи предполагают, что никотин может защитить от коронавируса и мнения отдельных врачей. Также опровергнута гипотеза, что курение понижает содержание нгиотензинпревращающего фермента 2 (АПФ2) вируса SARS-CoV-2, снижая риск заболевания. Более поздние исследования показали, что курение повышает уровень АПФ2.

По мнению специалистов ВОЗ, курильщики могут быть более уязвимы к заражению, поскольку при курении происходит контакт пальцев и сигарет (которые могут быть заражены коронавирусом) с губами, что повышает риск проникновения вируса в организм.

Там же ВОЗ отмечает, что в настоящее время (то есть на конец мая 2020 года) нет достаточного объема информации, которая подтверждала бы наличие какой-то связи между употребление табака или никотина и результатами профилактики или лечения COVID-19. Поэтому ВОЗ настоятельно призывает исследователей, ученых и СМИ с осторожностью подходить к этой теме и воздержаться от распространения недоказанных сведений, что табак или никотин снижают риск заболевания коронавирусом.

Всемирная Организация Здравоохранения ведет постоянный анализ результатов новых научных исследований, которые посвящены изучению связи между употреблением табака или никотина и SARS-CoV-2.

А IQOS курить можно?

Компания Филип Моррис Интернэшнл заявляет, что система IQOS позволяет нагревать смесь табака до температуры не выше +350С, за счет чего выделяется табачный пар со вкусом нагретого табака, но отсутствуют горение, пепел и дым. Благодаря этому уровни содержания вредных веществ в выделяемом паре значительно ниже, чем в сигаретном дыме.

27 мая 2020 года в разделе Информационные бюллетени ВОЗ опубликовал статью Табак, где указано: изделия на основе нагревания табака (ИНТ), как и другие табачные изделия, по определению токсичны и содержат канцерогены. В процессе нагревания табака образуются аэрозоли, содержащие никотин, и токсичные химические соединения.

ВОЗ подчеркивает, что ИТП (iQOS, glo, PAX и Ploom) рекламируется как менее вредная альтернатива обычным сигаретам. Но пользователи этих устройств подвергаются воздействию токсичных химических веществ, многие из которых вызывают рак. А на данный момент (то есть конец мая прошлого года) нет доказательств, что ИТП менее вредные, по сравнению с обычными сигаретами. Также отсутствуют данные о влиянии пассивного курения ИНТ.

27 июля 2020 года на сайте ВОЗ появилось заявление, согласно которому более низкая концентрация опасных веществ в ИНТ не делает их безвредными и не означает более низкий уровень риска для здоровья.

Более того, в аэрозолях, которые образуются в процессе использования ИНТ, некоторые токсические вещества содержатся в более высоких концентрациях, чем в дыме обычных сигарет. А также в этих аэрозолях есть ряд токсинов, отсутствующих в сигаретном дыме. И связанные с этим последствия для здоровья пока неизвестны.

Что предлагает ВОЗ в рамках кампании-2021?

В пресс-релизе заявляется: был выпущен новый чатбот в WhatsApp Откажись от табака (QUIT TOBACCO TODAY!) и опубликован документ Более 100 причин для отказа от табака. Также желающие бросить курить могут получить помощь от электронного медицинского специалиста ВОЗ Флоренс. В пресс-релизе сказано, что электронный специалист уже круглосуточно помогает людям отказаться от табака, общаясь с ними на английском языке. В плане: адаптация программы для общения на русском, испанском, французском, арабском и китайском языках.

На момент написания статьи в начале февраля 2021 года, с Флоренс можно пообщаться на всех заявленных языках, кроме китайского и арабского.

Обзор чатбота WhatsApp Откажись от табака

При установке чатбота WhatsApp система предлагает выбрать из списка тему, которая вас интересует.

После выбора третьего раздела (HEALTH) программа предлагает определиться с интересующей темой.

В разделе 302 приведены аргументы, почему сегодня отличный день, чтобы бросить курить:

  • Курильщики подвержены более высокому риску развития тяжелых заболеваний и смерти от COVID-19.

  • Употребление табака может увеличить ваши шансы заразиться COVID-19 из-за контакта между пальцами и губами.

  • Курение влияет на легкие, повышая риск развития тяжелых исходов COVID-19.

  • Табачные изделия содержат не менее 250 вредных химических веществ, в том числе 69 веществ, вызывающих рак.

  • Табак убивает до половины потребителей.

  • Он вызывает такие заболевания, как рак, болезни сердца и инсульт.

  • Употребление табака очень дорого обходится вам и вашей семье.

  • Пассивное курение вредит окружающим и может вызвать синдром внезапной детской смерти, респираторные заболевания, болезни сердца и рак.

Если же вы бросите курить, то:

  • Ваше кровяное давление и частота пульса снизятся в течение 20 минут.

  • Через 1 месяц ваше дыхание улучшится. Вы будете меньше кашлять, и у вас не будет такой одышки.

  • Через год риск сердечных заболеваний у вас будет вдвое меньше, чем у курильщика.

  • Через 5 лет риск инсульта у вас будет такой же, как и у некурящих.

  • Снизится риск возникновения многих видов рака.

  • Перестав курить в 30 лет, вы увеличите продолжительность своей жизни почти на 10 лет.

Советы для тех, кто бросает употреблять табак и борется с желанием закурить:

  • Старайтесь противостоять желанию закурить как можно дольше.

  • Глубоко вдохните 10 раз, чтобы расслабиться и перетерпеть тягу к сигарете.

  • Пейте воду.

  • Отвлекитесь: примите душ, почитайте, прогуляйтесь, послушайте музыку.

В заключение дана активная ссылка на Руководство для потребителей табака по отказу от курения в формате PDF.

Беседа с Флоренс

Описание цифрового помощника: Путем короткой беседы по видео или в форме текстовых сообщений Флоренс поможет вам найти в себе силы бросить курить, а также порекомендует специализированные горячие линии или мобильные приложения. Сейчас особенно важно бросить курить, так как курильщики подвержены повышенному риску заболевания COVID-19 в тяжелой форме.

Для справки: Флоренс была создана с помощью технологии, разработанной базирующейся в Сан-Франциско и Новой Зеландии компании Soul Machines, создавшей платформу Digital People (цифровые люди), при поддержке подразделений Amazon Web Services и Google Cloud.

Перед тем, как вступить с вами в диалог, программа предупреждает, что хотела бы видеть и слышать вас. Это нужно, чтобы цифровой помощник мог взаимодействовать с вами как человек, его цифровой мозг должен собирать и обрабатывать информацию об особенностях вашей речи. Вся собранная информация анонимна.

Также разработчики сообщают: Мы хотим, чтобы общение с цифровым помощником было максимально приятным, естественным и увлекательным. Вы можете помочь нам в этом, позволив цифровому помощнику изучать особенности вашей речи и интерпретировать ваш эмоциональный отклик, что позволит составить наиболее точный ответ. Это похоже на разговор с реальным человеком, когда он осмысливает не только то, что вы говорите, но и то, как вы это говорите. В ходе такого общения вы помогаете развивать технологии и знакомитесь с будущим взаимодействия человека с машиной.

Если вы согласны, надо принять условия конфиденциальности ВОЗ и SOUL MACHINES, и разрешить доступ к камере, микрофону и данным об использовании.

После этого начинается диалог с Флоренс. Она предупреждает, что если не разберет ваш голос, можно вести беседу в текстовом формате. И предлагает выбрать тему разговора.

Сообщения от Флоренс дублируются в голосовом и текстовом форматах.

Персональный план отказа от курения, который предлагает Флоренс, достаточно прост:

  • Я уберу сигареты из дома, их не будет в моем офисе и других местах, где я часто бываю.

  • Я расскажу людям о своем намерении бросить курить.

  • Я понимаю, что будет нелегко. У меня могут возникнуть симптомы никотиновой абстиненции, напряжение или тревожность, а также желание курить. Я буду помнить, что отказ от курения дает мне долгосрочные преимущества для здоровья.

  • Я буду помнить, что если я покурю послезавтра это не провал. Это была успешная попытка. И я могу попытаться еще раз.

Иногда Флоренс зацикливается.

А иногда Флоренс шутит.

Также Флоренс разоблачает мифы о COVID-19. Например:

  • Употребление алкоголя не защищает от COVID-19 и может быть опасным.

  • Употребление метанола, этанола или отбеливателя не помогает вылечить COVID-19 и может быть чрезвычайно опасным.

  • Хотя чеснок это здоровая пища, которая может обладать антимикробными свойствами, нет никаких доказательств, что употребление чеснока защищает людей от нового коронавируса.

  • Добавление перца в суп или другие блюда не предотвращает и не помогает вылечить COVID-19.

  • Принятие горячей ванны не предотвратит новое коронавирусное заболевание.

  • Новый коронавирус не может передаваться через укусы комаров.

  • Новый коронавирус не передается через комнатных мух.

  • Не следует использовать ультрафиолетовые лампы для дезинфекции рук или других участков кожи, так как это может привести к повреждению кожи и глаз.

  • Антибиотики не действуют на новый коронавирус.

  • Сушилки для рук неэффективны в борьбе с новым коронавирусом.

  • Мобильные сети 5G не распространяют COVID-19.

  • Способность задерживать дыхание на 10 секунд и более без кашля и дискомфорта не означает, что у вас нет коронавирусного или любого другого заболевания легких.

  • Длительное ношение медицинских масок в случае их правильного использования НЕ ПРИВОДИТ к интоксикации углекислым газом или кислородной недостаточности.

А что с горячими линиями для поддержки тех, кто бросает курить?

Флоренс предлагает сообщить номер телефона бесплатной горячей линии для желающих бросить курить из разных стран. В России такой линии нет (или цифровой помощник о ней не знает).

В Украине, Беларуси и Германии есть.

Телефонный номер в Украине не действителен. Но он указан на сайте сервиса по оказанию помощи в прекращении курения, где отмечено, что горячая линия временно не работает.

В Беларуси номер действителен, но на звонок не ответили. А гугл подсказал, что номер привязан к сайту ГУ Республиканский научно-практический центр психического здоровья. Там номер указан на баннере с рекламой лечения никотиновой зависимости в амбулаторных условиях. За сеанс берут 41 бел.руб.

В Германии номер действителен и указан на сайте федерального центра просвещения по вопросам здоровья.

Личное мнение

Было бы здорово, если бы чатбот WhatsApp или персональный цифровой помощник Флоренс поддерживали бросающих курить хотя бы в течение года с помощью фактов о пользе отказе от табака для организма с учетом конкретных периодов воздержания.

Например, на 33 день после отказа от курения очень хочется закурить. Вы пишете в чатбот или Флоренс что-то вроде: Я не курю уже 33 дня, но сейчас могу сорваться. А в ответ получаете: На 33 день после отказа от употребления табака состояние ваших легких улучшилось на 10%, а риск умереть от инфаркта снизился на 3%, по сравнению с теми, кто все еще курит.

И таких фактов 365, на каждый день в году.

Вместо послесловия самые интересные причины из списка ВОЗ Более ста причин бросить курить

Как употребление табака влияет на экономику и экологию?

27. Употребление табака создает дополнительную нагрузку на мировую экономику в размере около 1,4 триллиона долларов США в виде расходов на медицинское обслуживание для лечения болезней, вызванных табаком, и потерь трудовых ресурсов в результате болезней и смерти, связанных с употреблением табака.

91. Окурки сигарет относятся к числу наиболее часто выбрасываемых отходов во всем мире и являются наиболее частым мусором, собираемым на пляжах и у кромки воды во всем мире.

92. В окурках сигарет были обнаружены опасные вещества, в том числе мышьяк, свинец, никотин и формальдегид. Эти вещества из выброшенных окурков попадают в водную среду и почву.

94. Курящий человек становится причиной выброса в атмосферу планеты более 24 тысяч тонн метана или 5 миллионов тонн углекислого газа в год

98. Объем выбросов при производстве табака эквивалентен 3 миллионам трансатлантических перелетов.

99. Табачный дым содержит три вида парниковых газов углекислый газ, метан и оксиды азота и загрязняет окружающую среду внутри помещений и за их пределами.

100. Во всем мире около 200 000 гектаров земель ежегодно используются для выращивания и обработки табака.

103. На каждые 300 произведенных сигарет (примерно 1,5 блока) требуется одно дерево, чтобы только высушить листья табака.

А на здоровье?

46. Употребление табака является причиной 25 % всех случаев смерти от рака во всем мире.

48. У каждого пятого курильщика табака в течение жизни разовьется хроническая обструктивная болезнь легких (ХОБЛ), особенно у тех, кто начинает курить в детстве и подростковом возрасте, поскольку табачный дым значительно замедляет рост и развитие легких.

65. Те, кто курит табак всю жизнь, в среднем теряют не менее 10 лет жизни

P.S. После начала работы над этой статьей я не курю уже 7 дней.

Подробнее..

Перевод Как избежать блокировки в WhatsApp для того чтобы

14.08.2020 04:10:43 | Автор: admin


чтобы отправлять сообщения каждые 30 секунд (120 сообщений в час).
Надеюсь что мистер Цукенберг не заходит на этот ресурс :)

WhatsApp самый популярный в мире мессенджер (свыше 1.3 миллиарда пользователей), но почему нельзя общаться с большим количеством пользователей в этом приложении?

Да, это проблема.
WhatsApp похож на чрезмерно опекающую своих детей мамашу, которая не хочет расстраивать своих пользователей спамом и рассылками и поэтому банит направо и налево все подряд, что хоть как-то отдаленно напоминает спам.
И если у вас много пользователей и вы ведете бизнес в WhatsApp, то это может быть большой проблемой.


С точки зрения WhatsApp, боты это нормально, но вы должны только отвечать на сообщения, но никогда не начинать общение первым.

Но у вас нет выбора, вы должны все-таки начинать общение первым и если вам знакома эта проблема, то надеюсь что эта статья будет для вас полезна.

Самый простой путь вышлите обычное СМС вашим пользователям со ссылкой, чтобы они начать общаться с вами или с вашим ботом.
После этого вы должны вести беседу как реальный человек и тогда будет все нормально.
Но если это невозможно, то вам остается один путь играть с WhatsApp по его правилам.

Не спамьте и следуйте следующим правилам, которые я вывел после огромного количества забаненных аккаунтов.

Что можно и чего нельзя делать:

1. Высылайте интересный контент, опросы показывают что пользователи нормально к этому относятся по сравнению с рекламой, даже если они получают сообщения в субботу вечером.

2. Добавляйте каждый контакт, которому вы шлете сообщения, в свой контакт лист.

3. Высылайте каждый раз как бы разные сообщения, можно сделать скрипт, который бы рандомно ставил пробелы в сообщения и вставлял бы имя получателя.

4. После отправки первого сообщения используйте рандомный таймаут (от 30 до 60 секунд) перед отправкой следующего сообщения.

5. WhatsApp ожидает что вы пользуетесь его вебверсией на десктопе в той же самой сети, что и ваш телефон.
Поэтому если вы запустили WhatsApp на реальном телефоне, а вебверсию где-то на хостинге, то вы будете заблочены.

6. Если вы не знаете как хакнуть валидацию регистрации (в сети много туториалов по этому вопросу), то лучше использовать реальный телефон, а не эмулятор.
7. Прокси маст хев, удостоверьтесь что реальный телефон и бот имеют одинаковые IP адреса и эти адреса привязаны к той же стране, номера которой у вас в контакт листе.

8. Старайтесь группировать контакты по коду страны или региона, WhatsApp ожидает что реальный пользователь в основном общается в пределах одной страны или региона, совпадающего с регионом регистрации вашего номера и регионом большинства контактов.

9. Используйте какую-нибудь картинку в профиле, это не относится к Whatsapp Bots Catcher, просто люди могут пометить контакт без фото как спам.

10. Не надо продолжать слать сообщения тем пользователям, которые уже вас заблокировали, я предлагаю делать проверку на блокировку перед отправкой сообщения контакту.

11. Хотя вы можете пытаться отправить сообщения тем у кого нет WhatsApp, крайне не рекомендую это делать.
Всегда проверяйте имеет ли контакт WhatsApp аккаунт или нет.

12. У WhatsApp существуют специальные номера для тестов и если вы вышлете сообщение на 00@c.us официальный маркетинговый аккаунт вацапа, то это тоже самое что пытаться продать кокаин полиции.

13. Не позволяйте своему скрипту делать запросы туда, куда не делает их обычный клиент Whatsapp Web все логи таких ошибок сохраняются.

14. Всегда шлите уведомление прочитано после принятия сообщения или выключите это уведомление в настройках.

15. Не отвечайте мгновенно на сообщение нормальный таймаут ответа 5-10 секунд.

16. Хорошая практика ответа на сообщение открыть чат, выслать нотификацию прочитано, затем выслать статус typing, потом подождать несколько секунд и отправить сообщение.

17. Очищайте кэш в браузере всякий раз, когда вы открываете Whatsapp Web, да это головная боль каждый раз вводить новый QR код, но без этого ваш бот нормально не перезагрузится.

18. Избегайте высылать ссылки, которые уже были помечены кем-то как спам и избегате слать ссылки без https. Хорошая идея использовать сокращатель ссылок.

19. Важно: Плохая идея слать сообщения 24/7 без перерыва.
Рандомной задержки недостаточно, шлите разумное количество сообщений например шлите максимум 4 сообщения в час каждому контакту кто ответил вам, затем перерыв на час и затем опять.

20. В начале разговора шлите только одно короткое сообщение, не нужно слать длинный текст или несколько сообщений без реакции пользователя на них.

21. Если вам нужно ответить несколькими сообщениями, вышлите сначала одно, потом подождите несколько секунд и затем вышлите второе.
Но даже если вы ответили несколькими сообщениями с паузами, вы все равно можете оказаться заблокированными, поэтому пытайтесь отвечать одним сообщением.

22. Не шлите разным людям разные сообщения одновременно, шлите такие сообщения по очереди.

23. Избегайте использования префиксов в сообщениях.

24. Не используйте yowsup-cli

25. Ставьте пометку online при отправке сообщения.

Имейте ввиду:

1. Каждый человек, кому вы отправляете сообщение и у которого вы не находитесь в контактах, будет спрошен на предмет спама.
Если вас выделят как спам 5-10 раз, вы будете заблокированы.

2. Помните WhatsApp записывает каждое движение, которое вы делаете, чтобы проверить это вышлите письмо в их суппорт они могут выслать логи.
Поэтому ведите себя как человек.

3. Не замечено никаких банов когда вы проверяете есть тот или иной контакт в вацапе или когда вы скачиваете фото профайлов и т.д.
Это можно делать без таймаутов.

4. Использовать приложения которые дублируют вацап тоже плохая идея вацап это видит и блокирует.

5. Старайтесь вовлекать в чат с собеседника и если сразу вас не пометили как спам, то все ок и можно продолжать. Чем чаще отвечают вам люди тем меньше шансов у вас попасть под бан.

6. Думайте об этом как о балльной системе если вас внесли в список контактов, то вы получили 1 балл, если пометили как спам вы потеряли 1 балл и т.д.

7. Не позволяйте вашему боту быть запущенным долго время от времени выключите WhatsApp Web, откройте вацап на телефоне, потом снова запустите вебверсию и т.д.

8. Виртуальные номера в некоторых странах знакомы вацапу, поэтому вы не сможете там зарегестрироваться, вы получите сообщение Not a valid number for country XX

9. Если вацап по каким то причинам стал недоступен на телефоне, а Whatsapp Web этого не заметил, то вы еще можете отправлять какие-то команды, но будете забанены, т.о. избегайте пользоваться Whatsapp Web если ваш телефон не в сети.

10. Если у вас несколько вацап аккаунтов под одним IP адресом и вы заметили что один из них заблокирован, немедленно закройте другие аккаунты, иначе они тоже будут заблокированы.

11. Если ваш контент чистый спам, то неважно как вы отправляете сообщения вы будете

заблокированы.

Если вас все-таки заблокировали, но вы не хотите сдаваться:

1. Удалите вацап и все что с ним связано.

2. Сделайте сброс к заводским настройкам, если это возможно.

3. Подключитесь с новым IP адресом

4. Скачайте вацап

5. Первые сообщения сделайте с тем номером, который давно имеет вацап например с вашим собственным телефоном.

6. Некоторые люди говорят что нужно ждать 12-36 часов после первого сообщения, другие говорят что если вы не шлете сообщения в течении дня, то после первого сообщения вы будете забанены я делаю так регистрируюсь, шлю первое сообщение, потому жду несколько часов и затем уже шлю сообщения как обычно.

Что будет если вы напишете в суппорт WhatsApp с вопросом о причинах блокировки?

Есть небольшой шанс быть разбаненным, у меня было несколько случаев разблокировки через 1 день и несколько случаев блокировок с прошедшими месяцами после письма и до сих пор неразблокированными.

Отвечают быстро, но всегда одно и тоже:

## WhatsApp Support ##
Hello,
Thanks for getting in touch with us!
Your WhatsApp account has been disabled because you have violated our Terms of Service when using an unauthorized app or an unsupported device.
Please remove the application and install an authorized version on a compatible device at: www.whatsapp.com/download
Please keep in mind that we do not allow support for unofficial or jailbroken / rooted clients (including emulators) and unsupported devices.
To use WhatsApp on your computer, visit our website from your computer's browser. Then open WhatsApp and scan the QR code using the WhatsApp application on your phone (look for WhatsApp Web in the WhatsApp settings on your device). WhatsApp can only be installed on your computer if you are using Windows operating systems 8.0 and higher or Mac OSX.9 and above. If you are experiencing problems installing WhatsApp on a supported operating system, disable your anti-virus and try again.
You have the option to access WhatsApp through your browser here if you are using non-compatible operating systems.
Your account will be permanently disabled, and without the possibility of appeal if you continue to violate our Terms of Service.Cheers,
Roshan
WhatsApp Support Team
Take a look at our FAQ.

Финальные соображения и заключения.

После нескольких месяцев тестирования различных способов отправки сообщений могу сказать одно нужно следовать Whatsapps policy, не слать спам, не начинать первым разговор и через обычную СМС слеть им линк для чата, чтобы они ответили первыми.

Note: Я не использую API для рассылки спама или маркетинговых предложний и не люблю тех кто это делает.
Я всегда пишу только тем, кто подтвердил желание общаться со мной, но на самом деле WhatsAppу плевать на это.

Все описанное выше может перестать работать завтра и никто не знает когда вацап начнет жестко банить всех кто не платит им за их официальное API.
Но если вы не следовали всем советам и у вас все работает, это означает что вы шлете мало сообщений и вацап не замечает этого.
Подробнее..

Как мы взломали WhatsApp

11.11.2020 14:20:14 | Автор: admin
Вопрос не в том, как взломать WhatsApp, а в том, как взломать WhatsApp таким образом, чтобы обезопасить номер от бана, исключить бан номера полностью. В принципе, чтобы организовать автоматизацию, воцап не обязательно взламывать. Можно усадить 1000 добровольцев, и они будут вручную отправлять сообщения через официальное приложение WhatsApp. Если добровольцы будут очень усердными, то при достижении определенного порога отправки номер будет заблокирован. Вопрос в том, как взломать WhatsApp таким образом, чтобы номер не был заблокирован при любых объемах отправки. Вот в чём фокус.

Аренда WhatsApp API у неофициального провайдера


Далекий 2017 год. Мы делаем сервис онлайн-записи SLONBOOK для салонов красоты. Историю создания сервиса я подробно описал в этой статье. Фишкой нашего сервиса, которая выгодно отличала нас от конкурентов, была тесная интеграция с WhatsApp. Это позволяло с одной стороны существенно экономить на SMS, а с другой было генератором повторных продаж для салона. Эти два момента делали SLONBOOK привлекательным по сравнению с конкурентами. Начали экспериментировать с WhatsApp.

Вначале у нас не было своей реализации и поэтому мы арендовали шлюз WhatsApp API у стороннего сервиса. У нас пошли первые продажи, и первые проблемы. Оказалось, что при использовании неофициального канала есть риск словить бан и потерять номер. Для салона красоты потерять номер WhatsApp, это все равно что для Интернет-магазина потерять сайт (домен). Клиенты салона общаются с администратором в основном по WhatsApp, при этом мало кто звонит или приходит без предварительной записи. Вначале всегда будет чат с администратором по WhatsApp. И вот этот номер банят. Естественным образом салон выставлял претензию на наш сервис: "- мол, подключились к вашему сервису и потеряли номер." Пошел негатив. Начали разбираться в проблеме. Пытались достучаться до нашего неофициального провайдера. Безуспешно.

Официального WhatsApp Business API в 2017 году еще не существовало, но нам нужна была интеграция. Это было нашим ключевым преимуществом и было новшеством для рынка, особенно в нашей нише.

Реализация собственного WhatsApp API через веб-обертку


Начали искать решение на своем уровне. Была поставлена задача не допустить бана номера клиента. Второстепенные задачи снизить себестоимость WhatsApp API и повысить стабильность работы.

На Github нашли исходники либы, которая реализовывала WhatsApp API через парсинг веб-версии клиента воцап. Затратили порядка 4 месяцев и выпустили на базе этого решения свою реализацию с минимальным набором функций для нашей CRM.

Начали подключать клиентов, и снова начались баны несмотря на то, что мы предпринимали целый ряд мер. Для каждого номера был отдельный IP-адрес, сообщения отправляли с рамдомными задержками, не более двух сообщений в минуту, персональное обращение по имени. Всё тщетно. Баны продолжались. Шел негатив. Продажи встали. Надо было найти кардинальное решение.

Взлом WhatsApp на уровне сокет-соединения


Решение было найдено. Один из нас как-то предложил взломать протокол и работать с сервером WhatsApp напрямую через socket, как это делает нативный веб-клиент. Задача на первый взгляд нам показалась фантастической и невыполнимой. Но нет ничего невозможного! Была поставлена задача взломать зашифрованный протокол WhatsApp. Цель отловить сигналы о скорой блокировке номера. Задачу эту мы успешно решили. Однако потребовалось нам на это 2+ года.

Следует отметить, что прежде чем изобретать свой велосипед мы порылись на Github. Нашли там либу, которая реализовывала взаимодействие с сервером воцап именно по сокету. Однако наш номер словил бан раньше, чем мы успели отправить первое сообщение.

По этой причине мы решили делать свой велосипед. Когда работаешь с воцап на уровне протокола, то надо быть очень аккуратным. Если упустить какую-либо мелочь, то можно быстро спалиться. Пришлось долго и кропотливо изучать трафик, анализировать, сегментировать. Далее пришлось также долго имитировать работу клиента таким образом, чтобы сервер воцап думал, что он работает со своим нативным веб-клиентом.

Протокол WhatsApp версионируется. Каждая версия имеет отличия от предыдущей. При выходе новой версии мы запускам автоматические проверки, которые выдают нам изменения протокола, и мы оперативно их отражаем в своей имплементации.

Надо сказать, что протокол WhatsApp надежно защищен от подобно рода взломов. После взлома протокола на уровне шифровальщика требуется дополнительно полностью повторить работу нативного веб-клиента. WhatsApp защитил свой протокол на двух уровнях: на уровне шифра, и на уровне контента. На втором уровне защиты, на уровне контента, очень много особенностей. Важно полностью повторить контент, который выдает нативный клиент. И тут разработчики воцап заложили немало пасхалочек. Например, нативный веб-клиент рамдомно в течение суток вычисляет хеш-сумму всех отправленных сообщений и отправляет хеш на сервер. На сервере, по-видимому, выполняется сверка. Если хеш не отправить, или если ошибиться со значением хеша, то бан гарантирован. И таких ловушек в протоколе накидано на каждом шагу. Вот поэтому нам и потребовалось 2+ года, чтобы добиться устойчивой работы на уровне протокола сначала взломать уровень шифровальщика, далее полностью повторить уровень контента до мельчайших деталей.

Здесь следует отметить, что существует два канала работы с воцап на уровне протокола: канал веб-клиента и канал мобильного приложения воцап.

Канал веб-клиента используется для связи веб-клиента с мобильным приложением через сервер WhatsApp. Канал мобильного приложения работает с сервером WhatsApp напрямую. В этой статье я подразумеваю взлом именно канала веб-клиента, в то время как взлом канала мобильного клиента на порядок более сложная задача. По этой причине наша имплементация WhatsApp API требует наличия телефонной трубки, на которой установлено мобильное приложение воцап. Без физического телефона наш API работать не будет.

Жёлтая карточка


При работе с сервером воцап на уровне протокола у нас появилась возможность отлавливать сигналы приближающегося бана номера. Мы умеем отлавливать предупреждения о скором бане и тем самым уберегаем номер клиента. Если раньше WhatsApp мог забанить номер одномоментно, внезапно и без предупреждения, то сейчас мы считываем из трафика управляющие сигналы и заранее приостанавливаем активность номера, чтобы сохранить его. Спустя 12 часов мы снова активируем номер. Раньше WhatsApp выдавал нам сразу Красную карточку без предупреждения. Сейчас мы научились получать из протокола Жёлтую карточку. Можно, конечно, игнорировать первую, вторую и третью Жёлтые карточки, однако на кону номер и бизнес клиента.

Благодаря такому подходу нам удалось добиться того, что номера наших клиентов перестали попадать в бан вовсе. Время показало, что на протяжении более 12 мес наши клиенты не потеряли ни одного номера. Разумеется, речь идет не о спамерах, а о нормальной работе пользователя в режиме онлайн-записи в салон красоты. Если очень хочется потерять номер, то достаточно отправить 1000+ сообщений и игнорировать предупреждения нашего шлюза.

На защиту номера от бана влияет множество факторов. Возраст номера, соотношение количества отправленных и полученных сообщений в сутки, количество отправленных жалоб на ваш номер, контент сообщений. Чем дольше номер зарегистрирован в воцап, чем активнее клиенты общаются с вами, тем лучше защищен номер от блокировки и тем большее количество сообщений в сутки номер может отправить. На официальном сайте Facebook опубликована таблица, которая наглядно показывает, как возрастает пропускная способность канала в зависимости от показателя качества номера. Примерно такие же правила мы реализовали на уровне нашего API.

Бонусы


Работа на уровне протокола имеет свои преимущества по сравнению с работой на уровне веб-обертки. Нам удалось решить вопросы безопасности, скорости, стабильности и функциональности.

Безопасность на первом месте. Важно защитить номер от бана. Об этом выше.
Скорость. Например, для чат-ботов актуальным является вопрос скорости ответа клиенту. При общении человека с ботом важно не терять фокус внимания. Если бот будет отвечать с задержкой более 5 секунд, то фокус внимания переключиться, работа с ботом прекратится. Если чат-бот ведет одновременно 10 диалогов, то скорость обработки сообщений должна быть порядка 10 сообщений в секунду.

Стабильность. Протокол WhatsApp версионируется. Это означает, что мы заранее узнаем о новых версиях протокола и своевременно адаптируем наше API под новую версию протокола.

Функциональность. На уровне протокола имеется возможность поддержать любую функцию, которая есть в WhatsApp. Поэтому потенциальные возможности API безграничны.

Рождение Сверхзелёной


Итак, решение своих задач внутри нашей CRM позволило нам создать очень качественное WhatsApp API. Во главу угла была поставлена задача защиты номера от бана. И эту задачу мы решили. Заодно решили целый ряд вспомогательных технических задач. Держать такую птичку взаперти было бы преступлением, и в начале 2020 года мы опубликовали наш проект GREEN-API.

Что дальше?


Особенностью всех существующих реализаций взлома WhatsApp является обязательное наличие телефонного аппарата. Воцап устроен таким образом, что вся переписка хранится в телефоне и всё взаимодействие выполняется через телефонный аппарат. Поэтому любая имплементация неофициального WhatsApp API требует обязательного наличия телефонного аппарата. Это в свою очередь имеет свои неудобства приходится приобретать телефон и дополнительно следить, чтобы он был всегда заряжен, подключен к Интернет. Если телефон, например, уснет, то отправка и получение сообщений прекратится. Нужен сотрудник, который будет следить за работоспособностью трубки. Это очень неудобно.

По этой причине мы параллельно разработали WhatsApp API, который работает без трубки. Мы пошли по пути использования эмулятора Android и добились того, что воцап думает, что работает с обычным телефоном. По сути это иная имплементация задачи взлома воцап на уровне реверс-инжиниринга Android-приложения. Но об этом уже в следующий раз.
Подробнее..

Из песочницы Как я подключил официальный бизнес API WhatsApp через Twilio

01.11.2020 06:21:35 | Автор: admin
Как известно, WhatsApp не так давно начал предоставлять доступ к своему официальному бизнес API, который так необходим для создания чат-ботов для этого мессенджера белыми методами.

Но сделать это напрямую большинству компаний по прежнему не под силу, а только через крупных партнеров Facebook, которые в данном случае выступают в роли посредников.

Одним из таких доступных партнеров является американская компания Twilio. Самое основное их преимущество на мой взгляд, это невысокая стоимость использования WhatsApp Business API.

Я подключил через Twilio официальный бизнес API WhatsApp и сейчас подробно расскажу, как это сделать.

WhatsApp Messenger

Основным условием Facebook является наличие зарегистрированного юридического лица, например ООО или ИП, на физическое лицо доступ получить не получится.

Итак, начнем двигаться по шагам.

1. Создание аккаунта в Facebook Business Manager


Войдем в свой личный аккаунт в Facebook и создадим аккаунт Business Manager, для чего перейдем по ссылке business.facebook.com/overview и нажмем кнопку СОЗДАТЬ АККАУНТ, откроется окно для ввода данных компании.

Создание аккаунта Business Manager в Facebook

Согласно подсказкам над полями, вводим название компании, имя и фамилию, e-mail и нажимаем кнопку Отправить.

В следующем окне введем информацию о компании и нажмем кнопку Отправить.

Добавление информации о компании при создании аккаунта в Facebook Business Manager

После отправки появится сообщение, что аккаунт создан и необходимо подтвердить адрес электронной почты.

Необходимость подтверждения адреса электронной почты при создании аккаунта в Facebook Business Manager

Зайдем в почту и нажмем на кнопку Подтвердить из письма.

Подтверждение адреса электронной почты при создании аккаунта в Facebook Business Manager

2. Регистрация аккаунта в Twilio


Зарегистрируем аккаунт в Twilio по ссылке twilio.com/try-twilio. Сделать это совсем не сложно, регистрация бесплатная и не требует данных банковской карты, нужно только ввести имя, фамилию, e-mail и придумать пароль.

Регистрация аккаунта в Twilio

Подтверждаем e-mail.

Подтверждение e-mail при создании аккаунта в Twilio.

Подтверждаем номер телефона.

Подтверждение телефона при создании аккаунта в Twilio

3. Запрос в Twilio на активацию возможности добавления WhatsApp отправителей


Подготовим и отправим запрос в Twilio на активацию возможности добавления WhatsApp отправителей, для чего перейдем в раздел WhatsApp Senders по ссылке www.twilio.com/console/sms/whatsapp/senders и нажмем кнопку Sign Up to Receive Updates.

Открытие формы запроса на активацию возможности добавления WhatsApp отправителей в Twilio

Откроется форма запроса на активацию возможности добавления WhatsApp отправителей в Twilio. Заполняем поля формы данными, которые указывались выше, при создании аккаунта в Facebook Business Manager:

First Name Имя (латиницей);

Last Name Фамилия (латиницей);

Phone Number Номер телефона компании (указанный в Facebook Business Manager);

Email Address Адрес электронной почты компании (указанный в Facebook Business Manager);

Company Name Название компании (латиницей, указанное в Facebook Business Manager);

Company Website Веб-сайт компании (указанный в Facebook Business Manager);

Company HQ Country Страна регистрации компании (указанная в Facebook Business Manager);

Twilio Account SID Идентификатор аккаунта Twilio скопировать из поля ACCOUNT SID на странице www.twilio.com/console;

Twilio Account SID

Facebook Business Manager ID Идентификатор созданного аккаунта в Facebook Business Manager скопировать из поля Идентификатор Бизнес-менеджера: на странице business.facebook.com/settings/info (Facebook Business Manager -> Настройки компании -> Информация о компании);

Facebook Business Manager ID

I've completed Facebook Business Verification ставим No, если в Facebook Business Manager -> Настройки компании -> Информация о компании -> Статус подтверждения компании -> указано Не подтверждена или Yes, если Подтверждена;

Company Vertical выбираем из списка направление деятельности компании;

What is your use case? выбираем из списка, для чего будет использоваться WhatsApp: Notifications (Оповещения), Customer Support (Поддержка клиентов), 2FA or User Verification (Двухфакторная аутентификация или верификация пользователей);

Which regions are you sending messages to? В какие регионы будут отправляться сообщения (выбираем из списка Global);

How many messages are you sending per month during the first year? Сколько сообщений будет отправляться в месяц в течение первого года (выбираем из списка нужный диапазон);

I wish to provision this account with a third party vendor Будет ли предоставляться эта учетная запись стороннему поставщику (выбираем No);

Assign approval to alternate Account SID (Optional) Назначить утверждение альтернативному SID учетной записи (необязательно) (ничего не вводим, оставляем поле пустым);

I understand Twilio can modify my SMS/Voice URL and that approval is only for the brand submitted. Я понимаю, что Twilio может изменять мой URL-адрес SMS / голосового сообщения, и это одобрение предназначено только для отправленного бренда (соглашаемся и выбираем Yes).

Заполняем поля формы запроса на активацию возможности добавления WhatsApp отправителей в Twilio

Для отправки запроса, нажимаем кнопку Request Now. После успешной отправки появится соответствующее уведомление: Спасибо за Ваш интерес. Мы будем держать Вас в курсе по мере открытия доступа..

Уведомление об успешной отправке запроса на активацию возможности добавления WhatsApp отправителей в Twilio

На почту получаем вот такое письмо:

Письмо от Twilio после отправки запроса на активацию возможности добавления WhatsApp отправителей в Twilio

Переводим сообщение на русский:

Перевод на русский письма от Twilio после отправки запроса на активацию возможности добавления WhatsApp отправителей в Twilio.

Теперь ждем 3-4 недели ответ от Twilio, как указано в письме.

Через 4 недели получаем ответ от Twilio, что теперь можно добавить WhatsApp отправителя и продолжить процесс регистрации:

Ответ от Twilio на запрос по активации возможности добавления WhatsApp отправителей в Twilio

Переводим сообщение на русский:

Перевод на русский ответа от Twilio на запрос по активации возможности добавления WhatsApp отправителей в Twilio

4. Upgrade аккаунта в Twilio


Для продолжения, обязательно нужно перевести проект Twilio из пробного (Trial) в рабочий (Upgrade), для чего потребуется пополнить баланс. На пробном аккаунте Twilio не получится зарегистрировать WhatsApp отправителя. Минимальная сумма пополнения 20$ (двадцать долларов). Потом эти деньги можно будет тратить на аренду телефонных номеров для WhatsApp отправителей и оплату входящих и исходящих сообщений в WhatsApp. Аренда телефонного номера стоит от 1$ (один доллар) в месяц. Входящие и исходящие сообщения в WhatsApp 0.005$ (пол цента) за 1 сообщение.

Для апгрейда аккаунта перейдем по ссылке www.twilio.com/console/billing/upgrade.

Заполним латиницей поля в разделе Add Company Address.

Пополнение баланса Twilio: Добавление адреса компании

Нажмем кнопку Validate Address для подтверждения адреса. В открывшемся окне нажмем кнопку Use This Address.

Пополнение баланса Twilio: Валидация адреса компании

Аналогично, заполним поля в разделе Add Billing Address такими же данными.

Пополнение баланса Twilio: Добавление адреса компании для выставления счетов

И так же подтвердим адрес.

Пополнение баланса Twilio: Валидация адреса компании для выставления счетов

В разделе Add Payment Information and Funds введем данные банковской карты и нажмем кнопку Upgrade Account для проведения оплаты.

Пополнение баланса Twilio: добавление данных о способе оплаты и проведение платежа

После успешной оплаты увидим соответствующее уведомление.

Сообщение об успешной оплате в Twilio

5. Покупка телефонного номера в Twilio для создания WhatsApp отправителя


Российских номеров в Twilio к сожалению нет, но на практике это оказалось не так и важно. Зачастую пользователи даже и не смотрят на номер, когда пишут в WhatsApp.

Для покупки телефонного номера Twilio перейдем по ссылке www.twilio.com/console/phone-numbers/search, выберем страну в поле COUNTRY, по желанию можно выставить и другие дополнительные параметры поиска, и нажмем кнопку Search.

Подбор телефонного номера в Twilio для аренды

Подбор телефонного номера в Twilio для аренды

Выберем нужный телефонный номер и нажмем кнопку Buy.

В следующем окне подтвердим покупку.

Подтверждение покупки телефонного номера Twilio

6. Регистрация WhatsApp отправителя в Twilio


Для регистрации WhatsApp отправителя в Twilio перейдем в раздел WhatsApp Senders по ссылке www.twilio.com/console/sms/whatsapp/senders и нажмем иконку плюс.

Добавление отправителя WhatsApp в Twilio

Пока создадим WhatsApp отправителя только для ответов на сообщения пользователей, то есть сами первыми писать не будем. Создание шаблонов для возможности написать пользователю первым будем рассматривать в следующих публикациях.

Заполним открывшуюся форму:

Select a Number (Required) Выберем номер телефона, который мы купили в Twilio выше.

Business Display Name (Required) Отображаемое имя, которое должно соотносится с вашей компанией в соответствии с требованиями Facebook. Можно указать просто название компании, которое мы вводили при регистрации аккаунта в Facebook Business Manager.

Company Address (Optional) Адрес компании (можно не указывать).

Company Email (Optional) Электронный адрес компании (можно не указывать).

Website (Optional) Веб-сайт компании (можно не указывать).

Link to Logo (Optional) Ссылка на логотип компании (можно не указывать). Минимальный размер изображения 640x640 px в форматах PNG или JPG (JPG рекомендуется), фон не должен быть прозрачным.

Check if profile is for a client. I've read the third party guidelines Эту галочку не ставим.

Форма регистрации WhatsApp отправителя в Twilio

Для отправки нажмем кнопку Submit Request, которая станет активной после после заполнения обязательных полей формы.

В списке отправителей появится запись со статусом Waiting for Approval from WhatsApp, означающая что теперь нужно подождать подтверждения со стороны WhatsApp.

Статус WhatsApp отправителя Waiting for Approval from WhatsApp в Twilio

И получаем письмо от Twilio, что они рассматривают наш запрос, и свяжутся с нами в ближайшее время.

Письмо от Twilio после отправки формы регистрации WhatsApp отправителя

Ждем ответа от Twilio.

7. Подтверждение компании в Facebook Business Manager


Примерно через полтора часа получаем от Twilio еще одно письмо, что в Facebook Business Manager необходимо принять запрос от Twilio, чтобы предоставить им разрешение на создание учетной записи WhatsApp Business. Для этого переходим по ссылке business.facebook.com/settings/requests/received_requests (Facebook Business Manager -> Настройки компании -> Запросы -> Полученные) и нажать кнопку Одобрить.

Принятие запроса от Twilio в Facebook Business Manager

После принятия запроса от Twilio, необходимо подтвердить компанию в Facebook Business Manager. Для этого переходим по ссылке business.facebook.com/settings/security (Facebook Business Manager -> Настройки компании -> Центр безопасности) и в разделе Подтверждение компании нажимаем кнопку Начать подтверждение, которая станет активной после принятия запроса от Twilio.

Начать подтверждение компании в Facebook Business Manager

С официальной информацией от Facebook о подтверждении компании можно ознакомиться по ссылке: www.facebook.com/business/help/2058515294227817?id=180505742745347.

На первом шаге подтверждения введем данные нашей компании:

Юридическое название компании название компании, как в указано в документах на регистрацию компании.

Страна страна регистрации компании.

Адрес (улица, дома) улица и номер дома юридического адреса компании, как в указано в документах на регистрацию компании.

Адрес 2/Населенный пункт вводим, если имеется.

Город город юридического адреса компании, как в указано в документах на регистрацию компании.

Штат/провинция/регион регион юридического адреса компании, как в указано в документах на регистрацию компании.

Почтовый индекс почтовый индекс юридического адреса компании, как в указано в документах на регистрацию компании.

Номер телефона компании номер телефона, который принадлежит данному юридическому лицу (должны быть подтверждающие документы: договор, счета на оплату за телефон и т.п.).

Сайт адрес веб-сайта компании (домен сайта должен совпадать с доменом электронного адреса компании).

Подтверждение компании в Facebook Business Manager. Шаг 1 - ввод данных компании.

На втором шаге подтверждения компании необходимо подтвердить юридическое название компании.

Для этого нужно загрузить документы из списка:

  • Лицензия на ведение коммерческой деятельности (если имеется);
  • Свидетельства о регистрации или учредительные договоры (ОГРН или учредительный договор);
  • Свидетельство о регистрации налогоплательщика (ИНН).

Я загрузил сканы ОГРН и ИНН компании.

Подтверждение компании в Facebook Business Manager. Шаг 2 - подтверждение юридического названия компании.

На третьем шаге подтверждения компании необходимо подтвердить юридический адрес и номер телефона компании.

Для этого нужно загрузить документы из списка:

  • Счет за коммунальные услуги, например электроэнергию или телефон;
  • Справка из банка, на которой указан адрес;
  • Лицензия на ведение коммерческой деятельности с адресом или телефоном компании (если имеется).

Я загрузил сканы: договора на аренду офисного помещения по юридическому адресу, информационного письма об учете в Статрегистре Росстата, счета на оплату за телефонный номер от оператора связи.

Подтверждение компании в Facebook Business Manager. Шаг 3 - подтверждение юридического адреса и номера телефона компании.

На четвертом шаге необходимо получить и ввести код подтверждения.

Для этого нужно в разделе Выберите, как с вами связаться выбрать телефон и нажать кнопку Позвоните мне. Поле Мой рабочий электронный адрес оставляем пустым. Позвонит робот и продиктует цифры, которые нужно ввести в поле ввода кода подтверждения.

Вводим цифры кода подтверждения и нажимаем кнопку Отправить.

Ждем подтверждения от Facebook, как нам пишут в письме Twilio, это может занять 4-7 рабочих дней.

Мы получили подтверждение компании от Facebook в течении 1-го рабочего дня.

Письмо от Facebook с уведомлением, что компания успешно подтверждена.

Сообщение в Facebook Business Manager, что компания успешно подтверждена.

Зеленая иконка в Центре безопасности в Facebook Business Manager, что компания подтверждена.

Зеленая галочка в Информации о компании в Facebook Business Manager, что компания подтверждена.

Ждем завершения регистрации WhatsApp отправителя от Twilio.

8. Завершение регистрации WhatsApp отправителя в Twilio


Через 4 часа получаем письмо от Twilio, что они проверили наш бизнес-профиль в WhatsApp и отправили на рассмотрение отображаемое название нашей компании. Срок выполнения проверки отображаемого имени обычно составляет 2448 часов.

Письмо от Twilio, что они проверили наш бизнес-профиль в WhatsApp.

Переводим сообщение на русский:

Перевод на русский письма от Twilio, что они проверили наш бизнес-профиль в WhatsApp.

Ждем ответа от Twilio 24-48 часов, как указано в письме.

Примерно через 30 часов получаем письмо от Twilio, что наш профиль отправителя WhatsApp с выбранным номером телефона успешно зарегистрирован.

Письмо от Twilio, что профиль отправителя WhatsApp с выбранным номером телефона успешно зарегистрирован.

Переводим сообщение на русский:

Перевод на русский письма от Twilio, что профиль отправителя WhatsApp с выбранным номером телефона успешно зарегистрирован.

Заходим в аккаунт Twilio, в раздел WhatsApp Senders по ссылке www.twilio.com/console/sms/whatsapp/senders и видим, что у записи сменился статус на Approved (Одобрено).

WhatsApp отправитель одобрен в Twilio и готов к работе.

Итог


На этом подключение официального бизнес API WhatsApp через Twilio успешно завершено. По времени, со всеми ожиданиями, у меня это заняло примерно один месяц. Теперь его можно использовать для интеграции с различными сервисами для коммуникации с пользователями и для создания чат-ботов.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru