BotHub
Разработчик ботов
Добрый вечер друзья. Есть такой проект Private Notes с помощью которого можно создавать одноразовые записки, которые удаляются после их прочтения. На днях скинули мне ссылку на один проект, я немного переписал код, облагородил и хочу поделиться с вами, с помощью этого скрипта, можно отправлять сообщения на сервер Private Notes и получать в ответ готовые ссылки с паролем. Можно указать время после которого записка будет самоуничтожена. По умолчания записка удаляется после прочтения, с помощью скрипта можно указать до 720 часов.
Работать с классом так.
Данный скрипт удобно использовать для передачи логов покупателям, для раздачи на форуме или в чате, после прочтения записка будет удалена и только 1 человек сможет ее прочитать. Данные на сервере сервиса хранятся в зашифрованном виде, алгоритм очень стойкий, один из самых лучших, его реализация так же есть в данном скрипте. Он повторяет в полной мере тот что находится у них на сервере, API для работы с сервисом нет.
Все вопросы оставляйте в данной теме. Хорошего вечера.
Код:
<?php
class PrivateNotes {
private function password($number) {
$code = '';
$arr = [
'a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','r','s','t','u','v','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','R','S','T','U','V','X','Y','Z',
'1','2','3','4','5','6','7','8','9','0'
];
for($i = 0; $i < $number; $i++) {
$key = random_int(0, count($arr) - 1);
$code .= $arr[$key];
}
return $code;
}
private function encrypt($message, $password) {
$salt = openssl_random_pseudo_bytes(8);
$key = $dx = openssl_digest($password.$salt, 'MD5', true);
$dx = openssl_digest($dx.$password.$salt, 'MD5', true);
$key .= $dx;
$iv = openssl_digest($dx.$password.$salt, 'MD5', true);
return base64_encode('Salted__'.$salt.openssl_encrypt($message, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv));
}
private function curl($data) {
$header = [
'Host: privnote.com',
'User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
'Accept: */*',
'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip, deflate, br',
'Referer: https://privnote.com',
'Content-type: application/x-www-form-urlencoded',
'X-Requested-With: XMLHttpRequest',
'DNT: 1',
'Connection: keep-alive'
];
$ch = curl_init('https://privnote.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
public function createNote($message, $time = 0) {
$password = $this->password(9);
$encryptData = $this->encrypt($message, $password);
$data = [
'data' => $encryptData,
'has_manual_pass' => false,
'duration_hours' => $time,
'dont_ask' => false,
'data_type' => 'T',
'notify_email' => '',
'notify_ref' => ''
];
$result = $this->curl($data, $time);
return $result['note_link'].'#'.$password;
}
}
?>
Работать с классом так.
Код:
<?php
require_once('PrivateNotes.class.php');
$privateNotes = new PrivateNotes;
$message = 'Текст сообщения.';
echo $privateNotes->createNote($message); // Записка самоуничтожится после прочтения
// Или так
echo $privateNotes->createNote($message, 24); // Записка самоуничтожится через 24 часа, указывать не более 720
?>
Данный скрипт удобно использовать для передачи логов покупателям, для раздачи на форуме или в чате, после прочтения записка будет удалена и только 1 человек сможет ее прочитать. Данные на сервере сервиса хранятся в зашифрованном виде, алгоритм очень стойкий, один из самых лучших, его реализация так же есть в данном скрипте. Он повторяет в полной мере тот что находится у них на сервере, API для работы с сервисом нет.
Все вопросы оставляйте в данной теме. Хорошего вечера.
Вложения
Последнее редактирование: