0
我想通过浏览器AJAX请求来监测scorespro/cricket的板球得分。分析谷歌浏览器的网络流量,我可以看到我的浏览器制作形式的请求:用随机字符串追加AJAX请求追加到URL
当我点击谷歌浏览器的响应,我可以看到已经接收到的数据。但是,当我尝试自己请求请求URL时,未收到任何数据。为什么会发生这种情况(是否与随机字符串有关)以及如何解决它?
我想通过浏览器AJAX请求来监测scorespro/cricket的板球得分。分析谷歌浏览器的网络流量,我可以看到我的浏览器制作形式的请求:用随机字符串追加AJAX请求追加到URL
当我点击谷歌浏览器的响应,我可以看到已经接收到的数据。但是,当我尝试自己请求请求URL时,未收到任何数据。为什么会发生这种情况(是否与随机字符串有关)以及如何解决它?
这是从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脚本中获取它们,具体取决于你的要求)
你能否提供一个有效的URL示例? – Andy 2014-10-02 16:17:53
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
'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