gpt4 book ai didi

php - 获取 cURL 以遵循重定向

转载 作者:可可西里 更新时间:2023-11-01 00:30:48 24 4
gpt4 key购买 nike

我在 Laravel 中有一个应用程序可以抓取网站并检索特定信息。最近我看到越来越多的网站被 403 forbiidden,所以我决定第一次尝试 cURL。

我现在遇到的唯一问题是,具有 301 或 302 重定向的网站,cURL 不遵循它们。

这是我的:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $results['url_search']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl,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');

$str = curl_exec($curl);

$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$body = substr($str, $header_size);

curl_close($curl);

所以正如我所说,在有重定向的页面上,我被卡住了。有什么建议么?我见过一些东西,但没有一个起作用。

最佳答案

curl 有一个选项可以实现您正在寻找的东西,以下重定向:

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

只需在执行之前将此行添加到您的 curl-options。

如您所料,这将遵循任何 301/302 重定向并最终到达一个站点,该站点不会进一步重定向您的请求。

另外,请记住(没有解决方法)这可能会导致无限循环。 (网站 a 重定向到 b,b 重定向到 a)。

也就是说,您也应该使用此选项:

curl_setopt($curl, CURLOPT_MAXREDIRS, 10);

这样,您的请求将在 10 次重定向后结束,您不必为脚本在无限循环中运行而烦恼。

关于您进一步使用不同选项的良好资源是 php.net 上的相关站点

关于php - 获取 cURL 以遵循重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com