我有一个实验性的网络爬虫,我注意到它无法读取某些页面,例如在某些特定域上,curl 说它在遵循 50 次重定向后失败,但 wget 可以很好地读取相同的域:
curl 'netflix.com' -L -o 'output.txt'
结果:
curl: (47) Maximum (50) redirects followed
输出.txt文件中没有数据。
虽然此命令工作正常:
wget netflix.com
关于什么会导致这种情况的任何想法?我怀疑远程服务器是否根据两个不同的用户代理处理请求。
这可能是因为你没有告诉curl使用cookie,除非你要求它这样做,否则它不会这样做 - 而wget默认启用它们。
使用 --cookie 或 --cookie-jar 选项启用 Cookie。
--max-redirs N
是用于限制重定向数量的选项。 如前所述,默认值为 50。
您看到的"47"是达到重定向限制的错误代码。
默认情况下,wget
的重定向限制为 20,因此肯定还有其他事情发生,因为 curl 的重定向更高。
在我的系统上运行相同的命令工作正常,只有大约 3 - 5 个重定向。
您可以使用--verbose
选项来跟踪这些重定向是什么,并可能将它们与wget
的默认输出进行比较。
默认情况下,Cookie 在 wget
上启用,而不是在 curl
上启用,正如@DanielStenberg所提醒的那样,所以希望他能回答并被接受。