Curl 在执行 50 次重定向后失败,但 wget 工作正常

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

我有一个基于 PHP 的实验性网络爬虫,我注意到它无法读取某些页面,例如在某些特定域上,curl 说它在执行 50 次重定向后失败,但 wget 可以很好地读取同一域:

curl 'netflix.com' -L -o 'output.txt'

结果:

curl: (47) Maximum (50) redirects followed

output.txt 文件中没有数据。

虽然这个命令工作正常:

wget netflix.com

关于什么可能导致这种情况有什么想法吗?我怀疑远程服务器是否根据两个不同的用户代理处理请求。

php redirect curl web-crawler wget
2个回答
11
投票

这可能是因为你没有告诉curl使用cookie,除非你要求它,否则它不会这样做——而wget默认启用它们。

使用 --cookie--cookie-jar 选项启用 cookie。


10
投票

--max-redirs N
是用于限制重定向次数的选项。如前所述,默认值为 50。

您看到的“47”是达到重定向限制的错误代码。

默认情况下,

wget
的重定向限制为20,因此肯定会发生其他情况,因为curl的重定向更高。

在我的系统上运行相同的命令工作正常,并且只有大约 3 - 5 个重定向。

您可以使用

--verbose
选项来跟踪这些重定向是什么,并可能将它们与
wget
的默认输出进行比较。

Cookies 默认在

wget
上启用,而不是在
curl
上启用,正如 @DanielStenberg 提醒的那样,希望他能回答并被接受。

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