11/08/2018, 20:49

Vượt qua password file để download tại tenlua.vn

Disclaimer: Mình đã thông báo bug này cho support tenlua.vn 2 lần, và họ đã fix bằng cách upgrade 1 bản api ver 2, tuy nhiên api ver 1 vẫn hoạt động song song trên server và vì thế ta lại nghịch ngợm Cách đây hơn 1 năm, mình có viết tool get link hàng loạt từ mediafire, tenlua.vn. Hỗ trợ ...

Disclaimer: Mình đã thông báo bug này cho support tenlua.vn 2 lần, và họ đã fix bằng cách upgrade 1 bản api ver 2, tuy nhiên api ver 1 vẫn hoạt động song song trên server và vì thế ta lại nghịch ngợm :smile:

Cách đây hơn 1 năm, mình có viết tool get link hàng loạt từ mediafire, tenlua.vn. Hỗ trợ cả folder lẫn link lẻ tẻ tại đây Direct Downloader
Tình cờ hôm đó mình bắt request để lấy link tải từ tenlua.vn và nảy ra ý tưởng nghịch thử xem với file có password thì nó sẽ ra sao, không ngờ là tenlua.vn chơi quá lầy :smile:. Chuỗi json họ trả về có thông báo là file có pass và yêu cầu đăng nhập

["reqlink"]=>
string(27) "http://www.tenlua.vn/#login"

Nhưng nó vẫn đi kèm 1 direct link để tải file, từ đó mình bắt đầu khai thác.

Ngay cả bây giờ, bạn cũng có thể bắt lấy link download tại tenlua.vn một cách dễ dàng nếu bắt request và đọc code javascript của họ thì cũng ra thôi. Tuy nhiên nó là API ver 2, nên không còn bypass password được nữa. Vì thế mình sẽ cung cấp luôn request demo API ver 1.

URL

http://api.tenlua.vn/

POST DATA:

[{"a":"filemanager_builddownload_getinfo","n":"ID_FILE","r":0.376080396333181}]

Với ID_FILE được lấy từ link file như sau:

https://www.tenlua.vn/download/1337ef2ae20d6d001c/themeforest-11452732-maxshop-responsive-wordpress-woocommerce-theme

=> ID: 1337ef2ae20d6d001c
Bạn giả lập lại request trên là có thể lấy được direct link download rồi :smile:

Ở đây mình tiếp tục dùng PHP cho lẹ :smile: thừa hưởng những gì mà mình đã làm từ năm ngoái luôn.

Đầu tiên là viết cái class để cURL đến nó

class tenlua
{
    function json_parse($data)
    {
        return json_decode($data,true);
    }
    function get($url,$post = false, $cookie = false)
    {
        $ch = curl_init();
        if($post)
        {
            curl_setopt($ch, CURLOPT_POST ,1);
            curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
        }
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $result = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        return $result;
    }
}

Xong, tiếp theo là nhận link từ GET Request và tách lấy ID.

$linkfile = explode("/",$_GET['link']);
$id = $linkfile[count($linkfile) - 2];

Các bạn đọc chắc hiểu cách mà mình lấy ID file nhỉ :smile: chắc không cần giải thích thêm đâu.
Sau đó là việc giả lập request đến, và lấy link download.

$py = new tenlua();
$link = "http://api.tenlua.vn/";
$post = '[{"a":"filemanager_builddownload_getinfo","n":"'.$id.'","r":0.376080396333181}]';
$page = $py->get($link,$post);
$array = $py->json_parse($page);
if($array[0]['type'] == "none")
{
    die("Link Die");
}
echo $array[0]['url'];

Và đây là full code

<?php
$linkfile = explode("/",$_GET['link']);
$id = $linkfile[count($linkfile) - 2];
$py = new tenlua();
$link = "http://api.tenlua.vn/";
$post = '[{"a":"filemanager_builddownload_getinfo","n":"'.$id.'","r":0.376080396333181}]';
$page = $py->get($link,$post);
$array = $py->json_parse($page);
if($array[0]['type'] == "none")
{
    die("Link Die");
}
echo $array[0]['url'];
class tenlua
{
    function json_parse($data)
    {
        return json_decode($data,true);
    }
    function get($url,$post = false, $cookie = false)
    {
        $ch = curl_init();
        if($post)
        {
            curl_setopt($ch, CURLOPT_POST ,1);
            curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
        }
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $result = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        return $result;
    }
}

Code bên trên chỉ là code đơn giản nhất thôi, bạn có thể tùy biến thêm chức năng và giao diện nếu cần thiết. Hoặc cũng có thể viết lại bằng javascript rồi tạo bookmark hay extension chrome / firefox cũng được :smile:

Bonus thêm cách get link file in folder:

    $link = "http://api.tenlua.vn/";
    $post = '[{"a":"filemanager_builddownload_getinfo","n":"'.$id.'","r":0.376080396333181}]';
    $page = $py->get($link,$post);
    $array = $py->json_parse($page);
    $array = $array[0]['content'];
    foreach ($array as $key) {
        echo $key['link'];
    }
0