我有一个实验性的网络抓取工具,我注意到它无法读取某些网页,例如在某些特定网域上,curl表示在执行了50次重定向后失败了,但wget读取同一个网域就好了:
curl 'netflix.com' -L -o 'output.txt'
结果:
curl: (47) Maximum (50) redirects followed
output.txt文件中没有数据。
虽然此命令正常工作:
wget netflix.com
关于什么可能导致这种情况的任何想法?我怀疑远程服务器是否根据两个不同的用户代理处理请求。
答案 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。