2015-06-27 258 views
1

我儘量湊這個網站的數據: http://ntthnue.edu.vn/tracuudiem刮網站使用javascript使用捲曲

首先,當我插入SBD字段數據「TS4740」,我能順利拿到結果。然而,當我嘗試運行這段代碼:

這是我的PHP代碼捲曲:

<?php 

function getData($id) { 
    $url = 'http://ntthnue.edu.vn/tracuudiem'; 
    $ch = curl_init($url); 

    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, ['sbd' => $id]); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $result = curl_exec($ch); 

    curl_close($ch); 

    return $result; 
} 

echo getData('TS4740'); 

我剛剛得到了舊的網頁。有人可以解釋爲什麼嗎?謝謝!

回答

3

確保您添加了所有必需的標題和輸入數據。正在處理此請求的服務器可以執行各種檢查以查看它是否爲「有效」的表單請求。因此,您需要欺騙請求以儘可能接近常規瀏覽器請求。

使用類似的Chrome工具Chrome Dev Tools可以查看在服務器和瀏覽器之間發送的請求和響應標頭,以更好地理解您的捲曲設置應該是什麼樣的。並進一步使用像郵差的應用程序,使請求模擬超級簡單,並看看有效和不。

工作例如:

<?php 

function getData($id) { 
    $url = 'http://ntthnue.edu.vn/tracuudiem'; 
    $ch = curl_init($url); 
    $postdata = 'namhoc=2015-2016&kythi_name=Tuy%E1%BB%83n+sinh+v%C3%A0o+l%E1%BB%9Bp+10&hoten=&sbd='.$id.'&btnSearch=T%C3%ACm+ki%E1%BA%BFm'; 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
     'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
     'Origin: http://ntthnue.edu.vn', 
     'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36', 
     'Content-Type: application/x-www-form-urlencoded', 
     'Referer: http://ntthnue.edu.vn/tracuudiem', 
    )); 

    $result = curl_exec($ch); 

    curl_close($ch); 

    return $result; 
} 

echo getData('TS4740'); 
+0

它不工作。我認爲這個問題是關於javascript – pexea12

+0

我有一個'郵差'測試工作。我已經更新了我的答案。確保你通過表單中的所有輸入。 – user2479930

+0

添加了一個工作示例 – user2479930