PHP curl:无法获取网站内容 - Cookie问题?

时间:2012-05-11 10:09:29

标签: php cookies curl

我试图获取此网站的内容:http://www.gratka.pl/,但我只收到此信息:

  

*关于connect()到gratka.pl端口80
  *尝试195.8.99.42 ... *连接
  *连接到gratka.pl(195.8.99.42)端口80
  GET / HTTP / 1.1
  User-Agent:Mozilla / 5.0(Windows; U; Windows NT 5.1; pl; rv:1.9.1.2)Gecko / 20090729 Firefox / 3.5.2
  主持人:gratka.pl
  接受:* / *

     

< HTTP / 1.1 302找到了   <缓存控制:无缓存
  <内容长度:0
  <地点:..   *连接#0主机gratka.pl保持完整左侧   *向此网址发出另一个请求:' http://blad.gratka.pl/403.html'
  *即将连接()到blad.gratka.pl端口80
  *尝试195.8.99.1 ... *连接
  *连接到blad.gratka.pl(195.8.99.1)端口80
  GET /403.html HTTP / 1.1
  User-Agent:Mozilla / 5.0(Windows; U; Windows NT 5.1; pl; rv:1.9.1.2)Gecko / 20090729 Firefox / 3.5.2
  主持人:blad.gratka.pl
  接受:* / *
  ...
  < HTTP / 1.1 302找到了   <缓存控制:无缓存
  <内容长度:0
  <地点:http://blad.gratka.pl/403.html
  *连接#1主机blad.gratka.pl完好无损左右   *最多(20)次重定向后   *关闭连接#0
  *关闭连接#1

我用来抓取内容的脚本是什么意思不起作用:

    $ch = curl_init();
    $timeout = 15;
    $cookie_file_path = 'c.txt';
    $fp = fopen($cookie_file_path, "w");
    fclose($fp);
    $url = 'http://gratka.pl';
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2');
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
    $info = curl_exec($ch);
    curl_close($ch);

执行脚本后,cookie文件(c.txt)为空。怎么了?也许网站需要有效的cookie或者正确的HTTP标头问题?任何帮助将不胜感激!

编辑:当我在我的本地主机上执行上述脚本时,它正在工作,但在专用服务器上执行时却无法正常工作。有什么猜测吗?

2 个答案:

答案 0 :(得分:0)

你的守则是正确的。只需将此行添加到curl section

即可
$curl = curl_init();
    curl_setopt($curl, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") );

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
return $data;

答案 1 :(得分:0)

我遇到了同样的问题,我在另一台服务器上尝试了我的代码,但它确实有效。我猜我的第一台服务器被禁止了。 :)

我猜gratka指向http://blad.gratka.pl/403.html时,他们不想要你。