Mendapatkan video dari Tik Tok tanpa tanda air

Selamat siang untuk semua pecinta habr. Pada artikel ini, saya ingin berbagi dengan Anda bagaimana Anda bisa mendapatkan video Tik Tok tanpa tanda air menggunakan bahasa seperti PHP.



Saat ini, Tik Tok mendapatkan popularitas dan tidak pantas untuk tidak menulis artikel kecil tentangnya, dan karenanya, lebih sedikit kata, lebih banyak tindakan.



Mari buat kelas yang disebut TikTok, itu akan berisi tiga metode dan satu properti.



Metode:



  • cUrl (permintaan curl)
  • redirectUrl (dapatkan tautan setelah pengalihan)
  • getUrl (dapatkan tautan video)


Properti:



  • public $ url;


Mari buat konstruktor untuk meneruskan alamat url.



public function __construct (string $url) {
    $this->url = $url;
}


CUrl. Kami mengirim permintaan ke server dan menerima tanggapan.



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;
}


Metode 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);
}


Mari buat objek berdasarkan kelas dan berikan tautan ke sana.



$TikTok = new TikTok('https://www.tiktok.com/@sonyakisa8/video/6828487583694163205?lang=ru');
echo $TikTok->getUrl();


Semuanya sudah siap.



Contoh:





Seluruh kode



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;
	}
}



All Articles