Curl提供与普通浏览器不同的响应

时间:2014-01-29 10:57:37

标签: php curl

我正在尝试使用curl从网页获取响应。但是在使用curl和正常浏览时我会得到不同的响应。

PHP文件

$ch = curl_init();
echo "trying<br>";
//$url = "home.iitk.ac.in/~gopi/student_search/feedback.php";
$roll_no = "11101";
$name="";
$program="all";
$department="all";
$email="";
$gender="both";
$city="";
$course="";
$order="id";
$hostel="";
$bg='';
$tile = '0';
$offset = 0;
$url = "http://search.junta.iitk.ac.in/get2.php?&tile=0&roll_no=".$roll_no."&name=".$name."
                        &program=".$program."&dept=".$department."&login=".$email."&gender=".$gender."
                        &city=".$city."&course=".$course."&hostel=".$hostel."&bg=".$bg."&offset=".$offset;
                        echo $url;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
$ret_val = curl_error($ch);
echo $result;
echo $ret_val;
curl_close($ch);

这导致我在这个页面,

enter image description here

但是当我直接转到同一个网址时,它会给我44个结果。

enter image description here

以及更多结果。

如何使用curl获得相同的结果?

修改

(不起作用。)

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://search.junta.iitk.ac.in');
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');

$result = curl_exec($ch);

1 个答案:

答案 0 :(得分:6)

看起来目标服务器检查用户代理,如果它不是真正的浏览器,它会抛出一种方式(或通常表现不同)。

尝试指定用户代理 - http://curl.haxx.se/docs/manpage.html

例如:

  

curl -A“Mozilla / 5.0(iPhone; U; CPU iPhone OS 4_3_3,如Mac OS X; en-us)AppleWebKit / 533.17.9(KHTML,与Gecko一样)Version / 5.0.2 Mobile / 8J2 Safari / 6533.18 .5“http://www.apple.com

在PHP中:

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');