Xin giúp đỡ PHP cURL login và download/play file?

Chào các bác,
Em đang tập làm về curl php và gặp 1 vấn đề như sau:
Em tập get link để play và download từ 1 trang phim.
Để xem được phim hoặc tải phim thì phải đăng nhập trước.

Em curl php để login ok, chuyển đến trang 1 phim bất kỳ, echo lên vẫn ok (vẫn có thông tin đã đăng nhập ấy ạ).

Nhưng khi muốn play video đó hoặc download thì không được. Vd link direct của video là phim.com/video1.mp4
Thì khi truy cập vào nó lại ra phim.com/demo_video1.mp4, nó trả về link xem thử của video đó, không cho xem full ấy ạ. Em play link video full nó bằng jwplayer cũng chỉ ra video demo.

Giờ em muốn play video hoặc tải video đó trên trình duyệt, tất nhiên là dùng curl thì phải thêm mắm thêm muối gì ạ. Bạn em nói sơ sơ phải dùng cache gì đó mà em có tìm hiểu cache để lưu html thì ok nhưng chưa hiểu là cache file video phải làm sao??

Mong mn giải đáp giúp vấn đề của em.

Bạn làm về trang gì? Nếu bạn không muốn public code thì gửi code bằng cách up lên Fshare rồi inbox cho mình còn nếu không vấn đề gì thì public lên Github cho mọi người cùng fix.

1 Like

à emhiểu vấn đề rồi, khi em đăng nhập xong và truy cập đến link file

phim.com/video1.mp4

thì nó tự động redirect đến 1 url khác

phim.com/video1.mp4?expires=1555431929&token=4j3493he93k02&download=1

đoạn mã trong expirestoken ko có trong sourcecode trang đó, emđã thử tìm nhưng ko có.

Vậy là sao để lấy đc 2 đoạn mã đó bác nhỉ?

Dùng Regular Expression tách nó ra thôi, còn expires thì mình không rõ, do thưòng thì mình bỏ luôn.

1 Like

tức là khi truy cập đến file phim.com/video1.mp4 sẽ redirect đến link có thêm exp và token kia.
chứ ko phải có trong trang html đó luôn
vậy em phải curl ntn để lấy đc đoạn đó ạ. em curl đến mà hình như nó down cả file video đó về, load mãi ko xong

CURLOPT_FOLLOWLOCATION xem.

1 Like
function get($url)
{
    $process = curl_init($url);
    curl_setopt($process, CURLOPT_HTTPHEADER, $this->headers);
    curl_setopt($process, CURLOPT_HEADER, 1);
    curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);
    if ($this->cookies == TRUE)
        curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);
    if ($this->cookies == TRUE)
        curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);
    curl_setopt($process, CURLOPT_ENCODING, $this->compression);
    curl_setopt($process, CURLOPT_TIMEOUT, 0);
    if ($this->proxy)
        curl_setopt($process, CURLOPT_PROXY, $this->proxy);
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
    $return = curl_exec($process);
    curl_close($process);
    return $return;

}

bác xem giúp em với, vẫn bị trả về nội dung file, em chỉ muốn lấy url đc redirect cuối cùng

Cho mình xem response header mà server trả về nào.

1 Like

Cảm ơn bác em làm đc rồi

    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 0);
    $return = curl_exec($process);
    return curl_getinfo($process, CURLINFO_REDIRECT_URL);
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?