PHP - 尝试使用curl获取谷歌图像html,但结果与浏览器中不同


PHP - trying to get google image html with curl but result is different than in browser

我正在学习正则表达式,php和cUrl,并希望获得Google Image html(例如:https://www.google.fr/search?q=terrorist&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch&q=love)我尝试了很多不同的答案,但我不明白为什么,令人惊讶的是,当我这样做时

<?php
function curl_get_contents($url)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($conn2, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($conn2, CURLOPT_SSL_VERIFYHOST, false);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
$get_page = curl_get_contents("https://www.google.fr/search?q=terrorist&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch&q=love");
echo $get_page;
   ?>

我得到的结果与浏览器中的结果非常不同。例如,所有图像链接都已失效。有谁知道为什么?我能做些什么来修复它?非常感谢!!

此请求中有 2 个搜索查询,如下所示

https://www.google.fr/search?q=terrorist&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch&q=love

尝试

https://www.google.fr/search?q=love&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch

它看起来像是在浏览器中返回第一个查询,然后运行第二个查询,但它不会通过 curl 执行第二个请求。

这对我有用:

<?php
function curl_get_contents($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $data = curl_exec($ch);
    var_dump(curl_error($ch));
    curl_close($ch);
    return $data;
}
$get_page = curl_get_contents("https://www.google.fr/search?q=love&biw=1920&bih=1008&source=lnms&tbm=isch&gws_rd=ssl#tbm=isch");
echo $get_page;
?>

编辑:经过进一步研究,这是一种不受支持的方式,您应该使用Google自定义搜索API。您这样做的方式将导致Google检测到滥用并向您显示验证码请求,甚至可能阻止您。