[PHP] Получение видео из Tik Tok без водяного знака
    
    
        
    
    
    
    
            
    
        
            
                
                                    
                
                                    
                
                    
                
            
        
    
    
        
            
                
                
                    
                           
                    
                        Автор 
                        Сообщение 
                    
                                        
                        
                            
                                
                                
                                                                                                            news_bot ®
                                                                        
                                                                                                                                                
                                                                            
                                                                                                                
                                            Стаж: 7 лет 8 месяцев                                        
                                                                                                                
                                            Сообщений: 27286                                        
                                                                                                                                                
                                                             
                            
                                
                             
                         
                        
                            
                                
                                    
                                        
                                        
 Добрый день, всем любителям habr. В этой статье я хочу поделиться с Вами как можно получить видео с Tik Tok без водяного знака, с помощью такого языка как PHP.
В настоящее время Tik Tok набирает популярность и было бы не прилично не написать про него маленькую статейку, и так, меньше слов, больше дела.
Создадим класс под названием TikTok, он будет содержать три метода и одно свойство.
Методы:
- cUrl (curl запрос)
 
- redirectUrl (получить ссылку после redirect)
 
- getUrl (получить ссылку на видео)
Свойства:
- public $url;
Создадим конструктор для передачи url адреса.
public function __construct (string $url) {
    $this->url = $url;
}
Метод cUrl. Отправляем запрос на сервер и получаем ответ.
private function cUrl (string $url) :? string {
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
                   like  Gecko) Chrome/79.0.3945.130 Safari/537.36';
    $curl            = curl_init($url);
    curl_setopt_array($curl, [
      CURLOPT_URL            => $url,
      CURLOPT_RETURNTRANSFER => TRUE,
      CURLOPT_FOLLOWLOCATION => TRUE,
      CURLOPT_USERAGENT      => $user_agent,
      CURLOPT_CONNECTTIMEOUT => 5,
      CURLOPT_TIMEOUT        => 10,
    ]);
    $response = curl_exec($curl);
    if ($response === FALSE) {
  curl_close($curl);
  return NULL;
    }
    $httpCode = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);
    if ($httpCode !== 200)
       return NULL;
    return $response;
}
Метод redirectUrl
private function redirectUrl (string $url) :? string {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $headers = get_headers($url, 1);
    return $headers['Location'] ?? NULL;
}
Метод getUrl.
public function getUrl () :? string {
    // Получаем код страницы.
    $responseHtml = $this->cUrl($this->url);
    // Находим ссылку на видео.
    if (!preg_match('/contentUrl\":\"(.*?)\",\"embedUrl/ui', $responseHtml, $mInterUrl))
  throw new \Exception('Ссылка не найдена!');
    // Отправляем запрос и в ответе получаем видео в виде bytecode
    if (!$respByteVideo = $this->cUrl($mInterUrl[1]))
        throw new \Exception('Запрос не обработался!');
    // Чтобы регулярное выражение начало искать, нужно перевести в формат utf-8.
    $strByteVideo = mb_convert_encoding($respByteVideo, 'UTF-8', 'auto');
    // Ищем специальный id видео, чтобы на его основе построить запрос.
    if (!preg_match('/vid:(.*?)%/sui', $strByteVideo, $mVideoId))
  throw new \Exception('id video не было найдено!');
    // Уберём лишние символы.
    $url = str_replace("\0", '', $mVideoId[1]);
    // Строим ссылку для получения видео без водяного знака.
    $url = "https://api.tiktokv.com/aweme/v1/playwm/?video_id=$url";
    // Так как эта redirect на другую ссылку к видео, то пытаемся получить конечную ссылку после redirect
    return $this->redirectUrl($url);
}
Создадим объект на основе класса, передадим в него ссылку.
$TikTok = new TikTok('https://www.tiktok.com/@sonyakisa8/video/6828487583694163205?lang=ru');
echo $TikTok->getUrl();
Все готово.
Примеры:
Весь код целиком
class TikTok {
  /**
  * @var string
  */
  public $url;
  public function __construct (string $url) {
    $this->url = $url;
  }
  /**
  * @return null|string
  * @throws Exception
  */
  public function getUrl () :? string {
    // Получаем код страницы
    $responseHtml = $this->cUrl($this->url);
    // Находим ссылку на видео
    if (!preg_match('/contentUrl\":\"(.*?)\",\"embedUrl/ui', $responseHtml, $mInterUrl))
      throw new \Exception('Ссылка не найдена!');
    // Отправляем запрос и в ответе получаем видео ввиде bytecode
    if (!$respByteVideo = $this->cUrl($mInterUrl[1]))
      throw new \Exception('Запрос не обработался!');
    // Чтобы регулярное выражение начало искать, нужно перевести в формат utf-8
    $strByteVideo = mb_convert_encoding($respByteVideo, 'UTF-8', 'auto');
    // Ищем специальный id видео, чтобы на его основе построить запрос
    if (!preg_match('/vid:(.*?)%/sui', $strByteVideo, $mVideoId))
      throw new \Exception('id video не было найдено!');
    // Уберём лишние символы
    $url = str_replace("\0", '', $mVideoId[1]);
    // Строим ссылку на получения видео без водяного знака
    $url = "https://api.tiktokv.com/aweme/v1/playwm/?video_id=$url";
    // Так как эта redirect на другую ссылку к видео, то пытаемся получить ее после redirect
    return $this->redirectUrl($url);
  }
  /**
  * Получение url адреса после redirect
  *
  * @param string $url
  * @return null|string
  */
  private function redirectUrl (string $url) :? string {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $headers = get_headers($url, 1);
    return $headers['Location'] ?? NULL;
  }
  /**
  * @param string $url
  * @return null|string
  */
  private function cUrl (string $url) :? string {
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36';
    $curl       = curl_init($url);
    curl_setopt_array($curl, [
      CURLOPT_URL            => $url,
      CURLOPT_RETURNTRANSFER => TRUE,
      CURLOPT_FOLLOWLOCATION => TRUE,
      CURLOPT_USERAGENT      => $user_agent,
      CURLOPT_CONNECTTIMEOUT => 5,
      CURLOPT_TIMEOUT        => 10,
    ]);
    $response = curl_exec($curl);
    if ($response === FALSE) {
      curl_close($curl);
      return NULL;
    }
    $httpCode = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE);
    curl_close($curl);
    if ($httpCode !== 200)
      return NULL;
    return $response;
  }
}
===========
 Источник:
