WGET - 错误414:请求URI太大

时间:2017-07-10 12:57:45

标签: curl mamp wget

我使用wget来访问文本文件中的链接列表。链接示例如下:

http://localhost:8888/data/test.php?value=ABC123456789

PHP 文件返回一个表格,其中包含将响应附加到另一个文本文件的信息。至于错误,很明显目前它无法处理URL的数量,因为它超出了字符限制。如果我只使用2个网址,它的效果非常好。

文本文件共包含10 000个网址。我正在使用的命令是:

wget -i /Applications/MAMP/htdocs/data/URLs.txt -O - >> /Applications/MAMP/htdocs/data/append.txt

根据我的研究,快速找到修复"这是为了更改LimitRequestLine或添加它(如果它不存在)。由于我使用MAMP(对于MacOS),我所做的是:

打开/Applications/MAMP/conf/apache/httpd.conf

并在AccessFileName .htaccess

下插入
LimitRequestLine 1000000000
LimitRequestFieldSize 1000000000

但我仍然得到同样的错误。我不知道为什么会这样。

使用cURL可能更容易吗?如果是,那么类似的命令是什么?

1 个答案:

答案 0 :(得分:3)

您的414: Request-URI Too Large错误与网址数量无关,不,使用curl无法提供帮助。

问题是你的网址中有一些(或1?)对目标服务器来说太长了,导致错误。

您可以通过执行

来识别导致错误的网址
cat URLs.txt | awk '{print length, $0}' | sort -nr | head -1

(感谢该命令的https://stackoverflow.com/a/1655488/1067003

另一个可能的原因是你没有正确地终止URLs.txt中的网址,并且某些网址(或所有网址?)会被连接起来。对于记录,终止字符是" \ n",也就是十六进制代码0A - 而不是大多数Windows编辑使用的\ r \ n,我不确定wget如何处理这种格式错误的行终结者(根据其定义)

请注意,如果要下载.HTML文件(或任何其他可压缩文件),curl会比wget快得多,因为curl支持使用--compressed参数的压缩传输(利用gzip虽然wget根本不支持压缩,但是HTML压缩非常好(比使用gzip的未压缩版本容易小5-6倍)