Curl 在遵循 50 次重定向后失败,但 wget 工作正常 [已关闭]

Curl fails after following 50 redirects but wget works fine [closed]

提问人:adrianTNT 提问时间:12/17/2013 最后编辑:adrianTNT 更新时间:10/7/2023 访问量:14067

问:


这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。

上个月关闭。

社区上个月审查了是否重新讨论这个问题,并将其关闭:

原始关闭原因未解决

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

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

结果:

curl: (47) Maximum (50) redirects followed

输出 .txt 文件中没有数据。

虽然此命令工作正常:

wget netflix.com

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

php 重定向 curl web-crawler wget

评论

0赞 Donovan 12/17/2013
听起来像是卷曲的限制(可能是设计使然)
2赞 Daniel Stenberg 12/17/2013
我猜是因为 wget 默认启用 cookie,但您没有告诉 curl 使用 cookie......
0赞 adrianTNT 12/17/2013
@DanielStenberg就是这样,如果你能把它添加为答案,我会选择它。谢谢。
1赞 vgoff 12/17/2013
猜@DanielStenberg很好。我更新了我的答案,希望你能回答并获得学分。

答:

10赞 vgoff 12/17/2013 #1

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

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

默认情况下,重定向限制为 20,因此肯定还有其他事情发生,因为 curl 的重定向更高。wget

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

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

Cookie 默认启用,而不是 ,正如 @DanielStenberg 提醒的那样,所以希望他能回答并被接受。wgetcurl

评论

0赞 adrianTNT 12/17/2013
谢谢,我后来确实尝试了 --verbose,我看到一个名为“Entry Trap”的有趣网址,signup.netflix.com/entrytrap 这是一个 cookie 问题,一旦我告诉 Curl 使用 cookie,它就可以正常工作。
0赞 adrianTNT 12/17/2013
丹尼尔·斯滕伯格(DanielStenberg)的猜测非常准确,如果他不将其添加为答案,我会选择您的答案。--verbose 确实有帮助。谢谢。
11赞 Daniel Stenberg 12/17/2013 #2

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

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