为什么“www.”URL前缀会影响cURL是否可以抓取网页内容?

问题描述 投票:0回答:4

这是我的设置:

$url1 = "www.gyngen.dk";
$url2 = "gyngen.dk";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);  
$result = curl_exec($curl);
curl_close($curl);

使用

$url1
将产生空字符串,而
$url2
将按预期工作。但是,为什么我的 stackoverflow 同胞们,在涉及“www.”时,cURL 如此微妙,而在我的浏览器(firefox)中使用 URL 时(根据我的经验)并不重要。

提前致谢!

php curl
4个回答
3
投票

cURL 不遵循重定向,转到

www.gyngen.dk
会使用重定向将您重定向到
gyngen.dk
。由于没有重定向,cURL 会收到空的网页内容。


2
投票

http://www.gyngen.dk
重定向至
http://gyngen.dk

您的浏览器会透明地遵循重定向。

PHP/cURL,根据您的设置,不会。 这个问题解释了如何改变它


0
投票

www。和裸域是两个独立的域。 Web 浏览器有时会尝试为不太了解的人掩盖这种差异,如果在其中一个地址找不到页面,它有时会尝试另一个地址。实际上,这些域显然是它们自己的,并且curl 并没有尝试隐藏这一点。


0
投票

网站/网页在 www 域中可用,因此当我们使用时

curl https://<domain> or curl <domain>

我们收到带有 Location 标头的 301 响应,可以使用以下命令进行检查

curl -X HEAD -I  google.com

因此,为了获得 HTML 页面响应,我们要么使用 www,要么我们可以要求curl 根据位置标头进行重定向,例如

curl -L <domain>

附注浏览器会自动为我们完成此操作。

© www.soinside.com 2019 - 2024. All rights reserved.