- PVSM.RU - https://www.pvsm.ru -
Некоторое время назад я рассказывал [1] про свой проект Не звони! [2], где при добавлении своего номера телефона в реестр необходимо подтвердить, что это твой номер.
Стандартные методы подтверждения — SMS или звонком довольно неплохи, но небесплатны. У используемого нами SMS.ru, например, одна SMS стоит 1,5 рубля («SMS за 25 копеек», что сказано у них на главной — это ложь, такого тарифа нет).
Какие бесплатные способы подтверждения номера есть? Мне в голову пришли следующие:
Последний вариант показался интересным. Как это работает? Бот просит пользователя выбрать сайт для авторизации, а затем запрашивает номер телефона пользователя. Если пользователь свой номер телефона сообщает, то бот подтверждает номер телефона на выбранном сайте.
В Telegram Bot API можно запросить [4] у пользователя его номер телефона:
>>> contact_keyboard = telegram.KeyboardButton(text="send_contact", request_contact=True)
>>> custom_keyboard = [[ contact_keyboard ]]
>>> reply_markup = telegram.ReplyKeyboardMarkup(custom_keyboard)
>>> bot.send_Message(chat_id=chat_id,
... text="Would you mind sharing your contact with me?",
... reply_markup=reply_markup)
Если пользователь соглашается отдать боту свой номер телефона, то бот получает следующее:
{
"update_id": 912872664,
"message": {
"message_id": 57,
"from": {
"id": 777777,
"first_name": "Ne Dimon",
"last_name": "On vam",
"username": "onvamnedimon"
},
"chat": {
"id": 777777,
"first_name": "Ne Dimon",
"last_name": "On vam",
"username": "onvamnedimon",
"type": "private"
},
"date": 1492274787,
"contact": {
"phone_number": "79160000001",
"first_name": "Ne Dimon",
"last_name": "On vam",
"user_id": 777777
}
}
}
Может ли пользователь прислать не свой номер телефона? Может. Пользователь вместо ответа «Да» боту может выслать любой другой контакт из своей телефонной книжки. Но при этом contact/user_id
в этом случае не будут равны from/id
, и бот узнает, что ему прислали чужой контакт.
Меня интересовал вопрос — можно ли используя модифицированный клиент Telegram отправить чужой номер телефона со своим id. @BotSupport Telegram утверждает, что это сделать нельзя (возможно, есть проверка на сервере). Но я им (особенно русскоязычной поддержке) не особо доверяю, потому предлагаю задачу — подтвердить номер (916) 000-00-01
на нашем сайте (проверил, по данному номеру «абонент не доступен», думаю, такого номера не существует). Для этого необходимо перейти по ссылке бота [5] и на запрос номера отправить ему номер (916) 000-00-01
с вашим id.
Постоянной программы Bug Bounty у Telegram, как я понимаю, не существует, потому тот, кто справится, ничего особо не получит. Хотя, можно будет какую-нибудь информацию о ком-нибудь получить, например, в боте банка Тинькофф ;).
Автор: and7ey
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/bot/255908
Ссылки в тексте:
[1] рассказывал: https://geektimes.ru/post/288380/
[2] Не звони!: http://ne-zvoni.ru
[3] SMS Gateway: https://play.google.com/store/apps/details?id=eu.apksoft.android.smsgateway&hl=en
[4] запросить: https://core.telegram.org/bots/api#keyboardbutton
[5] ссылке бота: https://t.me/VerifyMeBot?start=ne-zvoni
[6] Источник: https://habrahabr.ru/post/328600/
Нажмите здесь для печати.