habr.com
===========
Похожие новости:
- [PHP, ООП, Совершенный код] Вы уверены, что пишете объектно-ориентированный код? (перевод)
 
- [PHP] Как я писал кодогенератор на PHP и что из этого получилось
 
- [JavaScript, PHP, Ненормальное программирование, Программирование, Разработка веб-сайтов] Inertia.js – современный монолит
 
- [Node.JS, PHP, Perl, Python, Информационная безопасность] Трюки с переменными среды (перевод)
 
- [PHP, Алгоритмы, Информационная безопасность, Криптография] Разработка собственного алгоритма симметричного шифрования на Php
 
- [PHP] Мне не нравится то, во что превращается PHP
 
- [CRM-системы, ERP-системы, Open source, PHP, Развитие стартапа] Totum — open source конструктор CRM/ERP и произвольных учетных систем (PHP + PgSQL)
 
- [PHP] POST запрос, составное содержимое (multipart/form-data)
 
- [PHP, API, CRM-системы, Облачные сервисы] API для бесплатной CRM
 
- [Визуализация данных, Высокая производительность, Laravel, Open source, PHP] Профилирование. Отслеживаем состояние боевого окружения с помощью Redis, ClickHouse и Grafana
Теги для поиска: #_php, #_php, #_tiktok, #_watermark, #_php 
                         
                        
                            
                                                                    
                                                             
                         
                    
                    
                
                
            
        
    
    
    
    
    
            
    
            
    
        
    
    
        
                        Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
    
    
        
        Текущее время: 31-Окт 20:20
Часовой пояс: UTC + 5 
            
    
                
| Автор | Сообщение | 
|---|---|
| news_bot ® 
                                                                            
                                                                                                                
                                            Стаж: 7 лет 8 месяцев                                         | |
