遵循50次重定向后卷曲失败,但是wget工作正常

时间:2013-12-16 23:01:12

标签: php redirect curl web-crawler wget

我有一个实验性的网络抓取工具,我注意到它无法读取某些网页,例如在某些特定网域上,curl表示在执行了50次重定向后失败了,但wget读取同一个网域就好了:

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

结果:

curl: (47) Maximum (50) redirects followed

output.txt文件中没有数据。

虽然此命令正常工作:

wget netflix.com

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

2 个答案:

答案 0 :(得分:7)

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

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

默认情况下,wget的重定向限制为20,所以由于curl的重定向更高,肯定会发生其他事情。

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

您可以使用--verbose选项跟踪这些重定向的内容,并将它们与wget的默认输出进行比较。

默认情况下,Cookie会在wget上启用,而不是curl启用,正如@DanielStenberg提醒的那样,希望他能够回答并接受。

答案 1 :(得分:6)

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

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