0

我想使用 PHP 的 cURL 访问外部站点上的页面,并获取页面的整个 html 内容。

当我访问该站点时,它会将我重定向到同一站点上的另一个页面。另外,我必须设置用户代理,我想要一个用于 PC windows7 chrome 和 iPhone 4s 的用户代理。这是我到目前为止得到的:

$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_AUTOREFERER , true)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$kl = curl_exec ($ch);
curl_close($ch);
echo $kl;

注意:
我可能会遇到更多错误。

4

3 回答 3

6

您可能还需要考虑使用 https 的网址

$cookie = tmpfile();
$userAgent = 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31' ;

$ch = curl_init($url);

$options = array(
    CURLOPT_CONNECTTIMEOUT => 20 , 
    CURLOPT_USERAGENT => $userAgent,
    CURLOPT_AUTOREFERER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_COOKIEFILE => $cookie,
    CURLOPT_COOKIEJAR => $cookie ,
    CURLOPT_SSL_VERIFYPEER => 0 ,
    CURLOPT_SSL_VERIFYHOST => 0
);

curl_setopt_array($ch, $options);
$kl = curl_exec($ch);
curl_close($ch);
echo $kl;
于 2013-08-15T08:22:38.770 回答
4

所以:

  1. 在“网络”上搜索正确的 UserAgent 字符串。
  2. CURLOPT_FOLLOWLOCATION按照@TroyCheng 的指示启用
  3. 启用CURLOPT_COOKIEFILE& CURLOPT_COOKIEJAR
于 2013-08-12T20:15:13.840 回答
1

你为什么不使用像Buzz这样的库?

$request = new Buzz\Message\Request('GET', '/', 'http://google.com');
$response = new Buzz\Message\Response();

$client = new Buzz\Client\Curl();
// do not check https validity
$client->setVerifyPeer(false);
// define your user agent
$client->setOption('CURLOPT_USERAGENT', $userAgent);
$client->setOption('CURLOPT_COOKIEFILE', true);
$client->setOption('CURLOPT_COOKIEJAR', true);
$client->send($request, $response);

if ($response->isOk())
{
  echo $response->getContent();

  // or if you want the dom
  echo $response->toDomDocument();
}
于 2013-08-15T08:39:37.783 回答