Làm thế nào để curl được web này

Chào mọi người, hiện tại em đăng muốn curl web này để làm cái nạp thẻ cho bạn bè, nó ko có api nên mình f12 để bắt request rồi sử dụng curl để xử lí.

Em có thử thì thấy sau khi đăng nhập nó sẽ GET 1 url dạng https://napthe.vn/app?access_token=TOKEN , khi truy cập link này vào tab ẩn danh thì nó sẽ tự động đăng nhập luôn. Nên em code curl để get cái link kia rồi lấy cookie để xử lý việc nạp thẻ sau đó, nhưng khi curl link đó nó redirect sang trang 404 của web đó (truy cập trực tiếp bằng trình duyệt thì vào bình thường), chắc là web này nó thiết kế cái gì đó để chặn curl, em thử curl get url trang chủ web luôn thì cũng bị redirect sang 404. Có cách nào để xử lí được trường hợp này ko ạ. Em cảm ơn.!

Web là : https://napthe.vn

echo get('https://napthe.vn', 'cookie.txt');
function get($url, $cookie)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    print_r(curl_error($ch));
    print_r(curl_getinfo($ch));
    return curl_exec($ch);
}

response khi curl: (có thể vào 1 link bất kì 404 dạng https://napthe.vn/anythinghereheheh/xxx )

khi vào trực tiếp bằng chrome thì ok ạ hiii

Với chrome bạn làm như hình image

4 Likes

mình đã thử để copy cmd curl rồi convert sang php nhưng vẫn bị redirect 404 :((

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://napthe.vn/app?access_token=TOKEN');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Connection: keep-alive';
$headers[] = 'Sec-Ch-Ua: \"Chromium\";v=\"88\", \"Google Chrome\";v=\"88\", \";Not A Brand\";v=\"99\"';
$headers[] = 'Sec-Ch-Ua-Mobile: ?0';
$headers[] = 'Upgrade-Insecure-Requests: 1';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
$headers[] = 'Sec-Fetch-Site: none';
$headers[] = 'Sec-Fetch-Mode: navigate';
$headers[] = 'Sec-Fetch-User: ?1';
$headers[] = 'Sec-Fetch-Dest: document';
$headers[] = 'Accept-Language: vi';
$headers[] = 'Cookie: source=pc; _ga=GA1.2.802571931.1613318968; _gid=GA1.2.110397557.1613318968; _gat_gtag_UA_137597827_3=1; session_key=l2qcwwwqrajqbcqztymii4g0n4bzzvn4';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
echo $result;

Đơn giản lắm.
Bạn làm như hình, copy cái đó qua cmd, chạy thử xem đc không.
Nếu đc tức là curl chạy bình thường, mà curl bình thường thì tương đương với php của bạn có vấn đề.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?