Bài này sẽ giải thích cách các site download Facebook video hoạt động để giúp người dùng tải Video từ Facebook nhiều chất lượng .


  1. Giời thiệu 
  2. Xem Source
  3. Tìm Link
  4. Xử lý bằng PHP để lấy Link
  5. Hiển thị thông tin Link và các thông tin liên quan

Giới thiệu

Chắc hẳn các bạn đều có nhiều cách tải Video từ Facebook như dùng Extentions , trình duyệt Cốc Cốc hoặc các trang hỗ trợ Download Video từ Facebook kiểu :

Khi tìm kiếm từ khóa “download facebook video” trên Google

Vậy làm sao để các trang này có thể giúp bạn lấy Link Video từ Facebook và giúp ta download được ? Rất đơn giản . 

Đầu tiên , đa số các site này đều yêu cầu bạn paste đường link của video vào để xử lý . 

Tiếp theo , các trang này sẽ trả về kết quả là thông tin của video kèm những nút Download để bạn Click vào để tải về . 

Vậy chỉ với một Link này , họ làm thế nào để xử lý được , hãy xem nhé .


Lưu ý : Cách này chỉ giống một phần , không giống hoàn toàn nhé 🤣

Xem Source 

Về link source của Video Public từ Facebook , bạn có thể Copy một link của Video nào đó , sau đó nhấn Ctrl + U để xem link source của video như này :

Hoặc dùng : view-source:[Link Video]

Tìm Link

Mình sẽ dùng một Video của : https://www.facebook.com/VSBGPage/videos/350010588918260/ 😎

(view-source:https://www.facebook.com/VSBGPage/videos/350010588918260/)

Sau đó , dùng Ctrl + F và tìm : hd_src hoặc sd_src

Bạn sẽ thấy được link như sau :

Link của video sẽ nằm trong 2 ông nội này 👍

Bạn cũng có thể thử trên cách video public khác , tất cả đều có 2 loại như trên này , bước tiếp theo của chúng ta là tách 2 link này ra khỏi đống bùi nhùi này bằng PHP đơn cmn giản 😀

Dùng PHP để lấy link

Vì cả 2 đều có tên duy nhất và đều nằm trong JSON nên value sẽ có chứa 2 dấu ” ở trước và sau .

Link video nằm trong object của JSON như vầy

OK , bây giờ chúng ta sẽ tiến hành dùng PHP để lấy

Nhưng trước hết chúng ta cần lấy tất cả nội dung của URL này trước đã :

$url = ""; // Link
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_ENCODING => "",
CURLOPT_USERAGENT => "httzip.com",
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
curl_close($ch);

Đoan cURL này sẽ lấy tất cả nột dung của URL (Get Page Content).

Tiếp đến , sau khi đã có page content thì chúng ta tìm 2 string là hd_src sd_src trong Content vừa lấy được bằng hàm preg_match_all

Đối với hd_src

preg_match_all('/hd_src:"([^"]*)"/', $content, $hd);

Đối với sd_src

preg_match_all('/hd_src:"([^"]*)"/', $content, $sd);

Về ‘/hd_src:”([^”]*)”/’
thì các bạn có thể tham khảo với từ khóa ” php regex string between double quotes

Như thế là đã lấy được 2 loại link HD và SD rồi đấy , và bước cuối cùng chỉ có việc hiển thị ra thôi , ở đây mình sẽ gộp lại một function như sau :

<?php
function get_web_page($url) {
    $options = array(
        CURLOPT_RETURNTRANSFER => true,   
        CURLOPT_HEADER         => false, 
        CURLOPT_FOLLOWLOCATION => true,   
        CURLOPT_MAXREDIRS      => 10,    
        CURLOPT_ENCODING       => "",     
        CURLOPT_USERAGENT      => "httzip.com", 
        CURLOPT_AUTOREFERER    => true,   
        CURLOPT_CONNECTTIMEOUT => 120,    
        CURLOPT_TIMEOUT        => 120,    
    ); 
    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    curl_close($ch);
    $result = preg_match_all('/hd_src:"([^"]*)"/', $content, $hd);
    $result_sd = preg_match_all('/hd_src:"([^"]*)"/', $content, $sd);
    if(!empty($hd[1][0])){
    	return json_encode(["hd"=>$hd[1][0],"sd" => $sd[1][0]]);
    }else{
    return json_encode(["sd" => $sd[1][0]]);
    }
}
echo ( get_web_page("LINK FACEBOOK VIDEO"));
?>

Và đây là kết quả khi mình dùng link ở trên đầu bài  :

Kết quả khi chạy code

Việc còn lại của các bạn là chỉnh lại sao cho phù hợp với  mục đích sử dụng thôi nhé . 

À tiện thể nếu bạn cần lấy Ảnh Thumbnail và Mô tả của Video luôn thì thêm 2 đoạn này vào phía dưới $result_sd

    $result_img = preg_match_all('/<meta property="og:image" content="([^"]*)"/', $content, $image);
    $result_desc = preg_match_all('/<meta property="og:description" content="([^"]*)"/', $content, $description);

Và ở đoạn if() thay bằng đoạn bên dưới  :

if(!empty($hd[1][0])){
    	return json_encode(["hd"=>$hd[1][0],"sd" => $sd[1][0],"image"=>$image[1][0],"desc"=>$description[1][0]]);
    }else{
    return json_encode(["sd" => $sd[1][0],"image"=>$image[1][0],"desc"=>$description[1][0]]);
    }

Nếu bạn cần gộp code lại một lần nữa thì đây : 

<?php 
/* Share on httzip.com
*/

function get_web_page($url) {
	$options = array(
		CURLOPT_RETURNTRANSFER => true,   
		CURLOPT_HEADER         => false, 
		CURLOPT_FOLLOWLOCATION => true,   
		CURLOPT_MAXREDIRS      => 10,    
		CURLOPT_ENCODING       => "",     
		CURLOPT_USERAGENT      => "httzip.com", 
		CURLOPT_AUTOREFERER    => true,   
		CURLOPT_CONNECTTIMEOUT => 120,    
		CURLOPT_TIMEOUT        => 120,    
	); 
	$ch = curl_init($url);
	curl_setopt_array($ch, $options);
	$content = curl_exec($ch);
	curl_close($ch);
	$result = preg_match_all('/hd_src:"([^"]*)"/', $content, $hd);
	$result_sd = preg_match_all('/hd_src:"([^"]*)"/', $content, $sd);
	$result_img = preg_match_all('/<meta property="og:image" content="([^"]*)"/', $content, $image);
	$result_desc = preg_match_all('/<meta property="og:description" content="([^"]*)"/', $content, $description);
	if(!empty($hd[1][0])){
		return json_encode(["hd"=>$hd[1][0],"sd" => $sd[1][0],"image"=>$image[1][0],"desc"=>$description[1][0]]);
	}else{
		return json_encode(["sd" => $sd[1][0],"image"=>$image[1][0],"desc"=>$description[1][0]]);
	}
}
echo ( get_web_page("https://www.facebook.com/VSBGPage/videos/350010588918260/"));  // Change your facebook video url

?>

Chúc các bạn thành công !