| Добрый день, всем любителям habr. В этой статье я хочу поделиться с Вами как можно получить видео с Tik Tok без водяного знака, с помощью такого языка как PHP. В настоящее время Tik Tok набирает популярность и было бы не прилично не написать про него маленькую статейку, и так, меньше слов, больше дела. Создадим класс под названием TikTok, он будет содержать три метода и одно свойство. Методы: 
 Свойства: 
 Создадим конструктор для передачи url адреса. public function __construct (string $url) { $this->url = $url; } Метод cUrl. Отправляем запрос на сервер и получаем ответ. private function cUrl (string $url) :? string { $user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'; $curl = curl_init($url); curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_USERAGENT => $user_agent, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 10, ]); $response = curl_exec($curl); if ($response === FALSE) { curl_close($curl); return NULL; } $httpCode = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($httpCode !== 200) return NULL; return $response; } Метод redirectUrl private function redirectUrl (string $url) :? string { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $headers = get_headers($url, 1); return $headers['Location'] ?? NULL; } Метод getUrl. public function getUrl () :? string { // Получаем код страницы. $responseHtml = $this->cUrl($this->url); // Находим ссылку на видео. if (!preg_match('/contentUrl\":\"(.*?)\",\"embedUrl/ui', $responseHtml, $mInterUrl)) throw new \Exception('Ссылка не найдена!'); // Отправляем запрос и в ответе получаем видео в виде bytecode if (!$respByteVideo = $this->cUrl($mInterUrl[1])) throw new \Exception('Запрос не обработался!'); // Чтобы регулярное выражение начало искать, нужно перевести в формат utf-8. $strByteVideo = mb_convert_encoding($respByteVideo, 'UTF-8', 'auto'); // Ищем специальный id видео, чтобы на его основе построить запрос. if (!preg_match('/vid:(.*?)%/sui', $strByteVideo, $mVideoId)) throw new \Exception('id video не было найдено!'); // Уберём лишние символы. $url = str_replace("\0", '', $mVideoId[1]); // Строим ссылку для получения видео без водяного знака. $url = "https://api.tiktokv.com/aweme/v1/playwm/?video_id=$url"; // Так как эта redirect на другую ссылку к видео, то пытаемся получить конечную ссылку после redirect return $this->redirectUrl($url); } Создадим объект на основе класса, передадим в него ссылку. $TikTok = new TikTok('https://www.tiktok.com/@sonyakisa8/video/6828487583694163205?lang=ru'); echo $TikTok->getUrl(); Все готово. Примеры: Весь код целиком class TikTok { /** * @var string */ public $url; public function __construct (string $url) { $this->url = $url; } /** * @return null|string * @throws Exception */ public function getUrl () :? string { // Получаем код страницы $responseHtml = $this->cUrl($this->url); // Находим ссылку на видео if (!preg_match('/contentUrl\":\"(.*?)\",\"embedUrl/ui', $responseHtml, $mInterUrl)) throw new \Exception('Ссылка не найдена!'); // Отправляем запрос и в ответе получаем видео ввиде bytecode if (!$respByteVideo = $this->cUrl($mInterUrl[1])) throw new \Exception('Запрос не обработался!'); // Чтобы регулярное выражение начало искать, нужно перевести в формат utf-8 $strByteVideo = mb_convert_encoding($respByteVideo, 'UTF-8', 'auto'); // Ищем специальный id видео, чтобы на его основе построить запрос if (!preg_match('/vid:(.*?)%/sui', $strByteVideo, $mVideoId)) throw new \Exception('id video не было найдено!'); // Уберём лишние символы $url = str_replace("\0", '', $mVideoId[1]); // Строим ссылку на получения видео без водяного знака $url = "https://api.tiktokv.com/aweme/v1/playwm/?video_id=$url"; // Так как эта redirect на другую ссылку к видео, то пытаемся получить ее после redirect return $this->redirectUrl($url); } /** * Получение url адреса после redirect * * @param string $url * @return null|string */ private function redirectUrl (string $url) :? string { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $headers = get_headers($url, 1); return $headers['Location'] ?? NULL; } /** * @param string $url * @return null|string */ private function cUrl (string $url) :? string { $user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'; $curl = curl_init($url); curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_USERAGENT => $user_agent, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 10, ]); $response = curl_exec($curl); if ($response === FALSE) { curl_close($curl); return NULL; } $httpCode = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($httpCode !== 200) return NULL; return $response; } } =========== Источник: habr.com =========== Похожие новости: 
 | |
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
    Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 31-Окт 20:20
Часовой пояс: UTC + 5 
