10/10/2018, 11:05

[PHP] View HTML source

Chào mọi người!

Mình tạo ra chủ đề này với mong muốn được cùng mọi người nghiên cứu sâu hơn về cách view HTML source của một website bất kỳ. Rất mong mọi người tham gia cùng mình và giải bài toán này.

Để view HTML source của một website bất kỳ, có 2 cách thông dụng:
  1. Sử dụng hàm file_get_contents:
    PHP Code:
    <?php
        
    echo file_get_contents('http://google.com');
    ?>
  2. Sử dụng CURL:
    PHP Code:
    <?php
        $ch 
    curl_init();
        
    curl_setopt ($chCURLOPT_URL'http://google.com');
        
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt ($chCURLOPT_CONNECTTIMEOUT30);
        echo 
    curl_exec($ch);
        
    curl_close($ch);
    ?>
    Với CURL, bạn phải điền chính xác đường dẫn cuối cùng của trang lấy HTML (CURL dừng xử lý khi đường dẫn redirect). Cụ thể, nếu máy tính của bạn đang dùng được xác định là ở VN thì đường dẫn lấy chính xác phải là http://www.google.com.vn chứ không thể là http://google.com.

Ở cả 2 cách trên, mọi người đều sẽ dễ dàng lấy được HTML source của Google. Tuy nhiên, hãy thử lấy HTML source của trang này nhé: http://prettytre.net.

Ok, vậy vấn đề đặt ra ở chủ đề này là: Làm sao có thể lấy HTML source của 1 website bất kỳ cho dù host đó đã được cấu hình chặn như http://prettytre.net?

Nào mọi người! Bắt đầu thảo luận nhé! ^^
VnVision viết 13:14 ngày 10/10/2018
Này thì chặn này

Code:
<?php
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, 'http://prettytre.net');
	curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');  
	curl_setopt ($ch, CURLOPT_HTTPHEADER, array (
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language: en-us,en;q=0.5", "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"
    ));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    echo curl_exec($ch);
    curl_close($ch);
tham khảo thêm: http://ddth.com/showthread.php?t=397657
ductinh2405 viết 13:19 ngày 10/10/2018
Chà chà, cách này nhanh gọn và lợi hại hơn cách mình đang làm rất nhiều lần! Tuyệt lắm! Thanks VnVision nhiều!

Bạn có thể giải thích giúp mình dòng này được không?
PHP Code:
curl_setopt ($chCURLOPT_HTTPHEADER, array (
        
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""Accept-Language: en-us,en;q=0.5""Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"
    
)); 
ngoc_viet08 viết 13:06 ngày 10/10/2018
oánh dấu học hỏi sau. hê hê hê
jiSh@n viết 13:19 ngày 10/10/2018
Được gửi bởi ductinh2405
Chà chà, cách này nhanh gọn và lợi hại hơn cách mình đang làm rất nhiều lần! Tuyệt lắm! Thanks VnVision nhiều!

Bạn có thể giải thích giúp mình dòng này được không?
PHP Code:
curl_setopt ($chCURLOPT_HTTPHEADER, array (
        
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""Accept-Language: en-us,en;q=0.5""Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"
    
)); 
Gửi HTTP Request Header như các browser vẫn thường gửi đến
thuyduongcd viết 13:06 ngày 10/10/2018
Nếu browser lấy được sao mình không thể
VnVision viết 13:09 ngày 10/10/2018
Cũng có nhiều trường hợp việc lấy data tự động đòi hỏi nhiều xử lý phức tạp hơn là fake các header của một browser. Vd: các bạn thử lấy danh sách các game cùng số liệu progress, trophy ở trang này xem: http://us.playstation.com/publictrop...name=robbo1337 (phần dữ liệu cần lấy là html source của một iframe được chèn trong link này).
minhnguyenquang7 viết 13:15 ngày 10/10/2018
Thanks .
vnpixel1 viết 13:08 ngày 10/10/2018
Nguyên tắc là các html đều đc server trả về khi có request lên.

Nếu các bác ko dùng PHP get đc thì dùng View Source của browser vậy
incon_9x viết 13:05 ngày 10/10/2018
các bác ơi cho e hỏi về thiết kế web bằng html với
Bài liên quan
0