2014-10-02 138 views
0

我想通過瀏覽器AJAX請求來監測scorespro/cricket的板球得分。分析谷歌瀏覽器的網絡流量,我可以看到我的瀏覽器製作形式的請求:用隨機字符串追加AJAX請求追加到URL

http://www.scorespro.com/cricket/ajax.php?g_sort=league&date=2014-10-02&mut=1412265716&sut=0&(some_random_number)

當我點擊谷歌瀏覽器的響應,我可以看到已經接收到的數據。但是,當我嘗試自己請求請求URL時,未收到任何數據。爲什麼會發生這種情況(是否與隨機字符串有關)以及如何解決它?

+0

你能否提供一個有效的URL示例? – Andy 2014-10-02 16:17:53

+0

http://www.scorespro.com/cricket/ajax.php?g_sort=league&date=2014-10-02&mut=1412266581&sut=0&0.004229517187923193 – rwolst 2014-10-02 16:18:24

+0

'url:livescoresPath +「/ajax.php?g_sort=」+ g_sort + 「&date =」+ temp_page_date +「&mut =」+ match_ut +「&sut =」+ score_ut +「&」+ Math.random(),'末尾的值意味着它只是一個緩存破壞者。 – epascarello 2014-10-02 16:26:29

回答

0

這是從JavaScript的要求做到這一點?您是否考慮通過在您控制的服務器上調用腳本來抽象請求?

例如您的服務器上,你可以有一個PHP腳本調用,例如,「grabber.php」

<?php 
$r = '0.' . rand(1000000000000000, 9000000000000000); 

$url = 'http://www.scorespro.com/cricket/ajax.php?g_sort=league&date=2014-10-03&mut=1412328280&sut=0&' . $r; 
$useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:32.0) Gecko/20100101 Firefox/32.0'; 
$referer = 'http://www.scorespro.com/cricket/'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_REFERER, $referer); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookie.txt'); 
$response = curl_exec($ch); 

curl_close($ch); 

$data = array('payload' => $response); 

echo json_encode($data); 

exit(); 

?> 

然後,您可以通過一個簡單的Ajax請求調用頁面:

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 

<script type="text/javascript"> 
$.ajax({ 
    url: 'http://yourserver.com/grabber.php', 
    dataType: 'json', 
    type: 'GET', 
    success: function(data, textStatus, jqXHR){ 
     if (data['payload']){ 
      alert(data['payload']); 
     } else { 
      alert ('oops'); 
     } 
    } 
}); 

當然,如果你採用這種方法,你必須決定如何獲得你需要從板球網站向抓取腳本請求的URL(即從JavaScript傳遞它們,或者直接從PHP腳本中獲取它們,具體取決於你的要求)